diff --git a/src/main.cpp b/src/main.cpp index 2b4aafb..5a14410 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,7 +24,7 @@ struct SDLHandles struct RenderState { - memory_arena* arena; + memory_arena* asset_arena; transforms* xforms; // NOTE: would be part of camera in libTangerine SDLHandles* handles; GLContext* gl_ctx; @@ -33,6 +33,7 @@ struct RenderState // FIXME: WIP // TODO: need to initialize groups + memory_arena* rg_arena; u32 num_render_groups; u32 max_render_groups; RenderGroup* render_groups; @@ -61,7 +62,7 @@ getModel(RenderState* rs, const char* filepath) model* mdl = assetGetCached(rs->assets, utilFNV64a_str(filepath)); if (!mdl) - mdl = assetLoadFromFile(rs->assets, rs->arena, filepath); + mdl = assetLoadFromFile(rs->assets, rs->asset_arena, filepath); return mdl; } @@ -109,21 +110,19 @@ initAssets(memory_arena* arena, } RenderState* -initRenderState(memory_arena* arena) +initRenderState() { RenderState* rs = UTIL_ALLOC(1, RenderState); if (rs) { - rs->arena = arena; - rs->assets = initAssets(arena); - rs->gl_ctx = initGLContext(arena); - rs->xforms = ARENA_ALLOC(arena, transforms, 1); - //rs->handles = ARENA_ALLOC(arena, SDLHandles, 1); + rs->asset_arena = arenaInit(DEFAULT_ARENA_SIZE); + rs->rg_arena = arenaInit(DEFAULT_ARENA_SIZE); + rs->assets = initAssets(rs->asset_arena); + rs->gl_ctx = initGLContext(rs->asset_arena); + rs->xforms = ARENA_ALLOC(rs->asset_arena, transforms, 1); rs->handles = UTIL_ALLOC(1, SDLHandles); rs->max_gl_meshes = 256; - // TODO: should have a different arena for gl_meshes, because these will - // be the most volatile objects - rs->gl_meshes = ARENA_ALLOC(arena, GLmesh, rs->max_gl_meshes); + rs->gl_meshes = ARENA_ALLOC(rs->rg_arena, GLmesh, rs->max_gl_meshes); } return rs; @@ -133,7 +132,7 @@ void freeRenderState(RenderState*& rs) { if (rs) { - arenaFree(rs->arena); + arenaFree(rs->asset_arena); utilSafeFree(rs->handles); utilSafeFree(rs); rs = nullptr; @@ -197,7 +196,7 @@ initGraphics(SDLHandles* handles) bool addShaders(RenderState* rs) { - if (!addShaderProgram(rs->arena, + if (!addShaderProgram(rs->asset_arena, rs->gl_ctx, "../data/shader.vert", "../data/shader.frag", @@ -207,7 +206,7 @@ addShaders(RenderState* rs) return false; } - if (!addShaderProgram(rs->arena, + if (!addShaderProgram(rs->asset_arena, rs->gl_ctx, "../data/colored_vertices.vert", "../data/colored_vertices.frag", @@ -217,7 +216,7 @@ addShaders(RenderState* rs) return false; } - if (!addShaderProgram(rs->arena, + if (!addShaderProgram(rs->asset_arena, rs->gl_ctx, "../data/debug.vert", "../data/debug.frag", @@ -343,8 +342,7 @@ quit(RenderState*& rs) int main() { - memory_arena* arena = arenaInit(DEFAULT_ARENA_SIZE); - RenderState* rs = initRenderState(arena); + RenderState* rs = initRenderState(); if (!initGraphics(rs->handles)) return 1; @@ -353,7 +351,7 @@ main() // FIXME: need to test this with another shader that has another UBO gl_buffer& ubo = rs->gl_ctx->uniform_buffers[rs->gl_ctx->num_ubos++]; - initTransforms(arena, rs->xforms, &ubo, rs->gl_ctx); + initTransforms(rs->asset_arena, rs->xforms, &ubo, rs->gl_ctx); if (!addShaders(rs)) { LOG(Error) << "error loading shaders\n";