From 7b6ab890bef13c4c7e05e673f07a12552f99d2a7 Mon Sep 17 00:00:00 2001 From: Meoweg Date: Wed, 4 Nov 2015 19:01:17 +0000 Subject: [PATCH] Add colors --- main.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/main.cpp b/main.cpp index 9949da1..ac48183 100644 --- a/main.cpp +++ b/main.cpp @@ -27,22 +27,30 @@ static float delta_z = 0, delta_x = 0; static const char vertex_shader_source[] = \ "attribute vec4 position; \n"\ +"attribute vec3 color; \n"\ + +"varying vec4 f_color; \n"\ "uniform mat4 view_matrix; \n"\ "void main(void) { \n"\ " gl_Position = view_matrix * position; \n"\ +" f_color = vec4(color, 1.0); \n"\ "} \n"; -static const char fragment_shader_source[] = \ -"void main(void) { \n"\ -" gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); \n"\ -"} \n"; +static const char fragment_shader_source[] = \ +"precision lowp float; \n"\ + +"varying vec4 f_color; \n"\ + +"void main(void) { \n"\ +" gl_FragColor = f_color; \n"\ +"} \n"; static const GLfloat triangle_vertices[] = { - 0.0, 0.0, 0.8, - -0.3, 0.0, 0.0, - 0.3, 0.0, 0.0, + 0.0, 0.0, 0.8, 1.0, 0.0, 0.0, + -0.3, 0.0, 0.0, 0.0, 1.0, 0.0, + 0.3, 0.0, 0.0, 0.0, 0.0, 1.0, }; static GLuint triangle; @@ -74,6 +82,7 @@ int main() glAttachShader(program, vertex_shader); glAttachShader(program, fragment_shader); glBindAttribLocation(program, 0, "position"); + glBindAttribLocation(program, 1, "color"); glLinkProgram(program); glUseProgram(program); @@ -81,9 +90,11 @@ int main() glGenBuffers(1, &triangle); glBindBuffer(GL_ARRAY_BUFFER, triangle); - glBufferData(GL_ARRAY_BUFFER, 3 * 3 * sizeof(GLfloat), triangle_vertices, GL_STATIC_DRAW); - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), reinterpret_cast(0)); + glBufferData(GL_ARRAY_BUFFER, 3 * 6 * sizeof(GLfloat), triangle_vertices, GL_STATIC_DRAW); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), reinterpret_cast(0)); + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(GLfloat), reinterpret_cast(3 * sizeof(GLfloat))); glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); glViewport(0, 0, 640, 480);