Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绘制多个不同批次时的XNA问题_Xna_2d - Fatal编程技术网

绘制多个不同批次时的XNA问题

绘制多个不同批次时的XNA问题,xna,2d,Xna,2d,我有一个4个方向的2D游戏,我在FPS(或GPU)上有问题,因为我必须画很多纹理。 我读过很多关于优化性能的技术,但我不知道我还能做什么 主要的问题是,在一些情况下,我有大约200个生物,我必须画他的身体(它是一个单一的精灵),但也画他的身体上的咒语和其他动画因此,我认为这是它开始产生冲突的时候,因为我绘制每个生物的循环必须改变每个生物的纹理,即身体>动画1>动画2>动画3,这大约是200次(生物),每秒60帧。这将fps降低到大约40-50。 有什么建议吗 这就是它的样子: 正如您所建议的,问

我有一个4个方向的2D游戏,我在FPS(或GPU)上有问题,因为我必须画很多纹理。 我读过很多关于优化性能的技术,但我不知道我还能做什么

主要的问题是,在一些情况下,我有大约200个生物,我必须画他的身体(它是一个单一的精灵),但也画他的身体上的咒语和其他动画
因此,我认为这是它开始产生冲突的时候,因为我绘制每个生物的循环必须改变每个生物的纹理,即身体>动画1>动画2>动画3,这大约是200次(生物),每秒60帧。这将fps降低到大约40-50。 有什么建议吗

这就是它的样子:

正如您所建议的,问题可能在于不同纹理之间的不断切换。这比使用相同纹理绘制相同数量的精灵要慢得多

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

有关更多详细信息,请参见