Вывод отладочных лампочек
This commit is contained in:
parent
55dfa6d854
commit
deca2767e8
|
@ -27,6 +27,8 @@ class Light : public Node
|
||||||
|
|
||||||
const glm::vec3& c_color() const; // Константный доступ к цвету
|
const glm::vec3& c_color() const; // Константный доступ к цвету
|
||||||
glm::vec3& e_color(); // Неконстантная ссылка для изменений цвета
|
glm::vec3& e_color(); // Неконстантная ссылка для изменений цвета
|
||||||
|
|
||||||
|
static void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рисование отладочных лампочек
|
||||||
private:
|
private:
|
||||||
Light(); // Конструктор без параметров
|
Light(); // Конструктор без параметров
|
||||||
Light(const Light& copy) = delete; // Конструктор копирования ОТКЛЮЧЕН
|
Light(const Light& copy) = delete; // Конструктор копирования ОТКЛЮЧЕН
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "Lights.h"
|
#include "Lights.h"
|
||||||
|
|
||||||
|
#include "Scene.h" // Для отладочного вывода лампочек
|
||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
GLuint Light::count = 0; // количество используемых источников (должно быть <= MAX_LIGHTS)
|
GLuint Light::count = 0; // количество используемых источников (должно быть <= MAX_LIGHTS)
|
||||||
|
@ -165,3 +167,22 @@ Light::~Light()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Рисование отладочных лампочек
|
||||||
|
void Light::render(ShaderProgram &shaderProgram, UBO &material_buffer)
|
||||||
|
{
|
||||||
|
// Загрузка модели лампочки при первом вызове функции
|
||||||
|
static Scene bulb = loadOBJtoScene("../resources/models/bulb.obj", "../resources/models/", "../resources/textures/");
|
||||||
|
|
||||||
|
// Цикл по источникам света
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
// Сдвиг на позицию источника
|
||||||
|
bulb.root.e_position() = data[i].position;
|
||||||
|
// Задание цвета
|
||||||
|
bulb.models.begin()->material.ka = data[i].color;
|
||||||
|
|
||||||
|
// Вызов отрисовки
|
||||||
|
bulb.render(shaderProgram, material_buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
18
src/main.cpp
18
src/main.cpp
|
@ -155,6 +155,13 @@ int main(void)
|
||||||
quadModel.load_verteces(quadVertices, 4);
|
quadModel.load_verteces(quadVertices, 4);
|
||||||
quadModel.load_indices(quadIndices, 6);
|
quadModel.load_indices(quadIndices, 6);
|
||||||
|
|
||||||
|
// Шейдер для рисования отладочных лампочек
|
||||||
|
ShaderProgram bulbShader;
|
||||||
|
// Загрузка и компиляция шейдеров
|
||||||
|
bulbShader.load(GL_VERTEX_SHADER, "shaders/bulb.vert");
|
||||||
|
bulbShader.load(GL_FRAGMENT_SHADER, "shaders/bulb.frag");
|
||||||
|
bulbShader.link();
|
||||||
|
|
||||||
// Пока не произойдет событие запроса закрытия окна
|
// Пока не произойдет событие запроса закрытия окна
|
||||||
while(!glfwWindowShouldClose(window))
|
while(!glfwWindowShouldClose(window))
|
||||||
{
|
{
|
||||||
|
@ -187,6 +194,17 @@ int main(void)
|
||||||
// Рендерим прямоугольник с расчетом освещения
|
// Рендерим прямоугольник с расчетом освещения
|
||||||
quadModel.render();
|
quadModel.render();
|
||||||
|
|
||||||
|
// Перенос буфера глубины
|
||||||
|
FBO::useDefault(GL_DRAW_FRAMEBUFFER); // Базовый в режиме записи
|
||||||
|
gbuffer.use(GL_READ_FRAMEBUFFER); // Буфер геометрии в режиме чтения
|
||||||
|
// Копирование значений глубины
|
||||||
|
glBlitFramebuffer(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
|
||||||
|
FBO::useDefault(); // Использование базового буфера для дальнейших работ
|
||||||
|
|
||||||
|
// Отрисовка отладочных лампочек со специальным шейдером
|
||||||
|
bulbShader.use();
|
||||||
|
Light::render(bulbShader, material_data);
|
||||||
|
|
||||||
// Представление содержимого буфера цепочки показа на окно
|
// Представление содержимого буфера цепочки показа на окно
|
||||||
glfwSwapBuffers(window);
|
glfwSwapBuffers(window);
|
||||||
// Обработка системных событий
|
// Обработка системных событий
|
||||||
|
|
Loading…
Reference in New Issue