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
{
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";

Loading…
Cancel
Save