Идея 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
, также измеряется в текселях от левого верхнего угла исходного прямоугольника.