Переделка метода render

This commit is contained in:
Ковалев Роман Евгеньевич 2022-12-20 13:18:06 +03:00 committed by R.E. Kovalev
parent 5490fa04df
commit e8950518e5
3 changed files with 8 additions and 9 deletions

View File

@ -3,6 +3,7 @@
#include "Buffers.h"
#include "Texture.h"
#include "Shader.h"
#include <GLM/glm.hpp>
@ -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<Model> parts;
};

View File

@ -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);
}

View File

@ -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();