Как я могу эффективно текстурировать несколько спрайтов?

Я пытаюсь реализовать спрайты в DX11, но я не знаю, как продолжить их текстурирование.

Во-первых, может быть несколько спрайтов, каждый из которых использует свою текстуру (атлас). Но так как я не знаю, сколько спрайтов на экране, я не могу использовать Texture2D[x] в моем коде шейдера.

Итак, я посмотрел на использование Texture2DArray, но тогда я должен инициализировать D3D11Texture2D Сам объект как массив текстур. Это кажется мне проблемой, потому что в один момент спрайты A, B, C могут быть на экране, а в следующий момент спрайты B, C, D — на экране. Итак, я должен был бы создать два D3D11Texture2D объекты, содержащие текстуры B и C. И в любом случае, похоже, что текстуры в массивах должны быть одинакового размера.

И это абсолютная катастрофа. Итак — что-то мне не хватает в массивах? И каковы мои варианты сделать это наиболее эффективным способом? Должен ли я установить одну текстуру, нарисовать все спрайты, которые используют эту текстуру, и повторить? Потому что это тоже выглядит довольно плохо.

Заранее спасибо!

PS. Я знаю, что это может быть преждевременной оптимизацией, но я новичок в DX, и мне интересно научиться хорошо кодировать / правильно использовать библиотеку. Поэтому я предпочел бы потратить некоторое время, чем написать плохое решение.

1

Решение

Одна из самых распространенных оптимизаций при рисовании спрайтов — это объединение текстур спрайтов, которые обычно появляются на экране одновременно. Таким образом, вы можете нарисовать их всех в одном Draw Call (вам просто нужно поменять ваши texcoords).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]