3

我正在创建一个 OpenGL 游戏,它将使用纹理图集来加载大量艺术品。

纹理图集很好,因为您只需加载一次图像,然后从中剪切出精灵。如果它们是独立的,则可以节省从磁盘加载所有文件所需的时间,并且可以节省内存来存储图像。但在我看来,超过一定程度,这种好处就不会那么真实了,对吧?我的想法是,如果纹理图集非常庞大,您将浪费大量内存来存储它,并且可能不会经常使用其中的一些精灵。

最好的方法是什么?分成多个精灵?水平的精灵还是什么?

无论如何,我的问题是这样的:对应于图集的最大值的像素大小应该被认为是一个好处?

4

2 回答 2

5

最新的 iOS 设备(iPhone 4S 及更新机型、iPad 2 及更新机型)支持高达 4096 * 4096 像素的纹理。除了前两部现在已经过时的 iPhone 之外,所有以前的设备都支持 2048 * 2048 像素,因此您无法达到无限远甚至更远。

iOS 设备在处理一些最大尺寸的纹理时不会有问题,但是你实际应该走多高很大程度上取决于你的内容。例如,如果用户一次只能扮演其中一个角色,那么在保存多个玩家角色精灵的最大尺寸纹理图集上浪费内存是没有意义的。所以我想你的问题没有普遍的答案。

于 2013-09-07T16:06:05.790 回答
0

如果您实际上使用了纹理中的所有区域,因此不担心浪费的内存空间,那么转到 2048x2048 不会有任何特别的性能损失。

问题是,如果您在采样时最终过滤不足(例如,将 512*512 纹理区域投影到屏幕的更小区域),这可能会导致大量额外的内存获取。如果您正在编写一个 2D 游戏,其中的 sprite 大部分是 1:1 绘制的(可能带有较小的缩放或旋转),那么这不是问题。

同样,如果您正在执行 3D 渲染并且有 mipmap,那么 mipmap 将处理欠过滤情况。

于 2013-09-07T18:52:23.833 回答