diff options
| author | Aaditya Dhruv <[email protected]> | 2026-01-25 15:10:37 -0600 |
|---|---|---|
| committer | Aaditya Dhruv <[email protected]> | 2026-01-25 15:10:37 -0600 |
| commit | 118980e02e59ff31871df59dce257075394f3533 (patch) | |
| tree | 26fba4492bb4b561d21bf49b35d892a821d54fab /src/junkcraft.c | |
| parent | 0e6e1245b70df4dfcba135d50e1b53d1a8ef7eb8 (diff) | |
wip
Diffstat (limited to 'src/junkcraft.c')
| -rw-r--r-- | src/junkcraft.c | 148 |
1 files changed, 30 insertions, 118 deletions
diff --git a/src/junkcraft.c b/src/junkcraft.c index 0d27175..d914973 100644 --- a/src/junkcraft.c +++ b/src/junkcraft.c @@ -3,130 +3,42 @@ #include <SDL2/SDL_rect.h> #include <signal.h> #include <stdio.h> -#include <stdlib.h> -#include "SDL2/SDL.h" -#include "SDL2/SDL_video.h" #include "SDL2/SDL_render.h" #include "glad/glad.h" - -const float vertices[] = { - 0.0f, 0.5f, 0.0f, // x,y,z of first point. - 0.5f, -0.5f, 0.0f, // x,y,z of second point. - -0.5f, -0.5f, 0.0f // x,y,z of third point. -}; - - -const char* fragment_shader = -"#version 410 core\n" -"out vec4 frag_colour;" -"in vec3 color;" -"void main() {" -" frag_colour = vec4( color, 1.0 );" -"}"; - -const char* vertex_shader = -"#version 410 core\n" -"in vec3 vp;" -"out vec3 color;" -"void main() {" -" gl_Position = vec4( vp, 1.0 );" -" color = vp;" -"}"; - -GLuint shader_init() { - GLuint vs = glCreateShader( GL_VERTEX_SHADER ); -glShaderSource( vs, 1, &vertex_shader, NULL ); -glCompileShader( vs ); -GLuint fs = glCreateShader( GL_FRAGMENT_SHADER ); -glShaderSource( fs, 1, &fragment_shader, NULL ); -glCompileShader( fs ); -GLuint shader_program = glCreateProgram(); -glAttachShader( shader_program, fs ); -glAttachShader( shader_program, vs ); -glLinkProgram( shader_program ); -return shader_program; -} - -GLuint vbo; - -void quit(int _val) { - fprintf(stderr, "Quitting"); - exit(1); -} - -void gl_buffer_init() { - //tell opengl we want mem for 1 buffer object - glGenBuffers(1, &vbo); - // set aray_buffer to above - glBindBuffer(GL_ARRAY_BUFFER, vbo); - // copy vertex data to gpu memory - glBufferData(GL_ARRAY_BUFFER, 9* sizeof(float), vertices, GL_STATIC_DRAW); - // cleanup - glBindBuffer(GL_ARRAY_BUFFER, 0); +#include "shader.h" +#include "block.h" +#include "window.h" + +// Global OpenGL Context +GLuint shader_program; +int game_loop = 1; + +void draw(struct window* window, struct block* block) { + while (game_loop) { + SDL_Event event; + while (SDL_PollEvent(&event)) { + // Quit game + if (event.type == SDL_QUIT) { + game_loop = 0; + } + } + glClear(GL_COLOR_BUFFER_BIT); + glUseProgram(shader_program); + block_draw(block); + SDL_RenderPresent(window->renderer); + } } int main() { - signal(SIGINT, quit); - SDL_Init(SDL_INIT_VIDEO); - // This will call SDL_GL_LoadLibrary so you don't need glad to do anything - SDL_Window* window = SDL_CreateWindow("Junkcraft", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_OPENGL); - - SDL_GLContext* ctx = SDL_GL_CreateContext(window); - // Let GLAD use the SDL GetProcAddress loader instead of using its own - int version = gladLoadGLLoader(SDL_GL_GetProcAddress); - if (version == 0) { - printf("Failed to initialize OpenGL context\n"); + struct window window = {0}; + if (window_init(&window) != 0) { return -1; } - printf("Loaded OpenGL %d\n", version); - - - if (window == NULL) { - perror("Failed to create window!"); - SDL_DestroyWindow(window); - SDL_Quit(); - return -1; - } - - SDL_Renderer* render = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); - if (render == NULL) { - perror("Failed to create renderer!"); - SDL_DestroyWindow(window); - SDL_Quit(); - return -1; - } - - // SDL_RenderClear(render); - // SDL_Rect rect = { 0, 0, 100, 100 }; - // SDL_SetRenderDrawColor(render, 255, 0, 0, SDL_ALPHA_OPAQUE); - SDL_ShowWindow(window); - // SDL_RenderFillRect(render, &rect); - - - gl_buffer_init(); - - GLuint array; - // Create VAO - glGenVertexArrays(1, &array); - glBindVertexArray(array); - // set array_buffer to pos buffer obj - glBindBuffer(GL_ARRAY_BUFFER, vbo); - /// allow vertex shader - // describe data and enable - glEnableVertexAttribArray(0); - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); - // draw data as a triangle - //glDrawArrays(GL_TRIANGLES, 0, 3); - // set viewport - //glViewport(0, 0, 200, 100); - //final - GLuint shader_program = shader_init(); - while (1) { - glClear(GL_COLOR_BUFFER_BIT); - glUseProgram( shader_program ); - glBindVertexArray(array); - glDrawArrays(GL_TRIANGLES, 0, 3); - SDL_RenderPresent(render); - } + struct block blk = {0}; + vec3 pos = { 0, 0, 0 }; + block_init(pos, &blk); + shader_program = shader_init(); + draw(&window, &blk); + window_cleanup(&window); return 0; } |
