terrain-gen/src/simplequad.cpp

60 lines
1.3 KiB
C++

#include "simplequad.h"
SimpleQuad::SimpleQuad()
{
}
SimpleQuad::~SimpleQuad()
{
glDeleteVertexArrays(1, &m_vao);
glDeleteBuffers(1, &m_vbo);
}
void SimpleQuad::initGl(Shader* program)
{
initializeOpenGLFunctions();
m_program = program;
glGenBuffers(1, &m_vbo);
glGenVertexArrays(1, &m_vao);
int locationPos = m_program->attributeLocation("in_position");
GLfloat vertices[] = {
-1, -1,
1, -1,
1, 1,
-1, -1,
1, 1,
-1, 1
};
glBindBuffer(GL_ARRAY_BUFFER, m_vbo);
glBufferData(GL_ARRAY_BUFFER,
GLsizei(12 * sizeof(GLfloat)),
vertices,
GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(m_vao);
glBindBuffer(GL_ARRAY_BUFFER, m_vbo);
glVertexAttribPointer(GLuint(locationPos), 2, GL_FLOAT, GL_FALSE, 0, reinterpret_cast<void *>(0));
glEnableVertexAttribArray(GLuint(locationPos));
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
void SimpleQuad::render()
{
glDisable(GL_DEPTH_TEST);
m_program->bind();
glBindVertexArray(m_vao);
glDrawArrays(GL_TRIANGLES, 0, GLsizei(6));
glBindVertexArray(0);
m_program->release();
glEnable(GL_DEPTH_TEST);
}