我正在绘制非纹理三角形,其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,?
此行为在设备和模拟器上是一致的.这可能有什么问题?
你必须启用GL_BLEND而不是GL_ALPHA.该GL_ALPHA常数具有一个完全不同的目的(作为彩色信道标识符).所以你的glEnable电话实际上会导致GL_INVALID_ENUM错误或类似的事情.