Реализация графа сцены на OpenGL ES 2.0

Я ищу способ реализовать базовое управление сценой в OpenGL ES 2.0, где нет фиксированного конвейера функций.

Обычно я бы реализовал базовый класс Node, который применял бы свои преобразования с помощью glTranslate и glRotate, рисовал себя (если есть что рисовать), а затем вызывал метод рисования своих дочерних узлов.

У кого-нибудь есть пример этого, реализованный с помощью OpenGL ES 2.0 (или OpenGL 3.0)?


person rgngl    schedule 05.07.2011    source источник


Ответы (1)


Ключевое отличие состоит в том, что вместо вызова glRotate, glTranslate, glScale и т. д. вы сами строите матрицу преобразования, возможно, также некоторую иерархию преобразования. И затем, перед рендерингом рассматриваемого объекта, вы предоставляете его матрицу преобразования через Uniform.

Код, необходимый для этого, очень прост, просто куча линейной алгебры на 4 векторах и матрицах 4 × 4 — и кватернионы, если вы хотите их использовать.

person datenwolf    schedule 05.07.2011
comment
Извините, что настаиваю на том, что я нуб :) Тогда мой вопрос: должен ли каждый узел выполнять свое собственное рисование (и иметь свой собственный шейдер, что мне в любом случае не подходит) или должен быть один класс, отвечающий за все рисование и узлы в сцена вызывает метод рендеринга в этом классе? - person rgngl; 05.07.2011
comment
Забавно, что вы должны спросить. Совсем недавно кто-то еще спрашивал именно об этом, см. мой ответ здесь: " title="архитектура oo для рендеринга в играх на основе шейдеров"> stackoverflow.com/questions/6583024/ - person datenwolf; 05.07.2011
comment
@datenwolf - это вопрос, аналогичный тому, который я задаю здесь: stackoverflow.com/questions/14720111/. не будете ли вы так любезны взглянуть? я думаю, что ищу такое объяснение, возможно, немного более явное с некоторой помощью кода. Благодарность! - person danh; 06.02.2013