我在使用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上的代碼,結果如預期:黑色呈現爲黑色。