renderer.c (1068B)
1 #include "renderer.h" 2 3 struct renderer { 4 u32 width, height; 5 }; 6 7 internal struct renderer * 8 create_renderer(struct arena *arena, u32 width, u32 height) 9 { 10 struct renderer *renderer = ALLOC_SIZED(arena, struct renderer); 11 assert(renderer); 12 13 renderer->width = width; 14 renderer->height = height; 15 16 return renderer; 17 } 18 19 RENDERER_BEGIN_FRAME(renderer_begin_frame) 20 { 21 // TODO: implement real frame begin logic, instead of just satisfying 22 // an ASSERT() 23 return (void *) renderer; 24 } 25 26 RENDERER_BEGIN_RENDER_PASS(renderer_begin_render_pass) 27 { 28 } 29 30 RENDERER_CLEAR_SCREEN(renderer_clear_screen) 31 { 32 glClearColor(colour->r, colour->g, colour->b, colour->a); 33 glClear(GL_COLOR_BUFFER_BIT); 34 } 35 36 RENDERER_END_RENDER_PASS(renderer_end_render_pass) 37 { 38 } 39 40 RENDERER_END_FRAME(renderer_end_frame) 41 { 42 } 43 44 internal void 45 load_renderer_api(struct renderer_api *api) 46 { 47 api->begin_frame = renderer_begin_frame; 48 api->begin_render_pass = renderer_begin_render_pass; 49 api->clear_screen = renderer_clear_screen; 50 api->end_render_pass = renderer_end_render_pass; 51 api->end_frame = renderer_end_frame; 52 }