Как дешево нарисовать повторяющийся узор над прямоугольной областью?

У меня есть небольшие текстуры (8×8, 16×16, 20×20, также 10×20, 24×32, 64×16 и другие различные размеры), которые я хотел бы заполнить на экране определенной прямоугольной областью, повторяя и не растягивается.

Проблема в том, что если я просто рисую достаточно спрайтов один за другим, выполняя несколько вызовов отрисовки, это просто потребляет много процессора. Есть ли какой-нибудь другой способ сделать это, который не потребовал бы так много вызовов отрисовки?

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

1 ответ

Когда вы создаете свои случайные прямоугольные области, вы можете создать RenderTarget2D вместе с каждым прямоугольником. Затем вы тянете свои плитки в этот RenderTarget2D один раз. После этого вы можете использовать RenderTarget2D (который можно нарисовать так же, как Texture2D), чтобы нарисовать ВСЕ ваши плитки за один вызов Draw.

Другие вопросы по тегам