我正在尝试使用GLKit绘制半透明多边形,但是没有运气。因此,我想知道是否首先可以在GLKit中使用半透明多边形,因为我知道OpenGL的标准实现中不支持它。但可以使用自定义着色器进行模仿。但是由于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);

提前致谢。

最佳答案

您的问题令人困惑,但是听起来好像您有透明的对象在相互绘制?如果是这样,请使用

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

而不是你在那里。

并检查诸如深度测试或模版测试之类的事情(不太可能,但可能)是否不会阻止绘制……

关于objective-c - GLKit多边形半透明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12427978/

10-12 03:52