我为游戏实现了基本的照明系统(从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()
对其进行渲染,但这只是呈现为白色矩形。
这是什么原因造成的?