【发布时间】:2016-07-23 00:36:06
【问题描述】:
我正在为 libGDX(适用于 Android 和桌面)中的多人基于瓷砖的游戏编写客户端。 游戏世界由数以千计的 32x32 png 小图像组成,这些图像被绘制到一个大的矩形视图区域中。图像会根据需要通过套接字连接(网络)下载。
将这些图像存储在“内存”中以便在需要时快速绘制到屏幕上的最佳(最快和最节省资源)方法是什么?
到目前为止,我已经实现了一个非常简单的算法,它将每个 32x32 图像加载到纹理中,并无限期地保存在内存中。 (纯属巧合,我的图像大小是 2 的幂。)它似乎有效,但我担心这非常低效,并且可能超过旧设备或其他设备上的 GPU 资源。
我知道 TextureAtlas,但这似乎只适用于打包并存储在已编译的 android 应用程序中的静态图像。当我通过网络动态接收图像时,我相信这对我不起作用。
我发现这个libgdx SpriteBatch render to texture 帖子建议将许多小图像渲染到 FrameBuffer 中,然后将其用作 TextureRegions 的来源。这对我来说似乎很有希望。这是一个好的解决方案吗? 有没有更好的办法?
我还想知道将我的小图像绘制并存储到一个大像素图中是否会有所帮助。如上所述,这可能是比绘制到 FrameBuffer 更好的方法吗? 正如我从文档中了解到的那样,Pixmaps 是纯粹基于内存的。这可能是一个优势,因为它可能不需要图形资源,另一方面可能会更慢,因为加载到纹理中是一项昂贵的操作。对此有何想法?
【问题讨论】:
标签: libgdx