diff --git a/README.org b/README.org index db0f386..1eb48a7 100644 --- a/README.org +++ b/README.org @@ -17,5 +17,6 @@ For faster compilation, compile glad; gcc -Ilibs/glad/include/ -c libs/glad/src/glad.c #+end_src * Terms -VBO - vertex buffer objects -VAO - vertex array object +VBO - Vertex Buffer Objects +VAO - Vertex Array Object +EBO - Element Buffer Object diff --git a/main.c b/main.c index d5303e1..ca5bd24 100644 --- a/main.c +++ b/main.c @@ -110,17 +110,25 @@ int main(void) { glDeleteShader(fragmentShader); float vertices[] = { - -0.5f, -0.5f, 0.0f, - 0.5f, -0.5f, 0.0f, - 0.0f, 0.5f, 0.0f - }; + 0.5f, 0.5f, 0.0f, // top right + 0.5f, -0.5f, 0.0f, // bottom right + -0.5f, -0.5f, 0.0f, // bottom left + -0.5f, 0.5f, 0.0f // top left + }; + unsigned int indices[] = { // note that we start from 0! + 0, 1, 3, // first triangle + 1, 2, 3 // second triangle + }; - unsigned int VBO, VAO; + unsigned int VBO, VAO, EBO; glGenVertexArrays(1, &VAO); + glGenBuffers(1, &EBO); glGenBuffers(1, &VBO); glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); @@ -136,7 +144,10 @@ int main(void) { glUseProgram(shaderProgram); glBindVertexArray(VAO); - glDrawArrays(GL_TRIANGLES, 0, 3); + // glDrawArrays(GL_TRIANGLES, 0, 3); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); glfwSwapBuffers(window); glfwPollEvents();