#pragma once #include #if defined (_WIN32) #include #else #include #endif #include #include #include "camera.h" #include "entity.h" #include "hexgrid.h" #include "util.h" struct SDL_Handles { SDL_Window *window; SDL_GLContext glContext; SDL_DisplayMode currentDisplayMode; std::vector texSurfaces; }; struct rg_point_light; struct render_state { v2i viewport_dims; bool is_debug_draw; SDL_Handles handles; camera cam; util_image palette_image; GLuint palette_id = UINT_MAX; render_group* filled_hex_render_group; render_group* hex_line_render_group; render_group* debug_render_group; // NOTE: entity render groups are stored on the entity object rg_shader_program default_shader; rg_point_light* lights = nullptr; uint num_lights = 0; uint max_lights = 0; }; bool renInit(render_state* rs); void renFreeBuffers(render_state* rs); bool renCreateScene(render_state* rs, Entity* entities, uint32 entity_count); void renRenderFrame(render_state* rs, std::vector* hexes, Entity* entities, uint32 entity_count); void renRenderDebug(render_state* rs, std::vector &vertices);