[XNA问题,绘制许多不同批次时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[XNA问题,绘制许多不同批次时相关的知识,希望对你有一定的参考价值。

我在4个方向上都有2D游戏,并且在FPS(或GPU)方面遇到问题,因为我必须绘制很多纹理。我已经阅读了很多有关优化性能的技术,但是我不知道该怎么办。

主要问题是,在某些情况下,我大约有200个生物,在这里我不仅要画他的身体(它是一个精灵),还要在他的身上画一些咒语和其他动画。因此,我认为那是开始产生冲突的原因,因为我绘制每个生物的循环必须更改每个生物的纹理,即body> animation1> animation2> animation3,并且在60 fps时约200次(生物)。将fps降低至40-50。有什么建议吗?

外观如下:“”

答案

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

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

另请参阅this answer about texture atlasses了解更多详细信息。

以上是关于[XNA问题,绘制许多不同批次时的主要内容,如果未能解决你的问题,请参考以下文章

使用 XNA/Monogame 从 spritesheet 中绘制一个 sprite

化工行业批次和子批次管理

XNA - 更新方法与绘制方法

C# XNA - 如何使用 2 个矩形变量绘制动画纹理?

如何使用 BasicEffect 在 XNA 中绘制模型

这是绘制许多不同的动态 3D 模型的最优化和正确的方法(它们是动画的并且每一帧都会改变)