Рисование скайбокса
This commit is contained in:
parent
190ea7d84d
commit
e1a800980d
77
src/main.cpp
77
src/main.cpp
|
@ -264,6 +264,72 @@ int main(void)
|
||||||
bulbShader.load(GL_FRAGMENT_SHADER, "shaders/bulb.frag");
|
bulbShader.load(GL_FRAGMENT_SHADER, "shaders/bulb.frag");
|
||||||
bulbShader.link();
|
bulbShader.link();
|
||||||
|
|
||||||
|
// Вершины для скайбокса
|
||||||
|
glm::vec3 skybox_verticies[] = {
|
||||||
|
{-1.0f, 1.0f, -1.0f},
|
||||||
|
{-1.0f, -1.0f, -1.0f},
|
||||||
|
{ 1.0f, -1.0f, -1.0f},
|
||||||
|
{ 1.0f, -1.0f, -1.0f},
|
||||||
|
{ 1.0f, 1.0f, -1.0f},
|
||||||
|
{-1.0f, 1.0f, -1.0f},
|
||||||
|
|
||||||
|
{-1.0f, -1.0f, 1.0f},
|
||||||
|
{-1.0f, -1.0f, -1.0f},
|
||||||
|
{-1.0f, 1.0f, -1.0f},
|
||||||
|
{-1.0f, 1.0f, -1.0f},
|
||||||
|
{-1.0f, 1.0f, 1.0f},
|
||||||
|
{-1.0f, -1.0f, 1.0f},
|
||||||
|
|
||||||
|
{ 1.0f, -1.0f, -1.0f},
|
||||||
|
{ 1.0f, -1.0f, 1.0f},
|
||||||
|
{ 1.0f, 1.0f, 1.0f},
|
||||||
|
{ 1.0f, 1.0f, 1.0f},
|
||||||
|
{ 1.0f, 1.0f, -1.0f},
|
||||||
|
{ 1.0f, -1.0f, -1.0f},
|
||||||
|
|
||||||
|
{-1.0f, -1.0f, 1.0f},
|
||||||
|
{-1.0f, 1.0f, 1.0f},
|
||||||
|
{ 1.0f, 1.0f, 1.0f},
|
||||||
|
{ 1.0f, 1.0f, 1.0f},
|
||||||
|
{ 1.0f, -1.0f, 1.0f},
|
||||||
|
{-1.0f, -1.0f, 1.0f},
|
||||||
|
|
||||||
|
{-1.0f, 1.0f, -1.0f},
|
||||||
|
{ 1.0f, 1.0f, -1.0f},
|
||||||
|
{ 1.0f, 1.0f, 1.0f},
|
||||||
|
{ 1.0f, 1.0f, 1.0f},
|
||||||
|
{-1.0f, 1.0f, 1.0f},
|
||||||
|
{-1.0f, 1.0f, -1.0f},
|
||||||
|
|
||||||
|
{-1.0f, -1.0f, -1.0f},
|
||||||
|
{-1.0f, -1.0f, 1.0f},
|
||||||
|
{ 1.0f, -1.0f, -1.0f},
|
||||||
|
{ 1.0f, -1.0f, -1.0f},
|
||||||
|
{-1.0f, -1.0f, 1.0f},
|
||||||
|
{ 1.0f, -1.0f, 1.0f}
|
||||||
|
};
|
||||||
|
// Модель скайбокса
|
||||||
|
Model skybox;
|
||||||
|
skybox.load_verteces(skybox_verticies, sizeof(skybox_verticies)/sizeof(glm::vec3));
|
||||||
|
TextureCube skybox_texture(TEX_DIFFUSE, { "../resources/textures/skybox/px.jpg"
|
||||||
|
, "../resources/textures/skybox/nx.jpg"
|
||||||
|
, "../resources/textures/skybox/py.jpg"
|
||||||
|
, "../resources/textures/skybox/ny.jpg"
|
||||||
|
, "../resources/textures/skybox/pz.jpg"
|
||||||
|
, "../resources/textures/skybox/nz.jpg"
|
||||||
|
});
|
||||||
|
|
||||||
|
// Шейдер для скайбокса
|
||||||
|
ShaderProgram skyboxShader;
|
||||||
|
// Загрузим шейдеры
|
||||||
|
skyboxShader.load(GL_VERTEX_SHADER, "shaders/skybox.vert");
|
||||||
|
skyboxShader.load(GL_FRAGMENT_SHADER, "shaders/skybox.frag");
|
||||||
|
skyboxShader.link();
|
||||||
|
// Привязка текстуры скайбокса
|
||||||
|
const char* skybox_shader_names[] = {"skybox"};
|
||||||
|
skyboxShader.bindTextures(skybox_shader_names, sizeof(skybox_shader_names)/sizeof(const char*));
|
||||||
|
|
||||||
|
|
||||||
// Пока не произойдет событие запроса закрытия окна
|
// Пока не произойдет событие запроса закрытия окна
|
||||||
while(!glfwWindowShouldClose(window))
|
while(!glfwWindowShouldClose(window))
|
||||||
{
|
{
|
||||||
|
@ -322,6 +388,17 @@ int main(void)
|
||||||
glBlitFramebuffer(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
|
glBlitFramebuffer(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, GL_DEPTH_BUFFER_BIT, GL_NEAREST);
|
||||||
FBO::useDefault(); // Использование базового буфера для дальнейших работ
|
FBO::useDefault(); // Использование базового буфера для дальнейших работ
|
||||||
|
|
||||||
|
// Отрисовка скайбокса без записи глубины
|
||||||
|
glDepthMask(GL_FALSE);
|
||||||
|
// Используем шейдер для скайбокса
|
||||||
|
skyboxShader.use();
|
||||||
|
// Подключаем текстуру скайбокса
|
||||||
|
skybox_texture.use();
|
||||||
|
// Рендерим куб
|
||||||
|
skybox.render();
|
||||||
|
// Возвращаем запись глубины
|
||||||
|
glDepthMask(GL_TRUE);
|
||||||
|
|
||||||
// Отрисовка отладочных лампочек со специальным шейдером
|
// Отрисовка отладочных лампочек со специальным шейдером
|
||||||
bulbShader.use();
|
bulbShader.use();
|
||||||
Light::render(bulbShader, material_data);
|
Light::render(bulbShader, material_data);
|
||||||
|
|
Loading…
Reference in New Issue