X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tools%2Fviewer.cpp;h=a1853e922f19485097ee644e80900b76c9913b1f;hb=7f03ee52e8af5f857e44702b6d1c2822a51c62ef;hp=2582b887ffcd51256fcfc0b0bd40be9d6e0a6bef;hpb=2bcdae2a8c8067a7c4a413fabe60283fadf6713b;p=libs%2Fgl.git diff --git a/tools/viewer.cpp b/tools/viewer.cpp index 2582b887..a1853e92 100644 --- a/tools/viewer.cpp +++ b/tools/viewer.cpp @@ -16,9 +16,13 @@ #include #include #include +#include +#include #include +#include #include #include +#include #include #include #include @@ -46,6 +50,8 @@ private: Graphics::SimpleGLWindow window; Input::Mouse mouse; Resources resources; + GL::WindowView view; + GL::Pipeline pipeline; GL::Renderable *renderable; GL::AnimatedObject *anim_object; GL::AnimationPlayer *anim_player; @@ -84,6 +90,8 @@ private: Viewer::Viewer(int argc, char **argv): window(1024, 768, false), mouse(window), + view(window, window.get_gl_context()), + pipeline(view), renderable(0), anim_object(0), anim_player(0), @@ -143,9 +151,12 @@ Viewer::Viewer(int argc, char **argv): resources.add("__.object", object); } else if(ext==".object") + renderable = load(renderable_name); + else if(ext==".scene") { - object = load(renderable_name); - renderable = object; + GL::SimpleScene *scene = new GL::SimpleScene; + DataFile::load(*scene, renderable_name, resources); + renderable = scene; } else throw usage_error("Unknown renderable type"); @@ -172,6 +183,14 @@ Viewer::Viewer(int argc, char **argv): camera.set_up_direction(GL::Vector3(0, 0, 1)); update_camera(); + + GL::Pipeline::Pass &pass = pipeline.add_pass(0, *renderable); + pass.set_lighting(&lighting); + pass.set_depth_test(&GL::DepthTest::lequal()); + pass.set_blend(&GL::Blend::alpha()); + + view.set_content(&pipeline); + view.set_camera(&camera); } template @@ -214,17 +233,7 @@ void Viewer::tick() } window.tick(); - - GL::Framebuffer::system().clear(GL::COLOR_BUFFER_BIT|GL::DEPTH_BUFFER_BIT); - - camera.apply(); - - GL::Bind bind_lighting(lighting); - GL::Bind bind_depth(GL::DepthTest::lequal()); - GL::Bind bind_blend(GL::Blend::alpha()); - renderable->render(); - - window.swap_buffers(); + view.render(); } void Viewer::button_press(unsigned btn)