Рисование скайбокса
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.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))
|
||||
{
|
||||
|
@ -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);
|
||||
FBO::useDefault(); // Использование базового буфера для дальнейших работ
|
||||
|
||||
// Отрисовка скайбокса без записи глубины
|
||||
glDepthMask(GL_FALSE);
|
||||
// Используем шейдер для скайбокса
|
||||
skyboxShader.use();
|
||||
// Подключаем текстуру скайбокса
|
||||
skybox_texture.use();
|
||||
// Рендерим куб
|
||||
skybox.render();
|
||||
// Возвращаем запись глубины
|
||||
glDepthMask(GL_TRUE);
|
||||
|
||||
// Отрисовка отладочных лампочек со специальным шейдером
|
||||
bulbShader.use();
|
||||
Light::render(bulbShader, material_data);
|
||||
|
|
Loading…
Reference in New Issue