我在使用openGL ES时在iPhone上出现不正确的alpha混合结果问题。iPhone OpenGL ES不正确的alpha混合
这是我创建的纹理对象代码:
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加载。它加载,因为它应该,我检查了一个调试器。
这是我的渲染之前设置的纹理代码:
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);
我上传的,我所期待的一个样本,我已经来到这里:sample。在样本中,底部的大部分纹理都是黑色,70%的不透明度。然而,OpenGL呈现为灰色。这个问题会影响我使用的所有纹理。
我使用OGLES PVRVFrame测试了Windows上的代码,结果如预期:黑色呈现为黑色。