2

我在某处读到 XNA 框架将纹理放大到最接近的两倍大小,然后将其发送到 VRAM,如果它确实是这样工作的,那么在加载许多小(在我的情况下为 150×150)纹理时可能效率不高,这本质上是因为放大而导致未使用的纹理数据浪费内存。

那么是否有一些自动优化,或者我应该自己实现它,比如加载所有纹理,找出“升级”空间足够大以容纳其他纹理并将其放置在那里,记住精灵位置,因此使用一个纹理而不是两个(或更多)?

为每个纹理手动执行此操作并不总是很方便(将许多小精灵放在单个纹理中),因为以后很难使用(本质上它变得不那么以人为本),而且并不总是需要精灵某个级别的游戏,所以如果精灵在不同的组合中会更好,所以它应该自动完成。

4

1 回答 1

3

有一些工具可用于创建所谓的“精灵表”或“纹理图集”。此 XNA 示例作为内容管道扩展的一部分为您执行此操作。

请注意,纹理的填充仅发生在不支持非二次幂纹理的设备上。例如,Windows 电话。现代 GPU 不会浪费内存。然而,这仍然是一个有用的优化,允许您合并批次的精灵(有关详细信息,请参阅此答案)。

于 2013-03-01T09:06:55.183 回答