我试着用GLKit绘制半透明的多边形,但没有成功。因为我知道OpenGL的标准实现不支持半透明多边形,所以我想知道在GLKit中是否有可能首先拥有半透明多边形;但是可以使用自定义着色器来模拟。但是由于GLKit编译了它自己的着色器,我需要知道我是应该继续使用GLKit还是使用我自己的自定义着色器。我的代码如下:
// setup states
glEnable(GL_BLEND);
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
self.effect.texture2d0.enabled = GL_FALSE;
self.effect.colorMaterialEnabled = GL_TRUE;
self.effect.transform.modelviewMatrix = self.modelMatrix;
glEnableVertexAttribArray(GLKVertexAttribPosition);
glEnableVertexAttribArray(GLKVertexAttribColor);
[self.effect prepareToDraw];
// draw triangles
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(LineVertex), &_vertices[0].pos);
glVertexAttribPointer(GLKVertexAttribColor, 4, GL_FLOAT, GL_FALSE, sizeof(LineVertex), &_vertices[0].color);
glDrawArrays(GL_TRIANGLES, 0, _vertexCount);提前谢谢。
发布于 2012-09-16 09:58:46
你的问题令人困惑,但听起来像是有透明的对象相互画在一起,如果是这样的话,使用
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);而不是你在那里得到的。
并检查像深度测试或模板测试(不太可能,但有可能)这样的东西并没有阻止绘制……
发布于 2012-09-18 06:49:39
问题是,我在前面的某个地方使用了glEnable(GL_DEPTH_TEST),它在Alpha0.5处停止了两个多边形,创建了与Alpha1.0的交集。
https://stackoverflow.com/questions/12427978
复制相似问题