Browse Source

add rg_arena to RenderState, and rename rs->arena to asset_arena

main
cinnaboot 5 years ago
parent
commit
48ac0ce1c2
  1. 34
      src/main.cpp

34
src/main.cpp

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

Loading…
Cancel
Save