Как настроить openGL в среде, управляемой данными, с архитектурой Entity/Component/System?

Итак, я пишу игровой движок для Linux, используя OpenGL, SDL2 и Lua (до сих пор). Я планирую включить OpenAL, возможно, для аудио, но это не имеет значения.

Мне было трудно понять, как лучше всего это настроить. Может быть, я не понимаю идею, стоящую за этим. В моем проекте у меня есть объект Shader, а также объект ShaderVariable (который в основном является настраиваемым классом вариантов) и объект ShaderProgram. Шейдерная программа содержит до 6 шейдеров (для каждой части пайплайна). Мой объект Shader загружает шейдер в gluint и имеет логические переменные isCompiled и isLinked. Среди них также есть вектор объектов ShaderVariable. Когда код GLSL загружается, std::vector *m_attributes замещается новым объектом shaperVariable (состоящим из имени и типа). Как настроить рендеринг, если спецификации еще не созданных шейдеров могут различаться? (те, которые конечный пользователь будет писать)

У меня есть еще один вопрос: состоят ли они из переменных в спецификации вершин?


person Jim Clark    schedule 05.12.2016    source источник


Ответы (1)


Похоже, вам нужно построить свою собственную ECS. Это довольно глубокая тема.

Также похоже, что вам нужна комбинация ООП и моделирования на основе компонентов в вашей ECS.

Начните с отображения нескольких интерфейсов, таких как IComponent и IEntity, затем создайте несколько базовых типов и работайте с ними.

person Community    schedule 24.07.2017