2013-02-26 79 views
2

我在某处读到XNA框架将纹理上升到最接近两种尺寸的功率,然后将其发送到VRAM,如果它是真正的工作方式,可能无法有效加载多个小(在我的情况下150×150)纹理,这实质上是浪费记忆与未使用的纹理数据产生的upscaling。所以有一些自动优化,或者我应该自己实现它,比如加载所有纹理,弄清楚“放大”的空间足够大以容纳其他纹理并将其放置在那里,记住精灵位置,因此使用一个纹理而不是两个(或更多)?两种纹理和内存消耗优化的非功耗

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

回答

3

有工具可用来创建所谓的“精灵表”或“纹理地图集”。 This XNA sample可以为您做为内容管道扩展的一部分。

请注意,纹理的填充只发生在不支持非幂次幂纹理的设备上。例如Windows Phone。现代GPU不会浪费RAM。但是,这仍然是一个有用的优化,可以让您合并批量的精灵(详情请参阅this answer)。