Могу ли я создать большую текстуру из других маленьких текстур в webgl? - PullRequest
0 голосов
/ 10 апреля 2020

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

или я должен загрузить изображения и объединить их, а затем создать textrute из объединенной большой картинки?

1 Ответ

1 голос
/ 10 апреля 2020

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

Если по какой-то причине вам придется делать это во время выполнения, то самый простой способ объединить изображения в одну текстуру - сначала загрузить все изображения, а затем использовать 2D-API Canvas. нарисуйте их в 2D-холст , затем используйте этот холст в качестве источника для texImage2D в WebGL. Единственная проблема с использованием 2D-холста - это если вам нужны данные, отличные от изображений, потому что 2D-холст поддерживает только предварительно умноженную альфа.

В противном случае выполнение этого в WebGL - это просто вопрос рендеринга ваших меньших текстур в большую текстуру. , Рендеринг в текстуру требует создания текстуры, присоединения к кадровому буферу, а затем рендеринга, как если бы вы делали что-либо еще. См. this для рендеринга в текстуру и this для рендеринга любой части изображения в любое место холста или другой текстуры.

...