diff --git a/src/renderer.cpp b/src/renderer.cpp index 4c1ded0..9fb5f26 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -39,13 +39,11 @@ void initMatrices(projection_type p); void openglDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); // TODO: move hex logic to new file -bool initHexGridBuffers(std::vector* hexes); +bool initHexGridBuffers(render_state* rs, std::vector* hexes); void fillTriangleBufferFromHex(GLfloat buf[], int idx, const hex_info &hex); void fillColorBuffer(GLfloat buf[], int len, std::vector* hexes); void fillHexLineBuffer(GLfloat buf[], int len, std::vector* hexes); -static render_state* g_render_state; - // interface @@ -53,8 +51,6 @@ static render_state* g_render_state; bool initRenderer(render_state* rs) { - g_render_state = rs; - SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); @@ -176,7 +172,7 @@ createScene(render_state* rs, std::vector* hexes, Entity* entities, ui entities[i].ren_group->shader = rs->default_shader; } - if (!initHexGridBuffers(hexes)) + if (!initHexGridBuffers(rs, hexes)) return false; // debug draw vertices @@ -214,9 +210,9 @@ renderFrame(render_state* rs, std::vector *hexes, Entity* entities, ui glClearColor(g_clear_col.R, g_clear_col.G, g_clear_col.B, g_clear_col.A); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glm::mat4 m_model = g_render_state->cam.model; - glm::mat4 m_view = g_render_state->cam.view; - glm::mat4 m_projection = g_render_state->cam.projection; + glm::mat4 m_model = rs->cam.model; + glm::mat4 m_view = rs->cam.view; + glm::mat4 m_projection = rs->cam.projection; // filled hexes @@ -248,8 +244,8 @@ renderDebug(render_state* rs, std::vector &vertices) buf[6] = vertices[2].x; buf[7] = vertices[2].y; buf[8] = 0; buf[9] = vertices[3].x; buf[10] = vertices[3].y; buf[11] = 0; - rgDraw(rs->debug_render_group, g_render_state->cam.model, g_render_state->cam.view, - g_render_state->cam.projection, rs->lights, rs->num_lights, true); + rgDraw(rs->debug_render_group, rs->cam.model, rs->cam.view, + rs->cam.projection, rs->lights, rs->num_lights, true); } @@ -268,7 +264,7 @@ openglDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, // TODO: move hex logic to new file bool -initHexGridBuffers(std::vector* hexes) +initHexGridBuffers(render_state* rs, std::vector* hexes) { // TODO: index duplicate vertices // 6 triangles * 3 vertices per triangle * 3 floats per vertex = 54 @@ -276,7 +272,6 @@ initHexGridBuffers(std::vector* hexes) uint line_buf_len = hexes->size() * line_vertices_per_hex * 3; // 3 floats per vertex uint vbuf_len = hexes->size() * 6 * 3 * 3; - render_state* rs = g_render_state; rs->filled_hex_render_group = rgInitSingle(rs->default_shader, vbuf_len, true); if (rs->filled_hex_render_group == nullptr)