From e8950518e5881eeff0adbd8adbaf899e86221299 Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Tue, 20 Dec 2022 13:18:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20render?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Model.h | 5 +++-- src/Model.cpp | 7 ++++--- src/main.cpp | 5 +---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/include/Model.h b/include/Model.h index c2ca0b1..619765f 100644 --- a/include/Model.h +++ b/include/Model.h @@ -3,6 +3,7 @@ #include "Buffers.h" #include "Texture.h" +#include "Shader.h" #include @@ -42,7 +43,7 @@ class Model : public Movable Model(const Model& copy); // Конструктор копирования ~Model(); void render(); // Вызов отрисовки без uniform-даных - void render(const GLuint &model_uniform, UBO &material_buffer, const glm::mat4& global_tranform = glm::mat4(1)); // Вызов отрисовки + void render(ShaderProgram &shaderProgram, UBO &material_buffer, const glm::mat4& global_tranform = glm::mat4(1)); // Вызов отрисовки void load_verteces(glm::vec3* verteces, GLuint count); // Загрузка вершин в буфер void load_indices(GLuint* indices, GLuint count); // Загрузка индексов в буфер void load_texCoords(glm::vec2* texCoords, GLuint count); // Загрузка текстурных координат в буфер @@ -66,7 +67,7 @@ class Model : public Movable class GrouptedModel: public Movable { public: - void render(const GLuint &model_uniform, UBO &material_buffer); // Вызов отрисовки + void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Вызов отрисовки std::vector parts; }; diff --git a/src/Model.cpp b/src/Model.cpp index d942775..d2dc87f 100644 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -66,10 +66,11 @@ void Model::render() } // Вызов отрисовки -void Model::render(const GLuint &model_uniform, UBO &material_buffer, const glm::mat4& global_tranform) +void Model::render(ShaderProgram &shaderProgram, UBO &material_buffer, const glm::mat4& global_tranform) { // Расчитаем матрицу трансформации glm::mat4 model = global_tranform * this->getTransformMatrix(); + GLuint model_uniform = shaderProgram.getUniformLoc("model"); glUniformMatrix4fv(model_uniform, 1, GL_FALSE, &model[0][0]); // Подключаем текстуры @@ -376,9 +377,9 @@ GrouptedModel loadOBJtoGroupted(const char* filename, const char* mtl_directory, } // Вызов отрисовки групповой модели -void GrouptedModel::render(const GLuint &model_uniform, UBO &material_buffer) +void GrouptedModel::render(ShaderProgram &shaderProgram, UBO &material_buffer) { glm::mat4 transform = this->getTransformMatrix(); for (auto& model : parts) - model.render(model_uniform, material_buffer, transform); + model.render(shaderProgram, material_buffer, transform); } diff --git a/src/main.cpp b/src/main.cpp index 9b408ba..43b5888 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -106,9 +106,6 @@ int main(void) // Установка цвета очистки буфера цвета glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - // Расположение Uniform-переменной - GLuint model_uniform = base.getUniformLoc("model"); - // Источник света PointLight light = { {1.0f, 3.0f, 0.0f} // позиция , {1.0f, 1.0f, 1.0f} // цвет @@ -166,7 +163,7 @@ int main(void) cameraUB.loadSub(&camera.getData(), sizeof(CameraData)); // Тут производится рендер - scene.render(model_uniform, material_data); + scene.render(base, material_data); // Активируем базовый буфер кадра FBO::useDefault();