我在某处读到XNA框架将纹理升级到最接近两个大小的功率,然后将其发送到VRAM,如果它真的有效,那么在加载很多小的时候可能效率不高(在我的情况下是150×150)纹理,这基本上会浪费内存与未使用的纹理数据进行扩展。
所以有一些自动优化,或者我应该自己实现它,比如加载所有纹理,找出“升级”空间大到足以容纳其他纹理并将其放置在那里,记住精灵位置,因此使用一个纹理而不是两个(或更多)?
为每个纹理手动执行此操作并不总是很方便(在单个纹理中放置许多小精灵),因为以后很难处理(基本上它变得不那么人性化),并且不总是精灵会在游戏的某个级别需要,所以如果精灵在不同的构图中会更好,所以它应该自动完成。
答案 0 :(得分:3)
有一些工具可用于创建所谓的“精灵表”或“纹理图集”。 This XNA sample作为内容管道扩展的一部分为您执行此操作。
请注意,纹理填充仅发生在不支持非二次幂纹理的设备上。例如,Windows Phone。现代GPU不会浪费RAM。但是,这仍然是一个有用的优化,允许您合并批量的精灵(有关详细信息,请参阅this answer)。