Colored triangles with VAO and VBO

This commit is contained in:
Caesar2011
2016-09-05 18:38:53 +02:00
parent 866fabdf45
commit 433983e4ff
5 changed files with 87 additions and 41 deletions

View File

@@ -169,10 +169,6 @@ GLuint LoadShaders(const char * vertex_file_path,const char * fragment_file_path
int main(int argc, char* args[]) {
GLFWwindow* window;
GLuint tex_jpe;
GLuint tex_jpg;
GLuint tex_gif;
GLuint tex_png;
GLuint tex_bmp;
int textw, texth;
int timer = 0;
@@ -213,15 +209,56 @@ int main(int argc, char* args[]) {
}
// INIT
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
// An array of 3 vectors which represents 3 vertices
static const GLfloat g_vertex_buffer_data[] = {
-1.0f, -1.0f, 0.0f, // (bottom - left ) TRIANGLE 1
1.0f, -1.0f, 0.0f, // (bottom - right)
-1.0f, 1.0f, 0.0f, // (top - left )
1.0f, 1.0f, 0.0f, // (top - right) TRIANGLE 2
1.0f, -1.0f, 0.0f, // (bottom - right)
-1.0f, 1.0f, 0.0f, // (top - left )
};
// One color for each vertex. They were generated randomly.
static const GLfloat g_color_buffer_data[] = {
0.583f, 0.771f, 0.014f,
0.609f, 0.115f, 0.436f,
0.327f, 0.483f, 0.844f,
0.822f, 0.569f, 0.201f,
0.435f, 0.602f, 0.223f,
0.310f, 0.747f, 0.185f,
};
// Identify our vertex buffer
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
// Identify our color buffer
GLuint colorbuffer;
glGenBuffers(1, &colorbuffer);
glBindBuffer(GL_ARRAY_BUFFER, colorbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_color_buffer_data), g_color_buffer_data, GL_STATIC_DRAW);
tex_jpe=LoadTexture("../img/tests/test.jpeg",&textw,&texth);
//tex_jpg=LoadTexture("../img/tests/test.jpg",&textw,&texth);
//tex_png=LoadTexture("../img/tests/test.png",&textw,&texth);
//tex_bmp=LoadTexture("../img/tests/test.bmp",&textw,&texth);
GLuint programID = LoadShaders("trimap.vertexshader", "trimap.fragmentshader");
printf("%d", programID);
GLint textureLocation = glGetUniformLocationARB(programID, "texture");
glUniform1iARB(textureLocation, tex_jpe);
//GLint textureLocation = glGetUniformLocationARB(programID, "myTextureSampler");
//glUniform1iARB(textureLocation, tex_jpe);
// INIT END
/* Loop until the user closes the window */
@@ -234,21 +271,35 @@ int main(int argc, char* args[]) {
glUseProgram(programID);
// RENDER
/*if (timer<200)
DrawTexture(50,50,tex_jpe,textw,texth);
else if (timer<400)
DrawTexture(50,50,tex_jpg,textw,texth);
else if (timer<600)
DrawTexture(50,50,tex_png,textw,texth);
else
DrawTexture(50,50,tex_bmp,textw,texth);*/
glBegin(GL_QUADS);
glTexCoord2d(0.0,0.0); glVertex2f(-1, -1);
glTexCoord2d(1.0,0.0); glVertex2f(1, -1);
glTexCoord2d(1.0,1.0); glVertex2f(1, 0);
glTexCoord2d(0.0,1.0); glVertex2f(-1, 0);
glEnd();
// 1rst attribute buffer : vertices
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
// 2nd attribute buffer : colors
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, colorbuffer);
glVertexAttribPointer(
1, // attribute. No particular reason for 1, but must match the layout in the shader.
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
// Draw the triangle !
glDrawArrays(GL_TRIANGLES, 0, 2*3); // 2*3 indices starting at 0 -> 2 triangles -> 1 square
glDisableVertexAttribArray(0);
// RENDER END
/* Swap front and back buffers */