// main.c #include #include #include "gl_utils.h" int main(void) { int winW = 800; int winH = 600; GLFWwindow* window = init_glfw_glad("Falling Sand - Fullscreen Quad", winW, winH); if (!window) { return EXIT_FAILURE; } printf("Renderer: %s\n", (const char*)glGetString(GL_RENDERER)); printf("OpenGL: %s\n", (const char*)glGetString(GL_VERSION)); printf("GLSL: %s\n", (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION)); // --- Create fullscreen triangle geometry (VAO + VBO) --- float vertices[] = { // x, y -1.0f, -1.0f, 3.0f, -1.0f, -1.0f, 3.0f }; GLuint vao = 0, vbo = 0; glGenVertexArrays(1, &vao); glGenBuffers(1, &vbo); glBindVertexArray(vao); glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); // layout(location = 0) in vec2 aPos; glEnableVertexAttribArray(0); glVertexAttribPointer( 0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0 ); glBindVertexArray(0); // --- Create shader program --- GLuint program = create_program_from_files( "shaders/fullscreen.vert", "shaders/gradient.frag" ); glUseProgram(program); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // --- Main loop --- while (!glfwWindowShouldClose(window)) { glfwPollEvents(); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(program); glBindVertexArray(vao); glDrawArrays(GL_TRIANGLES, 0, 3); glfwSwapBuffers(window); } // --- Cleanup --- glDeleteProgram(program); glDeleteBuffers(1, &vbo); glDeleteVertexArrays(1, &vao); glfwDestroyWindow(window); glfwTerminate(); return EXIT_SUCCESS; }