Вывод отладочных лампочек
This commit is contained in:
		
							parent
							
								
									eff4b6d39d
								
							
						
					
					
						commit
						0ce4cff80e
					
				@ -27,6 +27,8 @@ class Light : public Node
 | 
			
		||||
 | 
			
		||||
        const glm::vec3& c_color() const; // Константный доступ к цвету
 | 
			
		||||
        glm::vec3& e_color(); // Неконстантная ссылка для изменений цвета
 | 
			
		||||
 | 
			
		||||
        static void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рисование отладочных лампочек
 | 
			
		||||
    private:
 | 
			
		||||
        Light(); // Конструктор без параметров
 | 
			
		||||
        Light(const Light& copy) = delete; // Конструктор копирования ОТКЛЮЧЕН
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,7 @@
 | 
			
		||||
#include "Lights.h"
 | 
			
		||||
 | 
			
		||||
#include "Scene.h" // Для отладочного вывода лампочек
 | 
			
		||||
 | 
			
		||||
#include <stdexcept>
 | 
			
		||||
 | 
			
		||||
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[0].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_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))
 | 
			
		||||
    {
 | 
			
		||||
@ -187,6 +194,17 @@ int main(void)
 | 
			
		||||
        // Рендерим прямоугольник с расчетом освещения
 | 
			
		||||
        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);
 | 
			
		||||
        // Обработка системных событий
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user