Доработка метода рендера

This commit is contained in:
parent b5572c5de0
commit 0511c6ca1e
2 changed files with 10 additions and 3 deletions

View File

@ -24,7 +24,7 @@ class Scene
Scene(const Scene &copy); // Конструктор копирования Scene(const Scene &copy); // Конструктор копирования
Scene& operator=(const Scene& other); // Оператор присваивания Scene& operator=(const Scene& other); // Оператор присваивания
void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рендер сцены void render(ShaderProgram &shaderProgram, UBO &material_buffer, bool recalc_animations = false); // Рендер сцены
void set_group_id(GLuint64 id, GLuint etc = 0); // Изменение флага записи идентификатора для всех моделей void set_group_id(GLuint64 id, GLuint etc = 0); // Изменение флага записи идентификатора для всех моделей

View File

@ -30,8 +30,15 @@ Scene& Scene::operator=(const Scene& other)
} }
// Рендер сцены // Рендер сцены
void Scene::render(ShaderProgram &shaderProgram, UBO &material_buffer) void Scene::render(ShaderProgram &shaderProgram, UBO &material_buffer, bool recalc_animations)
{ {
// Если требуется пересчитаем анимации
if (recalc_animations)
for (auto & animation : animations)
if (animation.isEnabled())
animation.process();
// Рендер моделей
for (auto & model : models) for (auto & model : models)
model.render(shaderProgram, material_buffer); model.render(shaderProgram, material_buffer);
} }