我正在尝试为小地图绘制一堆瓷砖(10,000个精灵)。单独绘制时它落后于android,所以我试图使用帧缓冲。出于某种原因,我无法通过缓冲区获取任何屏幕。我将展示相关代码。
buffer = new FrameBuffer(Pixmap.Format.RGBA8888, Main.VIRTUAL_WORLD_WIDTH, Main.VIRTUAL_WORLD_HEIGHT, false);
OrthographicCamera cam = new OrthographicCamera(Main.VIRTUAL_WORLD_WIDTH, Main.VIRTUAL_WORLD_HEIGHT);
buffer.begin();
batch.begin();
batch.setProjectionMatrix(cam.combined);
for(Tile[] tiles : world.level.getGrid()){
for(Tile tile : tiles){
tile.getSprite().draw(batch);
}
}
batch.end();
buffer.end();
tiles = new Sprite(buffer.getColorBufferTexture());
上面的代码在create方法中创建了framebuffer。
这会呈现
batch.setProjectionMatrix(camera.combined);
batch.begin();
tiles.draw(batch);
batch.end();
注意,tile sprite的位置是0,0。我尝试用这段代码改变所有孩子的东西,但是永远不能让它在屏幕上绘制。实际的瓷砖不是问题,它们都能正常工作。我的相机设置正确,我的视口也是如此。