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

Bic*_*bic 2 opengl-es ios

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

我打电话

glEnable(GL_ALPHA)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SC_ALPHA)
glDrawArrays(...)
Run Code Online (Sandbox Code Playgroud)

我的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,?

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

Chr*_*ica 6

你必须启用GL_BLEND而不是GL_ALPHA.该GL_ALPHA常数具有一个完全不同的目的(作为彩色信道标识符).所以你的glEnable电话实际上会导致GL_INVALID_ENUM错误或类似的事情.