diff --git a/include/Model.h b/include/Model.h index e51e2ae..a3da35b 100644 --- a/include/Model.h +++ b/include/Model.h @@ -3,6 +3,7 @@ #include "Buffers.h" #include "Texture.h" +#include "Shader.h" #include #include @@ -72,7 +73,7 @@ class Model : public Node virtual ~Model(); void render(); // Вызов отрисовки без uniform-данных - void render(const GLuint &model_uniform, UBO &material_buffer); // Вызов отрисовки + void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Вызов отрисовки void load_verteces(glm::vec3* verteces, GLuint count); // Загрузка вершин в буфер void load_indices(GLuint* indices, GLuint count); // Загрузка индексов в буфер diff --git a/include/Scene.h b/include/Scene.h index 1f9162e..d01eae2 100644 --- a/include/Scene.h +++ b/include/Scene.h @@ -17,7 +17,7 @@ class Scene Scene(const Scene ©); // Конструктор копирования Scene& operator=(const Scene& other); // Оператор присваивания - void render(const GLuint &model_uniform, UBO &material_buffer); // Рендер сцены + void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рендер сцены Node root; // Корневой узел diff --git a/src/Model.cpp b/src/Model.cpp index 988aab5..6b34f02 100644 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -263,10 +263,10 @@ void Model::render() } // Вызов отрисовки -void Model::render(const GLuint &model_uniform, UBO &material_buffer) +void Model::render(ShaderProgram &shaderProgram, UBO &material_buffer) { - // Загрузим матрицу трансформации - glUniformMatrix4fv(model_uniform, 1, GL_FALSE, &getTransformMatrix()[0][0]); + // Расчитаем матрицу трансформации + glUniformMatrix4fv(shaderProgram.getUniformLoc("model"), 1, GL_FALSE, &this->getTransformMatrix()[0][0]); // Подключаем текстуры texture_diffuse.use(); diff --git a/src/Scene.cpp b/src/Scene.cpp index 875dad3..6dedce9 100644 --- a/src/Scene.cpp +++ b/src/Scene.cpp @@ -27,10 +27,10 @@ Scene& Scene::operator=(const Scene& other) } // Рендер сцены -void Scene::render(const GLuint &model_uniform, UBO &material_buffer) +void Scene::render(ShaderProgram &shaderProgram, UBO &material_buffer) { for (auto & model : models) - model.render(model_uniform, material_buffer); + model.render(shaderProgram, material_buffer); } // Перестройка узлов выбранного списка diff --git a/src/main.cpp b/src/main.cpp index 86ecbac..edf6761 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -103,9 +103,6 @@ int main(void) // Установка цвета очистки буфера цвета glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - // Расположение Uniform-переменной - GLuint model_uniform = base.getUniformLoc("model"); - // Источник света LightData light = { {1.0f, 3.0f, 0.0f} // позиция , {1.0f, 1.0f, 1.0f} // цвет @@ -163,7 +160,7 @@ int main(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Тут производится рендер - scene.render(model_uniform, material_data); + scene.render(base, material_data); // Активируем базовый буфер кадра FBO::useDefault();