我应该在创建一次时调用GL_BLEND吗?

时间:2016-06-17 16:43:50

标签: opengl libgdx

我想为图形对象启用透明度。我发现只将alpha设置为介于0和1之间的值是不够的,我必须在调用Gdx.gl.glEnable(GL20.GL_BLEND)之前调用shapeRenderer.begin()并在glDisable(GL20.GL_BLEND)之后调用shapeRenderer.end() }}。但是,我的问题是,我可以在create方法中调用此方法Gdx.gl.glEnable(GL20.GL_BLEND),而不是在渲染中,并为游戏运行时启用它吗?我曾尝试过禁用它,但我没有遇到任何错误或性能问题。那么什么是用例,什么时候我应该使用这个glDisable(GL20.GL_BLEND),还是有另一种方法在不调用GL函数的情况下将alpha设置为形状?

1 个答案:

答案 0 :(得分:1)

OpenGL中的混合不依赖于顺序。它对于非凸起的物体也不能很好地工作。因此,您通常不会在GPU上投掷对象并进行混合。

此外,启用混合会产生性能成本。移动硬件通常比桌面更多,但即使在桌面硬件上它也不完全免费。

因此,一般规则是首先渲染所有不透明曲面,然后从前到后对透明曲面进行排序,然后按顺序渲染透明曲面。此外,在进行混合渲染时,您需要关闭深度写入;仍需要深度测试,但写入会导致问题。