首页 > 解决方案 > 绘制许多不同批次时的 XNA 问题

问题描述

我有一个 4 个方向的 2D 游戏,我遇到了 FPS(或 GPU)问题,因为我必须绘制很多纹理。我已经阅读了很多关于优化性能的技术,但我不知道我能做什么了。

主要问题是在某些情况下我有大约 200 个生物,我必须在其中绘制他的身体(它是单个精灵),但还要在他的身体上绘制法术和其他动画。
所以,我认为那是它开始产生冲突的时候,因为我绘制每个生物的循环必须更改每个生物的纹理,即 body>animation1>animation2>animation3,这大约是 200(生物)次,速度为 60 fps。这将fps降低到大约40-50。有什么建议么?

这是它的外观:

标签: xna2d

解决方案


问题可能是 - 正如您已经建议的那样 - 不同纹理之间的不断切换。这比使用相同纹理绘制相同数量的精灵要慢得多。

要改变这一点,请考虑将所有纹理放入一个大纹理中。然后你总是画那个纹理。这显然看起来很错误,因此您还必须告诉 XNA 您要绘制纹理的哪个部分。为此,您可以使用可以传递给 SpriteBatch.Draw(...) 的 SourceRectangle 参数。这样,您始终可以渲染相同的纹理,但仍然可以在屏幕上显示不同的图像。

有关更多详细信息,另请参阅有关纹理图集的此答案。


推荐阅读