为什么glBlendFunc()在我的OpenGL ES 2.0应用程序中没有做任何事情?

时间:2011-07-19 09:19:41

标签: ios opengl-es

我正在绘制非纹理三角形,其alpha在像素着色器中显式设置为0.5以进行测试。我的应用程序基于Xcode提供的Opengl ES预制件。我没有触及我的EAGLView类。

我打电话

glEnable(GL_ALPHA)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SC_ALPHA)
glDrawArrays(...)

我的clearColor是0,0,0,1,CAEAGLayer的格式是RGBA8。

我看到的结果是没有任何类型的混合发生,并且绘制的像素只是替换下面的内容。我还试图使用GL_ONE,GL_ONE。

我尝试将我的CAEAGLayer的opaque属性设置为false。结果似乎是,无论混合模式如何,绘制像素的颜色都基于alpha值与白色混合。所以gl_FragColor为1,0,0,1,结果为1,0,0,1,而1,0,0,0为1,1,1,

此行为在设备和模拟器上是一致的。这可能有什么问题?

1 个答案:

答案 0 :(得分:6)

您必须启用GL_BLEND而不是GL_ALPHAGL_ALPHA常量具有完全不同的目的(作为颜色通道标识符)。因此,您的glEnable电话实际上会导致GL_INVALID_ENUM错误或类似错误。