2009-07-08 9 views
4

iPhone上のOpenGL ESでアルファブレンディングの結果が正しくないという問題があります。iPhone OpenGL ESの間違ったアルファブレンディング

これは、テクスチャオブジェクトを作成するための私のコードです:

glGenTextures(1, &tex_name); 
glBindTexture(GL_TEXTURE_2D, tex_name); 
glTextImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex_width, tex_height, GL_RGBA, GL_UNSIGNED_BYTE, tex_data); 

'tex_dataは' zlibのを詰めた生RGBA8888データからロードされます。それは私がデバッガでチェックしたはずのようにロードされます。

これは、レンダリングの前にテクスチャを設定するための私のコードです:sampleを:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

glBindTexture(GL_TEXTURE_2D, tex_name); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 

私は期待して私がここに持ってきたもののサンプルをアップロードしました。サンプルでは、​​底部のテクスチャの大部分が70%不透明度のピッチ・ブラックです。しかし、OpenGLはそれを灰色でレンダリングします。この問題は、私がブレンドするすべてのテクスチャに影響します。

OGLES PVRVFrameを使用してWindows上でコードをテストしたところ、結果は期待通りでした。黒は黒としてレンダリングされました。

答えて

4

問題が見つかりました。私はEAGLViewのCAEAGLLayerの不透明なプロパティをYESに設定するのを忘れてしまった。

0

これは役に立ちますか? glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)これは、両方をバックグラウンドとブレンドするのではなく、2つをブレンドするだけだと思います。

ご迷惑をおかけして申し訳ございません。

関連する問題