X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp.cpp;h=21f5bcf981ae575bc994f4fb049e5e6a4c5ce900;hb=bee003d1d375789b6533cfd39c65f6d4478f1966;hp=cfb16822897a01027da39d62c3624da6fe7fd52b;hpb=46509f82dcea114b004c53a7f3a9608f2518077f;p=blank.git diff --git a/src/app.cpp b/src/app.cpp index cfb1682..21f5bcf 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -6,20 +6,23 @@ 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); } @@ -27,7 +30,7 @@ Application::Application() Entity &Application::MakeTestEntity(World &world) { Entity &e = world.AddEntity(); e.Position({ 0.0f, 0.0f, 0.0f }); - e.SetShape(world.BlockTypes()[1]->shape, { 1.0f, 1.0f, 0.0f }); + e.SetShape(world.BlockTypes()[1].shape, { 1.0f, 1.0f, 0.0f }); e.AngularVelocity(glm::quat(glm::vec3{ 0.00001f, 0.000006f, 0.000013f })); return e; } @@ -132,12 +135,12 @@ void Application::Update(int dt) { 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(); }