透明纹理与OpenGL-ES 2.0

时间:2011-08-18 13:34:32

标签: iphone ios opengl-es opengl-es-2.0

我正在尝试在立方体顶部添加透明纹理。只有正面不透明。其他方面都是透明的。可能是什么问题呢?。任何帮助表示赞赏。

编辑:我发现首先绘制的面是不透明的。

绘制了立方体的3个面。

不透明的脸。((这个面部的索引在GLdrawElements中首先给出)) opaque http://s4.postimage.org/j1ye2wl5/opaque.png

透明的脸。 tranparent http://s4.postimage.org/6axg763o/Transparent.png

1 个答案:

答案 0 :(得分:2)

你很可能遇到了排序问题。要正确显示透明几何图形,必须从后向前对对象的面进行排序。

不幸的是,在opengl-es(或存在的任何gfx库)中没有内置支持。唯一的可能性是对多边形进行排序,每帧重新创建对象,并使用正确排序的面绘制它。

解决方法是使用加性透明度而不是普通透明度。附加透明度是与订单无关的计算。你必须记住在绘图时关闭z缓冲区写入,否则可能会遮挡某些几何体。

通过将blendfunc值设置为GL_ONE来实现添加透明度。