TiledMap 层导致许多额外的纹理绑定

TiledMap Layers causing many extra texture bindings

我正在使用 Tiled Map Editor 为我在 libgdx 中的游戏生成瓦片地图。我注意到在创建具有两个图块层的简单地图时会导致许多额外的纹理绑定。我正在使用 2 个打包的 tilesets 而不是使用单独的 png。

例如,这是具有 2 个图块层和 2 个图块集的地图。泥土来自 1 个 tileset,而岩石、树木和其他物体位于不同的 tileset。

这会导致 25 个纹理绑定。

但是,如果我删除带有岩石、树木等的层,只留下泥土,我会得到 1 个纹理绑定。

有没有更好的方法来实现这个?同样,我没有为图块使用单独的 png,它们被打包成 2 个图块集。解决方法是什么?将所有内容打包到 1 个 tileset 中?我有一些贴图导致 80 多个纹理绑定。

也没有真正做任何奇怪的事情来渲染地图:

class MapRenderer {

    private TiledMapRenderer tiledMapRenderer;

    public MapRenderer(TiledMap tiledMap, float tiledMapScale,  Camera camera) {

        tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap, tiledMapScale);
        tiledMapRenderer.setView((OrthographicCamera) camera);
    }

    public void update() {

        tiledMapRenderer.render();
    }
}

有点像是在渲染每个图块,一个图块一个图块。当减少纹理绑定的更好方法是按图块集渲染每个图块时。

创建分块地图时,为每个分块集中的分块创建单独的图层。这样你就可以为每个 tileset 只有 1 个额外的绑定。