什么是xna中spritebatch.draw中的源矩形

Sha*_*ean 3 xna

SpriteBatch.Draw()方法中源矩形参数的用途是什么?

MSDN说: A rectangle that specifies (in texels) the source texels from a texture. Use null to draw the entire texture.

那是什么意思?

And*_*ell 15

这个想法sourceRectangle是通过将多个精灵安排到单个纹理中来实现性能优化和艺术家便利性.这被称为"纹理图集"或"雪碧表".

http://andrewrussell.net/content/2010/12/Sprite-Sheet-Example.png

我在这个答案中解释了为什么它是性能优化.基本上它可以减少纹理交换的数量.(因此,在我的插图中,如果您只绘制一次动画角色,则使用精灵表不会提高性能.)

它还可以让你实现俗气的2D特效,例如:精灵"擦":

http://andrewrussell.net/content/2010/12/Reveal-Animation-Example.png

A texel与纹理中的像素大致相同("纹理像素",如果可以的话).所以,当你画你的精灵,您指定的左上角精灵的内纹理,其宽度和高度上沿着.(就像在图像编辑器中选择它一样.)

如果传入null源矩形,XNA将采用覆盖整个纹理的源矩形.

origin指定要Draw在从所述源矩形的左上角的纹理像素也被测量.

  • @FreeAsInBeer不是RAM使用量或磁盘空间(任何重要数量).但是你确实提醒我一个有趣的观点,我没有提到:从磁盘加载单个大文件**比加载许多小文件要快得多.(有很多方法可以将资源打包到一个文件中 - 精灵表非常简单.)请记住,改进是加载时间,而不是运行时.与大多数性能优化一样,只有在您可以测量问题存在时,您才应该担心它. (2认同)