namespace blank {
-Application::Application()
+Application::Application(const Config &config)
: init_sdl()
, init_img()
-, init_gl()
+, init_gl(config.doublebuf, config.multisampling)
, window()
, ctx(window.CreateContext())
, init_glew()
-, program()
+, chunk_prog()
+, entity_prog()
, cam()
-, world()
-, interface(world)
+, world(config.world)
+, interface(config.interface, world)
, test_controller(MakeTestEntity(world))
, running(false) {
- GLContext::EnableVSync();
+ if (config.vsync) {
+ GLContext::EnableVSync();
+ }
glClearColor(0.0, 0.0, 0.0, 1.0);
}
void Application::Render() {
GLContext::Clear();
- program.Activate();
+ chunk_prog.SetProjection(cam.Projection());
+ entity_prog.SetProjection(cam.Projection());
- program.SetProjection(cam.Projection());
- world.Render(program);
+ world.Render(chunk_prog, entity_prog);
- interface.Render(program);
+ interface.Render(entity_prog);
window.Flip();
}