Ben*_*nnX 1 java android libgdx
我使用Libgdx渲染TileMap作为我游戏的背景.我稍后可能会渲染一些不同的图层.如果没有tilemap渲染和单个背景图片,它可以正常工作!当我使用TiledRender时,会发生一些奇怪的事情:

两个白色区域通常是触摸板和角色.
触摸板和角色渲染为:
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
sprite.draw(batch);
}
Run Code Online (Sandbox Code Playgroud)
我在我的TileMap中渲染的地图如下所示:
public class Map extends Actor {
private TiledMap map;
private OrthogonalTiledMapRenderer render;
public int[][] mapArray = new int[Config.X_SIZE][Config.Y_SIZE];
public Map(TiledMap map){
this.map = map;
this.render = new OrthogonalTiledMapRenderer(map,(((float)Config.VIRTUAL_VIEW_HEIGHT/Config.Y_SIZE)/(float)Config.TILE_SIZE));
this.toBack();
}
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
this.render.setView((OrthographicCamera) this.getStage().getCamera());
render.render();
}
}
Run Code Online (Sandbox Code Playgroud)
任何sugestions来修复SpriteBatch问题?
许多Libgdx呈现辅助对象假设它们"拥有"OpenGL运行时中的状态,因此如果您有两个同时对OpenGL进行更改,则输出会变得混乱.在你的情况下它OrthogonalTiledMapRenderer有自己的SpriteBatch,所以你有两个SpriteBatch(默默地)互相争斗.
尝试更改Map.render()方法以在渲染地图之前结束正在进行的SpriteBatch(然后重新启动它):
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
batch.end();
this.render.setView((OrthographicCamera) this.getStage().getCamera());
render.render();
batch.begin();
}
Run Code Online (Sandbox Code Playgroud)
如果这有帮助,您可能会考虑将您的磁贴地图设置SpriteBatch为与其余代码"共享" (因为这些是有点重的对象).这应该更有效率,应该消除结束/启动的需要SpriteBatch.
| 归档时间: |
|
| 查看次数: |
2878 次 |
| 最近记录: |