TextureAtlas - 它如何影响开放世界游戏中的 RAM 使用?

TextureAtlas - how does it affect on RAM usage in open world game?

我打算在我的开放世界 2d 游戏中使用 TextureAtlas。

我需要动态加载贴图(因为有几千张贴图,所以我不能一次全部加载)。我计划加载游戏中特定时刻所需的纹理。同样出于某些原因,我不能为每个地图位置提供很多纹理图集。

一般来说,我必须避免读取所有纹理(整个图集)的情况,因为RAM占用会太大。 TextureAtlas 是如何工作的?是否可以在整个游戏过程中保持地图集打开,但只在需要时从地图集(到 RAM)读取选定的纹理而不用担心 RAM 使用?

此致。

您无法加载 TextureAtlas 的部分内容。这是全有或全无。您将不得不使用多个地图集,并仔细计划在每个地图集中放置的内容,这样您就不必同时加载所有地图集。

纹理表示加载到 GPU 内存中用于 OpenGL 的单个图像。 TextureAtlas 的一页对应于单个 Texture。通常,您将在一个 TextureRegion 的每个页面(Texture)上有多个 TextureRegions。如果不这样做,那么使用 TextureAtlas 就没有意义。 TextureAtlas 的要点是避免 SpriteBatch 必须刷新顶点数据并为您绘制的每个精灵交换 OpenGL 纹理。如果您从同一纹理(或图集页面)绘制连续的 TextureRegions,它们会一起批处理成单个网格和 OpenGL 纹理,因此性能更好。

Libgdx 虽然不支持加载 TextureAtlas 的单个页面。这会使它使用起来太复杂。因此,如果您要进行大量加载和卸载,我建议避免使用多页图集。使用 AssetManager 可以非常轻松地加载和卸载您需要的内容。