60 lines
1.3 KiB
C++
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);
|
|
}
|