fallingCand/main.c
2025-11-29 12:29:08 -08:00

82 lines
1.8 KiB
C

// main.c
#include <stdio.h>
#include <stdlib.h>
#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;
}