我正在绘制非纹理三角形,其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,
此行为在设备和模拟器上是一致的。这可能有什么问题?
答案 0 :(得分:6)
您必须启用GL_BLEND
而不是GL_ALPHA
。 GL_ALPHA
常量具有完全不同的目的(作为颜色通道标识符)。因此,您的glEnable
电话实际上会导致GL_INVALID_ENUM
错误或类似错误。