Как мне отрендерить два разных изображения в двух разных примитивах в OpenGL? 2D текстуры массивов?

Итак, у меня есть простое средство просмотра OpenGL, где вы можете нарисовать любое количество ящиков, которые хочет пользователь. Я также добавил возможность снимать изображения в формате PNG или JPG и наносить текстуру на карту примитива.

Я хочу, чтобы пользователь мог указать любой из кубов на экране и применить к ним различные текстуры. Я довольно новичок в OpenGL. Прямо сейчас я могу легко сопоставить изображение с одним примитивом, но мне интересно, как лучше отобразить 2 отдельных изображения (которые могут быть разных размеров) на 2 отдельных примитива.

Я довольно много читал о массивах 2D-текстур, и, похоже, я бы так хотел, поскольку я могу хранить несколько текстур в одном текстурном блоке, но я не уверен, возможно ли это, учитывая то, что я упомянул выше , Если изображения имеют разные размеры, то я не думаю, что смогу это сделать (по крайней мере, я так не думаю). Я знаю, что могу просто хранить каждое изображение в отдельных текстурных единицах, но делать это в массиве казалось более чистым способом сделать это.

Каков был бы лучший способ сделать это? Можете ли вы на самом деле хранить изображения разных размеров в массиве 2D-текстур? И если так, как? Или мне лучше просто хранить их на отдельных текстурных блоках?

0

Решение

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

В вашем случае я предлагаю просто загрузить каждую картинку в отдельную текстуру и связать соответствующую текстуру перед рисованием куба.

0

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


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