diff --git a/main.c b/main.c index ca5bd24..67b8698 100644 --- a/main.c +++ b/main.c @@ -28,7 +28,7 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height) glViewport(0, 0, width, height); SCREEN_WIDTH = width; SCREEN_HEIGHT = height; -} +} void processInput(GLFWwindow *window) { @@ -107,33 +107,60 @@ int main(void) { checkCode(success, "Failed to link shader program"); glDeleteShader(vertexShader); - glDeleteShader(fragmentShader); + glDeleteShader(fragmentShader); - float vertices[] = { - 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 + // float vertices[] = { + // 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 + // }; + + // float vertices[] = { + // -0.5f, -0.5f, 0.0f, + // 0.5f, -0.5f, 0.0f, + // 0.0f, 0.5f, 0.0f + // }; + + float v1[] = { + -1.0f, -0.5f, 0.0f, // -0.5, -0.5 + 0.0f, -0.5f, 0.0f,// 0.5, -0.5 + -0.5f, 0.5f, 0.0f// 0.0, 0.5 }; - unsigned int indices[] = { // note that we start from 0! - 0, 1, 3, // first triangle - 1, 2, 3 // second triangle - }; - 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); + float v2[] = { + 0.0f, -0.5f, 0.0f, + 1.0f, -0.5f, 0.0f, + 0.5f, 0.5f, 0.0f + }; + + GLuint vaos[2]; + GLuint vbos[2]; + unsigned int VBO1, VBO2, EBO; + glGenVertexArrays(2, vaos); + // glGenBuffers(1, &EBO); + glGenBuffers(2, vbos); + + glBindVertexArray(vaos[0]); + glBindBuffer(GL_ARRAY_BUFFER, vbos[0]); + glBufferData(GL_ARRAY_BUFFER, sizeof(v1), v1, GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); - glEnableVertexAttribArray(0); + glEnableVertexAttribArray(0); + + glBindVertexArray(vaos[1]); + glBindBuffer(GL_ARRAY_BUFFER, vbos[1]); + glBufferData(GL_ARRAY_BUFFER, sizeof(v2), v2, GL_STATIC_DRAW); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); + glEnableVertexAttribArray(0); + // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + // glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindVertexArray(0); + glBindVertexArray(0); while (!glfwWindowShouldClose(window)) { processInput(window); @@ -141,20 +168,22 @@ int main(void) { glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); - glUseProgram(shaderProgram); - glBindVertexArray(VAO); - // 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); + glBindVertexArray(vaos[0]); + glDrawArrays(GL_TRIANGLES, 0, 3); + glBindVertexArray(vaos[1]); + 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(); + glfwPollEvents(); } - glDeleteVertexArrays(1, &VAO); - glDeleteBuffers(1, &VBO); + glDeleteVertexArrays(2, vaos); + glDeleteBuffers(1, &VBO1); + glDeleteBuffers(1, &VBO2); glDeleteProgram(shaderProgram); glfwTerminate(); return 0;