2016-12-20 7 views
-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でしたが、使用された方法を削除したようです。

答えて

1

はおそらく、私はそれを逃した信じることができない、for (int x = 0; x < 1000; x++)ループ

+0

うわー外layers.add(layer);を載せていきたいと思います。どうもありがとうございます! – Daniel

関連する問題