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 可以非常轻松地加载和卸载您需要的内容。
我打算在我的开放世界 2d 游戏中使用 TextureAtlas。
我需要动态加载贴图(因为有几千张贴图,所以我不能一次全部加载)。我计划加载游戏中特定时刻所需的纹理。同样出于某些原因,我不能为每个地图位置提供很多纹理图集。
一般来说,我必须避免读取所有纹理(整个图集)的情况,因为RAM占用会太大。 TextureAtlas 是如何工作的?是否可以在整个游戏过程中保持地图集打开,但只在需要时从地图集(到 RAM)读取选定的纹理而不用担心 RAM 使用?
此致。
您无法加载 TextureAtlas 的部分内容。这是全有或全无。您将不得不使用多个地图集,并仔细计划在每个地图集中放置的内容,这样您就不必同时加载所有地图集。
纹理表示加载到 GPU 内存中用于 OpenGL 的单个图像。 TextureAtlas 的一页对应于单个 Texture。通常,您将在一个 TextureRegion 的每个页面(Texture)上有多个 TextureRegions。如果不这样做,那么使用 TextureAtlas 就没有意义。 TextureAtlas 的要点是避免 SpriteBatch 必须刷新顶点数据并为您绘制的每个精灵交换 OpenGL 纹理。如果您从同一纹理(或图集页面)绘制连续的 TextureRegions,它们会一起批处理成单个网格和 OpenGL 纹理,因此性能更好。
Libgdx 虽然不支持加载 TextureAtlas 的单个页面。这会使它使用起来太复杂。因此,如果您要进行大量加载和卸载,我建议避免使用多页图集。使用 AssetManager 可以非常轻松地加载和卸载您需要的内容。