Skip to content

Instantly share code, notes, and snippets.

@kioba
Created November 17, 2015 20:17
Show Gist options
  • Save kioba/d2f2119418ba815cfc01 to your computer and use it in GitHub Desktop.
Save kioba/d2f2119418ba815cfc01 to your computer and use it in GitHub Desktop.
drawing a rectangle creat and draw function
void Rect::create()
{
static float a = 0;
a += 0.01f;
std::vector<float> vertex_buffer_data = {
0.0f + a, 0.0f + a, a,
0.3f + a, 0.0f + a, a,
0.3f + a, 0.3f + a, a,
0.0f + a, 0.0f + a, a,
0.3f + a, 0.3f + a, a,
0.0f + a, 0.3f + a, a
};
std::vector<float> uv_buffer_data = {
0.0f, 1.0f,
1.0f, 1.0f,
1.0f, 0.0f,
0.0f, 1.0f,
1.0f, 0.0f,
0.0f, 0.0f
};
vert_size = vertex_buffer_data.size() / 3;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * vertex_buffer_data.size(), &vertex_buffer_data[0], GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
glGenBuffers(1, &uv_buffer);
glBindBuffer(GL_ARRAY_BUFFER, uv_buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * uv_buffer_data.size(), &uv_buffer_data[0], GL_STATIC_DRAW);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, (void*)0);
glBindVertexArray(0);
}
void Rect::draw() const
{
glm::mat4 MVP = Molten::getInstance().getMVP();
glm::mat4 model = Molten::getInstance().getModel();
MVP = MVP * model;
shader->useShader();
glUniformMatrix4fv(shader->getUniformLoc("MVP"), 1, GL_FALSE, &MVP[0][0]);
glUniform4f(shader->getUniformLoc("obj_color"), obj_color.r, obj_color.g, obj_color.b, obj_color.a);
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, vert_size);
glBindVertexArray(0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment