当前位置:  开发笔记 > IOS > 正文

OpenGL ES透明度不起作用,而是只是与背景混合

如何解决《OpenGLES透明度不起作用,而是只是与背景混合》经验,为你挑选了1个好方法。



1> datenwolf..:

以下是我如何设置透明度的方法:

glEnable(GLenum(GL_DEPTH_TEST))
glEnable(GLenum(GL_POINT_SIZE));
glEnable(GLenum(GL_BLEND))
glBlendFunc(GLenum(GL_SRC_ALPHA), GLenum(GL_ONE_MINUS_SRC_ALPHA))
glEnable(GLenum(GL_POINT_SMOOTH))

这不是透明度的工作方式.OpenGL不是场景图,它只是按照您指定的顺序绘制几何图形.如果您绘制的第一件事是红色圆圈,它们将与背景混合.一旦绘制出红色圆圈"后面"的东西,由于深度测试,"隐藏"部分将被简单地丢弃.OpenGL(或任何其他基于深度测试的算法)无法自动对不同深度层进行排序并适当地混合它们.

您要做的是订单独立透明度,这仍然是如何有效解决问题的研究中的问题.

对于你想要达到的目标,你必须:

将几何体分类到远近,然后按顺序绘制

渲染时禁用深度测试

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有