diff --git a/headers/shapes.h b/headers/shapes.h index 77b7c09..e97b32d 100644 --- a/headers/shapes.h +++ b/headers/shapes.h @@ -1,18 +1,25 @@ -float tri_vertices[] = {-0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f}; +float tri_vertices[] = {-0.5f, -0.5f, 0.0f, 0.5f, -0.5f, + 0.0f, 0.0f, 0.5f, 0.0f}; +float tri_rgb_vertices[] = { + 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, /**/ + -0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, /**/ + 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f /**/ +}; float sqr_vertices[] = { - 0.5f, 0.5f, 0.0f, /*top R*/ - 0.5f, -0.5f, 0.0f, /*bottom R*/ - -0.5f, -0.5f, 0.0f, /*bottom L*/ - -0.5f, 0.5f, 0.0f/*top R*/ + 0.5f, 0.5f, 0.0f, /*top R*/ + 0.5f, -0.5f, 0.0f, /*bottom R*/ + -0.5f, -0.5f, 0.0f, /*bottom L*/ + -0.5f, 0.5f, 0.0f /*top R*/ }; unsigned int sqr_indices[] = { - 0, 1, 3,/*tl triangle*/ - 1, 2, 3 /*br triangle*/ + 0, 1, 3, /*tl triangle*/ + 1, 2, 3 /*br triangle*/ }; -const char *basicVertexShaderSource = "#version 330 core\n" +const char *basicVertexShaderSource = + "#version 330 core\n" "layout (location = 0) in vec3 aPos;\n" "out vec3 color;\n" "void main()\n" @@ -22,9 +29,28 @@ const char *basicVertexShaderSource = "#version 330 core\n" "}\0"; const char *basicFragmentShaderSource = "#version 330 core\n" - "out vec3 FragColor;\n" - "in vec3 color;" - "void main()\n" - "{\n" - " FragColor = (color/2+.5)*1.5;\n" - "}\n"; + "out vec3 FragColor;\n" + "in vec3 color;" + "void main()\n" + "{\n" + " FragColor = (color/2+.5)*1.5;\n" + "}\n"; + +const char *rgbVertexShaderSource = + "#version 330 core\n" + "layout (location = 0) in vec3 aPos;\n" + "layout (location = 1) in vec3 aColor;\n" + "out vec3 color;\n" + "void main()\n" + "{\n" + " color = aColor;\n" + " gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" + "}\0"; + +const char *rgbFragmentShaderSource = "#version 330 core\n" + "out vec4 FragColor;\n" + "in vec3 color;\n" + "void main()\n" + "{\n" + " FragColor = vec4(color, 1.0);\n" + "}\0"; diff --git a/src/main.cpp b/src/main.cpp index 763d2b7..38778df 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -39,17 +39,21 @@ int main(void) { glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, sizeof(sqr_vertices), sqr_vertices, + glBufferData(GL_ARRAY_BUFFER, sizeof(tri_rgb_vertices), tri_rgb_vertices, GL_STATIC_DRAW); - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void *)0); glEnableVertexAttribArray(0); + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void *)(3 * sizeof(float))); + glEnableVertexAttribArray(1); + /* glGenBuffers(1, &EBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(sqr_indices), sqr_indices, GL_STATIC_DRAW); + */ unsigned int shaderProgram = - shaderProgramCMPL(basicVertexShaderSource, basicFragmentShaderSource); + shaderProgramCMPL(rgbVertexShaderSource, rgbFragmentShaderSource); glUseProgram(shaderProgram); while (!glfwWindowShouldClose(window)) { @@ -61,7 +65,8 @@ int main(void) { glUseProgram(shaderProgram); glBindVertexArray(VAO); - glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); + //glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); + glDrawArrays(GL_TRIANGLES, 0, 3); glfwSwapBuffers(window); glfwPollEvents();