]> git.tdb.fi Git - libs/gl.git/blobdiff - tools/viewer.cpp
Add functions for setting arrays of 2x2 and 3x3 matrix uniforms
[libs/gl.git] / tools / viewer.cpp
index 2582b887ffcd51256fcfc0b0bd40be9d6e0a6bef..d2a384f4e0b2afc112afd7fe3ea62ac3da676237 100644 (file)
@@ -16,7 +16,9 @@
 #include <msp/gl/lighting.h>
 #include <msp/gl/mesh.h>
 #include <msp/gl/object.h>
+#include <msp/gl/renderer.h>
 #include <msp/gl/resources.h>
+#include <msp/gl/simplescene.h>
 #include <msp/gl/technique.h>
 #include <msp/gl/tests.h>
 #include <msp/input/mouse.h>
@@ -143,9 +145,12 @@ Viewer::Viewer(int argc, char **argv):
                resources.add("__.object", object);
        }
        else if(ext==".object")
+               renderable = load<GL::Object>(renderable_name);
+       else if(ext==".scene")
        {
-               object = load<GL::Object>(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");
@@ -217,12 +222,11 @@ void Viewer::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();
+       GL::Renderer renderer(&camera);
+       renderer.set_lighting(&lighting);
+       renderable->render(renderer);
 
        window.swap_buffers();
 }