【发布时间】:2012-09-14 15:54:32
【问题描述】:
我正在尝试使用 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);
提前致谢。
【问题讨论】:
-
澄清一下,你的意思是translucency,还是透明度?
-
半透明 - 我知道如何使多边形不透明或透明;但我不知道如何让它正确地拥有 0.5 alpha。问题实际上来自于两个 0.5 alpha 多边形相互重叠而不会产生 1.0 alpha 交点。
-
透明并不意味着不可见,事物可以是部分透明的。半透明意味着半透明物体后面的光线模糊或扩散。半透明可能是 OpenGL 中难以实现的技术,而透明度(完全或部分)得到很好的支持。您描述的问题听起来像是透明度问题。
-
感谢蒂姆让我朝着正确的方向前进;经过一些研究后将更新此帖子
标签: objective-c ios opengl-es opengl-es-2.0 glkit