diff --git a/src/main.cpp b/src/main.cpp index f7da71e..946533b 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -209,6 +209,41 @@ int main(void) sunShadowShader.load(GL_VERTEX_SHADER, "shaders/sun_shadow.vert"); sunShadowShader.link(); + // Модель прямоугольника + Model rectangle; + + // Вершины прямоугольника + glm::vec3 rectangle_verticies[] = { {-0.5f, 0.0f, -0.5f} + , { 0.5f, 0.0f, -0.5f} + , { 0.5f, 0.0f, 0.5f} + , {-0.5f, 0.0f, 0.5f} + }; + // Загрузка вершин модели + rectangle.load_verteces(rectangle_verticies, sizeof(rectangle_verticies)/sizeof(glm::vec3)); + + // индексы вершин + GLuint rectangle_indices[] = {0, 1, 2, 2, 3, 0}; + // Загрузка индексов модели + rectangle.load_indices(rectangle_indices, sizeof(rectangle_indices)/sizeof(GLuint)); + + // Нормали + glm::vec3 rectangle_normals[] = { {0.0f, 1.0f, 0.0f} + , {0.0f, 1.0f, 0.0f} + , {0.0f, 1.0f, 0.0f} + , {0.0f, 1.0f, 0.0f} + }; + // Загрузка нормалей модели + rectangle.load_normals(rectangle_normals, sizeof(rectangle_normals)/sizeof(glm::vec3)); + + // Зададим горизонтальное положение перед камерой + rectangle.e_position().y = -1; + rectangle.e_position().z = 2; + rectangle.e_scale() = glm::vec3(4); + + // Параметры материала + rectangle.material.ka = {0.4, 0.4, 0.4}; + rectangle.material.kd = {0.4, 0.4, 0.4}; + // Шейдер для рисования отладочных лампочек ShaderProgram bulbShader; // Загрузка и компиляция шейдеров @@ -235,6 +270,7 @@ int main(void) // Тут производится рендер scene.render(gShader, material_data); + rectangle.render(gShader, material_data); // Изменим размер вывода для тени glViewport(0, 0, sunShadow_resolution, sunShadow_resolution); @@ -246,6 +282,7 @@ int main(void) glClear(GL_DEPTH_BUFFER_BIT); // Рендерим геометрию в буфер глубины scene.render(sunShadowShader, material_data); + rectangle.render(sunShadowShader, material_data); // Изменим размер вывода для окна glViewport(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); @@ -260,6 +297,8 @@ int main(void) gNormal.use(); gDiffuseP.use(); gAmbientSpecular.use(); + // Подключаем текстуры теней + sunShadowDepth.use(); // Рендерим прямоугольник с расчетом освещения quadModel.render();