У меня вполне теоретический вопрос по поводу нормалей в OpenGL. Я нигде не мог найти внятного объяснения (мои знания в этом предмете не точные).
Я хотел бы наложить текстуры на куб, по одной на грань, и самый очевидный способ сделать это - поиграть с нормалями.
Но включение нормалей в вершины приводит к тому, что эти вершины не разделяются:
- На кубе с общими вершинами у нас будет 8 вершин.
- На кубе с неразделенными вершинами у нас будет 8 * 3 = 32 вершины.
Я где-то читал, что шейдеры можно использовать для определения нормалей и применения текстур, но я действительно ничего не знаю о шейдерах, и мне было интересно, как лучше всего выполнить эту работу (применить текстуры на гранях куба).
Вдобавок ко всему, я бы хотел, чтобы эти вершины не разделяли координаты текстуры, применяемой к ним (например, вершина в нижнем левом углу перед нами будет иметь (0,0) UV-координаты для текстуры на ПЕРЕДНЯЯ грань куба, УФ-координата (0,1) для текстуры на ЛЕВОЙ грани куба и (1,1) УФ-координата для текстуры на НИЖНЕЙ грани куба). Могут ли шейдеры добиться этой работы при исправлении текстуры?
В заключение, как лучше всего применить необщую текстуру и не разделяемую UV-координату к вершине: с необщими вершинами (намного больше вершин) или с шейдером (больше работы для графического процессора, я думаю )?