LibGDX OpenGL模型深度不适用于网格

时间:2015-12-22 03:02:14

标签: java opengl 3d libgdx shader

我目前正在使用libGDX进行3D游戏,我已经取得了相当多的进步,例如加载和显示3D模型以及摄像机控制的能力。我现在正在使用网格创建地形但遇到了问题。当我将模型和网格渲染在一起时,当所有模型都在地面前时它看起来很好,但是当地面在模型前面渲染时模型仍然呈现,我得到一个非常奇怪的结果:

Models in front of ground (top view) Ground in front of models (bottom view)

我知道它的深度有问题,但我不知道如何解决它。我的渲染代码如下。

@Override
public void render() {
    Gdx.gl20.glClearColor(0.2f, 0.2f, 0.9f, 1);
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
    Gdx.gl20.glEnable(GL20.GL_TEXTURE_2D);
    Gdx.gl20.glEnable(GL20.GL_BLEND);
    Gdx.gl20.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);

    camera.update();
    movementCam.update();

    texture.bind();
    shaderProgram.begin();
    shaderProgram.setUniformMatrix("u_projTrans", camera.combined);
    shaderProgram.setUniformi("u_texture", 0);
    mesh.render(shaderProgram, GL20.GL_TRIANGLES);
    shaderProgram.end();

    modelBatch.begin(camera);
    modelBatch.render(modelInstance, environment);      
    modelBatch.end();
}

我该怎么办?谢谢您的帮助。 :)

编辑: 感谢下面的帮助,我能够解决问题,我需要做的就是添加Gdx.gl20.glEnable(GL20.GL_DEPTH_TEST);它起作用了。 :d

0 个答案:

没有答案