Browse Source

remove global render state from renderer.cpp

master
cinnaboot 8 years ago
parent
commit
5c0fd9941b
  1. 21
      src/renderer.cpp

21
src/renderer.cpp

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

Loading…
Cancel
Save