Я пытаюсь реализовать настройку Open GL (4.6) с шаблоном Composite (для графа сцены с классами Node, Cube и TransformNode) и шаблоном Visitor ( с помощью DrawVisitor для обработки рендеринга). Сцена будет рисовать несколько кубов, и я хочу иметь возможность выполнять над ними преобразования (масштабирование, вращение, перемещение) с помощью TransformNodes.
У меня есть какая-то реализованная база, которая не поддерживает все еще работаю, но я не могу понять, как все это работает вместе. Вот как я вижу это на данный момент
< li>На мой взгляд, куб будет иметь уже инициализированные значения позиций и нормалей, и все они будут иметь ссылку на одну и ту же сетку. Но что должна делать сетка? Нужно ли просто настроить VAO/VBO и разрешить процесс рендеринга в DrawVisitor? Не уверен, что это правильный подход.
Как DrawVisitor при рисовании узлов должен комбинировать преобразования из TransformNode? В текущем проекте узел имеет доступ только к своему родителю. Я не уверен, как правильно применить все родительские преобразования к дочернему узлу, тем более что DrawVisitor посещает узлы независимо. Как я могу гарантировать, что каждый куб получит правильную матрицу преобразования при рендеринге?
Мне кажется, что наблюдение за его глобальным действием поможет мне получить Мне пришла в голову лучшая идея, например, как эта процедура должна выглядеть в глобальном масштабе? Это похоже на создание корня сцены с ее дочерними элементами и вызов метода Accept на узле с помощью DrawVisitor? Будет ли он перебирать каждый узел и рисовать их, начиная с вершины иерархии?
Я пытаюсь реализовать настройку Open GL (4.6) с шаблоном Composite (для графа сцены с классами Node, Cube и TransformNode) и шаблоном Visitor ( с помощью DrawVisitor для обработки рендеринга). Сцена будет рисовать несколько кубов, и я хочу иметь возможность выполнять над ними преобразования (масштабирование, вращение, перемещение) с помощью TransformNodes. У меня есть какая-то реализованная база, которая не поддерживает все еще работаю, но я не могу понять, как все это работает вместе. Вот как я вижу это на данный момент [img]https://i.sstatic.net/CA9pMFrk.png[/img]
[img]https://i.sstatic.net/H3i8qLNO.png[/img]
[list] < li>На мой взгляд, куб будет иметь уже инициализированные значения позиций и нормалей, и все они будут иметь ссылку на одну и ту же сетку. Но что должна делать сетка? Нужно ли просто настроить VAO/VBO и разрешить процесс рендеринга в DrawVisitor? Не уверен, что это правильный подход.
[*]Как DrawVisitor при рисовании узлов должен комбинировать преобразования из TransformNode? В текущем проекте узел имеет доступ только к своему родителю. Я не уверен, как правильно применить все родительские преобразования к дочернему узлу, тем более что DrawVisitor посещает узлы независимо. Как я могу гарантировать, что каждый куб получит правильную матрицу преобразования при рендеринге?
[*]Мне кажется, что наблюдение за его глобальным действием поможет мне получить Мне пришла в голову лучшая идея, например, как эта процедура должна выглядеть в глобальном масштабе? Это похоже на создание корня сцены с ее дочерними элементами и вызов метода Accept на узле с помощью DrawVisitor? Будет ли он перебирать каждый узел и рисовать их, начиная с вершины иерархии?