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上でコードをテストしたところ、結果は期待通りでした。黒は黒としてレンダリングされました。