纹理要么无法渲染,要么呈现白色

时间:2019-05-12 11:22:53

标签: libgdx

我为游戏实现了基本的照明系统(从this回答),现在我的一些纹理无法渲染。这是我的主要渲染方法:

@Override
public void render(float delta) {

    update(delta);

    frameBuffer.begin();

    Gdx.gl.glClearColor(CLEAR, CLEAR, CLEAR, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.setProjectionMatrix(camera.combined);
    batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE);
    batch.begin();

    // render lights
    currentMap.lightsController.render(batch);

    batch.end();

    frameBuffer.end();

    batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
    batch.begin();

    // render map and its entities (including player)
    currentMap.render(camera, batch);

    batch.end();

    batch.setProjectionMatrix(batch.getProjectionMatrix().idt());
    batch.setBlendFunction(GL20.GL_ZERO, GL20.GL_SRC_COLOR);
    batch.begin();
    batch.draw(frameBuffer.getColorBufferTexture(), -1, 1, 2, -2);
    batch.end();

}

运行游戏时,将渲染灯光,并渲染currentMap对象中的TiledMap,但是我的其他实体(例如玩家和建筑物)却没有。 currentMap.render()方法是这样的:

tiledMapRenderer.setView(camera);
    tiledMapRenderer.render();

    for(Entity e : entities) {
        e.render(batch);
    }

    // render player LAST
    player.render(batch);

我猜想这与SpriteBatch设置不正确有关,因为播放器和实体使用该批处理并且不渲染,而TiledMap不使用它并进行渲染。

要弄清楚,我创建了一个基本的Sprite并通过在batch.draw(sprite, 0, 0);行之前调用currentMap.render()对其进行渲染,但这只是呈现为白色矩形。

这是什么原因造成的?

0 个答案:

没有答案