在Libgdx Spritebatch中使用OpenGL Z缓冲区

qlvxas9a  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(137)

我正在使用libgdx编写一个2D游戏引擎,其中必须使用带有OrthgraphicCamera的SpriteBatch来渲染多个sprite层。较高Z的层应该被渲染在具有较低Z的层的顶部。
目前,我必须按照z分量对层进行排序来实现这一点。有没有一种方法,使用opengl Z缓冲区,让它们无序地渲染,但仍然正确显示?

im9ewurl

im9ewurl1#

通过切换到DecalBatch而不是SpriteBatch来修复。下面是我在用DecalBatch绘图之前使用的GL命令,以启用深度测试:

Gdx.gl.apply {
            glClearColor(0f, 0f, 0f, 0f);
            glEnable(GL20.GL_DEPTH_TEST)
            glClear(GL20.GL_COLOR_BUFFER_BIT or GL20.GL_DEPTH_BUFFER_BIT)
            glClearDepthf(1f)
            glDepthFunc(GL20.GL_LESS)
        }

相关问题