MonoGame - Tiling Texture2D с использованием SpriteBatch для iOS - PullRequest
3 голосов
/ 14 ноября 2011

Прямо сейчас я выкладываю Texture2D с двумя циклами for, похожими на пример из семплов MonoGame .

Я немного читал и видел, что с помощью powerиз двух текстур (2, 4, 8, 16, 32 и т. д. по ширине и высоте) можно облицовать одним вызовом SpriteBatch.Draw.

Поддерживается ли это в MonoGame на iOS?

Я дал ему несколько попыток, и независимо от того, что он просто растягивает изображение, а не укладывает его.

Я использую SamplerState.LinearWrap на моем SpriteBatch.Begin (), и пытался использовать 2048x128 png и пробовал это1/4 размера в 512x32, но без удачи.(Используя большие размеры, наша игра работает с разрешением 2400x. Что-то уменьшено, можно увеличить с помощью камеры увеличение в 2,5 раза)

1 Ответ

2 голосов
/ 14 ноября 2011

Вы можете использовать параметр SourceRectangle в методе рисования . Чтобы определить, какую часть текстуры вы хотите отобразить. Допустим, у вас есть текстура 128x128. Если вы поставите Rect(0, 0, 128, 128), вы скажете методу рисования использовать всю текстуру, то же самое, если вы передадите null методу рисования. Если вы поставите Rect(0, 0, 64, 64), вы будете использовать верхнюю левую часть текстуры. Ваш спрайт будет отображать эту часть, независимо от того, насколько велик сам спрайт. Поэтому, если ваш спрайт нарисован размером 128x128, текстурная часть 64x64 будет масштабирована.

Теперь вы можете использовать это для анимации. Если вы сохраняете в своей текстуре последовательность анимации, например this , вам просто нужно пересчитывать исходный прямоугольник каждый раз, когда вы хотите отобразить следующее изображение в вашей последовательности.

Кроме того, вы можете передать большее значение, чем ваша исходная текстура. Теперь XNA нужно обернуть или зажать вашу текстуру. Таким образом, вы можете достичь простого тайлинга. Если вам нужно больше, я думаю, вам нужно использовать ручной подход, например, циклы foreach. Обратите внимание, что Wrap поддерживается только если вы используете мощность двух текстур.

...