Browse Source

update render_group_fix demo

render_group_fix
cinnaboot 5 years ago
parent
commit
b8b923c5c1
  1. 42
      examples/render_groups/main.cpp

42
examples/render_groups/main.cpp

@ -112,6 +112,18 @@ doFrameCallbackPre(render_state* rs)
square.world_transform * glm::vec4(10000, 0, -1000, 1));
rs->lights->needs_update = true;
#endif
static input_state is = {};
inputProcessEvents(&is);
if (is.window_closed || is.escape) {
rs->running = false;
return;
}
static float angle = 1.2 / 60; // NOTE: 60 FPS
static glm::vec3 axis(0, 1, 0);
entity* spaceship = &rs->render_groups->groups[0].entities[0];
entRotate(spaceship, angle, axis);
}
int
@ -124,6 +136,7 @@ main()
return 1;
}
#if 0
cameraInitPerspective(
rs->cam,
glm::vec3(0, -2000, 0),
@ -134,7 +147,6 @@ main()
renAddLight(rs, glm::vec3());
renAddLight(rs, glm::vec3());
#if 0
// FIXME: this introduces a potential buffer overrun. Need to implement
// a memory manager for render_groups, eg:
// renPushGroup(rs, new_group)
@ -191,25 +203,41 @@ main()
assert(ret != nullptr);
#endif
cameraInitPerspective(
rs->cam,
glm::vec3(0, 0, -50),
glm::vec3(0, 0, 0),
glm::vec3(0,1,0)
);
// NOTE: testing entity system with new asset structures
// FIXME: remove mesh.h, mesh.cpp
// FIXME: need a debug shader that shows geometry and normals
// FIXME: remove platform_wait_for_vblank
// FIXME: clean up examples with new asset system
// FIXME: merger render_group_fix branch back into master
// FIXME: make a test case for overflowing default array sizes, rg->assets
// rg_info->groups, render_group->enitities
// FIXME: look for glm::mat4 in structs, and replace with pointers
// FIXME: better shader abstraction, see below
shader_wrapper sw = { DEFAULT_SHADER, rs->default_shader, nullptr };
render_group* rg = rgAlloc(rs->render_groups, 64, sw);
#if 0
entity* e =
rgAppend(rg, rs->assets, rs->arena, "../data/blender/spaceship.gltf");
//rgAppend(rg, rs->assets, rs->arena, "../data/blender/icosphere.gltf");
uint scale = 200;
entScale(*e, glm::vec3(scale, scale, scale));
assert(e != nullptr);
uint scale = 4;
//entRotate(e, -1 * M_PI_2, glm::vec3(1, 0, 0));
#else
entity* e =
rgAppend(rg, rs->assets, rs->arena, "../data/blender/icosphere.gltf");
assert(e != nullptr);
uint scale = 20;
#endif
entScale(*e, glm::vec3(scale, scale, scale));
renDoRenderLoop(rs, 60);
//renRenderFrame(rs);
//renDoRenderLoop(rs, 60);
renDoRenderLoop(rs, 60, doFrameCallbackPre);
renShutdown(rs);
return 0;

Loading…
Cancel
Save