diff --git a/TODO.md b/TODO.md index ff71ea6..c0864dd 100644 --- a/TODO.md +++ b/TODO.md @@ -4,7 +4,6 @@ - add interface to render_group for glBindBuffer->glBufferSubData? - hexgrid.cpp then wouldn't need to call gl functions directly - init HexGrid render groups in hgInit and remove slCreateHexRenderGroups -- remove renCreateScene, and put initDebug renderGroup somewhere - position entities on grid hexes - pathfinding - assimp animation diff --git a/src/hexgame.cpp b/src/hexgame.cpp index 86e7749..937a8ba 100644 --- a/src/hexgame.cpp +++ b/src/hexgame.cpp @@ -137,12 +137,6 @@ init() return false; } - if (!renCreateScene(g_render_state, g_game_state->entities, g_game_state->entity_count)) - { - LOG(ERROR) << "Error in vertex data, exiting\n"; - return false; - } - #if defined(_WIN32) LOG(DEBUG) << "TODO: Test SDL_Delay frame timer in win32\n"; diff --git a/src/renderer.cpp b/src/renderer.cpp index 2573ca2..78a0a61 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -34,6 +34,7 @@ util_RGBA g_clear_col = {1.f,1.f,1.f,1.f}; // forward declarations void openglDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam); +bool initDebugRenderGroup(render_state* rs); // interface @@ -128,6 +129,11 @@ renInit(render_state* rs) return false; } + if (!initDebugRenderGroup(rs)) { + LOG(ERROR) << "Error initializing debug render group\n"; + return false; + } + g_clear_col.R = CLEAR_COL_R; g_clear_col.B = CLEAR_COL_B; g_clear_col.G = CLEAR_COL_G; @@ -147,39 +153,6 @@ renFreeBuffers(render_state* rs) rgFree(rs->debug_render_group); } -bool -renCreateScene(render_state* rs, Entity* entities, uint32 entity_count) -{ - // entities -#if 0 - for (uint i = 0; i < entity_count; i++) { - rgInitEntity(&entities[i]); - entities[i].ren_group->shader = rs->default_shader; - } -#endif - // debug draw vertices - - uint debug_buf_len = 12; // 4 vertices, 3 floats per vertex - rs->debug_render_group = rgInitSingle(rs->default_shader, debug_buf_len, true, 0, GL_LINE_LOOP); - - if (rs->debug_render_group == nullptr) - return false; - - gl_buffer& debug_vertex_buf = rs->debug_render_group->render_objects[0]->vertex_buffer; - gl_buffer& debug_normal_buf = rs->debug_render_group->render_objects[0]->normal_buffer; - - for (uint i = 0; i < debug_buf_len; i += 3) { - debug_normal_buf.buffer[i] = 0.f; - debug_normal_buf.buffer[i + 1] = 0.f; - debug_normal_buf.buffer[i + 2] = 1.f; - } - - rgInitGLFloatBuffer(&debug_vertex_buf, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER); - rgInitGLFloatBuffer(&debug_normal_buf, GL_STATIC_DRAW, GL_ARRAY_BUFFER); - - return true; -} - void renRenderFrame(render_state* rs, hexgrid& hg, Entity* entities, uint32 entity_count) { @@ -235,3 +208,26 @@ openglDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, << ", message: " << message << "\n"; } +bool +initDebugRenderGroup(render_state* rs) +{ + uint debug_buf_len = 12; // 4 vertices, 3 floats per vertex + rs->debug_render_group = rgInitSingle(rs->default_shader, debug_buf_len, true, 0, GL_LINE_LOOP); + + if (rs->debug_render_group == nullptr) + return false; + + gl_buffer& debug_vertex_buf = rs->debug_render_group->render_objects[0]->vertex_buffer; + gl_buffer& debug_normal_buf = rs->debug_render_group->render_objects[0]->normal_buffer; + + for (uint i = 0; i < debug_buf_len; i += 3) { + debug_normal_buf.buffer[i] = 0.f; + debug_normal_buf.buffer[i + 1] = 0.f; + debug_normal_buf.buffer[i + 2] = 1.f; + } + + rgInitGLFloatBuffer(&debug_vertex_buf, GL_DYNAMIC_DRAW, GL_ARRAY_BUFFER); + rgInitGLFloatBuffer(&debug_normal_buf, GL_STATIC_DRAW, GL_ARRAY_BUFFER); + + return true; +} diff --git a/src/renderer.h b/src/renderer.h index 0790c36..913f3bc 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -53,8 +53,6 @@ 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, hexgrid& hg, Entity* entities, uint32 entity_count); void renRenderDebug(render_state* rs, std::vector &vertices);