Files
2014-03-14 01:51:38 +01:00

80 lines
1.4 KiB
C++

#include "Skybox.h"
Skybox::Skybox(CubemapTexture cubemap)
{
m_Cubemap = cubemap;
float cubeVertices[] = {
-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,
};
//std::copy(cubeVertices, cubeVertices + (3*8 - 1), m_CubeVertices);
unsigned int cubeIndices[] = {
// Back
0, 2, 3,
0, 1, 2,
// Right
1, 6, 2,
1, 5, 6,
// Front
5, 7, 6,
5, 4, 7,
// Left
4, 3, 7,
4, 0, 3,
// Top
3, 6, 7,
3, 2, 6,
// Bottom
4, 1, 0,
4, 5, 1,
};
//std::copy(cubeIndices, cubeIndices + (3*12 - 1), m_CubeIndices);
GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, 3 * 8 * sizeof(float), cubeVertices, GL_STATIC_DRAW);
glGenBuffers(1, &ibo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, 3 * 12 * sizeof(int), cubeIndices, GL_STATIC_DRAW);
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
GLERROR("");
}
Skybox::~Skybox()
{
}
void Skybox::Draw()
{
m_Cubemap.Bind(GL_TEXTURE0);
glBindVertexArray(vao);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
glDepthMask(GL_FALSE);
glDrawElements(GL_TRIANGLES, 3 * 12, GL_UNSIGNED_INT, 0);
glDepthMask(GL_TRUE);
}