-2
libgdx GitHubに、タイルマップを作成してそれを埋め込むコードが見つかりました。 〜50x50のタイルを描くようにカメラを拡大するまでは、すべてうまく動作します。この時点で、私は5fpsを得て、入力はほとんど応答していません。ここで変更したコードは次のとおりです。LibGDX:50x50のタイルを描くのが非常に遅い
public class Core extends ApplicationAdapter {
private AssetManager am;
private SpriteBatch batch;
private BitmapFont font;
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
private OrthographicCamera camera;
private OrthoCamController cameraController;
@Override
public void create() {
am = new AssetManager();
am.load("tiles.png", Texture.class);
am.finishLoading();
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
batch = new SpriteBatch();
batch.disableBlending();
camera = new OrthographicCamera();
camera.setToOrtho(false, (w/h) * 400, 400);
camera.update();
cameraController = new OrthoCamController(camera);
Gdx.input.setInputProcessor(cameraController);
font = new BitmapFont();
map = new TiledMap();
MapLayers layers = map.getLayers();
TiledMapTileLayer layer = new TiledMapTileLayer(200, 200, 8, 8);
TextureRegion[][] splitTiles = TextureRegion.split((Texture)am.get("tiles.png"), 8, 8);
for (int x = 0; x < 1000; x++) {
for (int y = 0; y < 1000; y++) {
int ty = 1;
int tx = 1;
Cell cell = new Cell();
cell.setTile(new StaticTiledMapTile(splitTiles[ty][tx]));
layer.setCell(x, y, cell);
}
layers.add(layer);
}
renderer = new OrthogonalTiledMapRenderer(map, batch);
}
@Override
public void render() {
Gdx.gl.glClearColor(100f/255f, 100f/255f, 250f/255f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
renderer.setView(camera);
renderer.render();
}
@Override
public void resize(int width, int height) {
}
@Override
public void dispose() {
am.dispose();
map.dispose();
}
}
私は真剣に私の質問があるのでLibgdxは、多くのタイルを処理できないことを疑う:どのように私は、私はあまりにも野心的であること、パフォーマンスを向上させる...かだのですか?
私が見つけることができる唯一の解決策はhereでしたが、使用された方法を削除したようです。
うわー外
layers.add(layer);
を載せていきたいと思います。どうもありがとうございます! – Daniel