]> git.tdb.fi Git - libs/gl.git/blobdiff - tools/viewer.cpp
Split the Light class into subclasses by light type
[libs/gl.git] / tools / viewer.cpp
index b05e6695c0a9d2438295ce2421d60e60bc75024d..c54d7278c4cba0a23a4a935850a2eb25ead4d816 100644 (file)
@@ -11,8 +11,8 @@
 #include <msp/gl/animationplayer.h>
 #include <msp/gl/blend.h>
 #include <msp/gl/camera.h>
+#include <msp/gl/directionallight.h>
 #include <msp/gl/framebuffer.h>
-#include <msp/gl/light.h>
 #include <msp/gl/lighting.h>
 #include <msp/gl/mesh.h>
 #include <msp/gl/object.h>
@@ -23,7 +23,6 @@
 #include <msp/gl/resources.h>
 #include <msp/gl/simplescene.h>
 #include <msp/gl/technique.h>
-#include <msp/gl/tests.h>
 #include <msp/gl/windowview.h>
 #include <msp/input/mouse.h>
 #include <msp/io/print.h>
@@ -72,7 +71,7 @@ private:
        GL::Renderable *renderable;
        GL::AnimatedObject *anim_object;
        GL::AnimationPlayer *anim_player;
-       GL::Light light;
+       GL::DirectionalLight light;
        GL::Lighting lighting;
        GL::Camera camera;
        float yaw;
@@ -178,7 +177,7 @@ Viewer::Viewer(int argc, char **argv):
 
                object = new GL::Object;
                GL::Technique *tech = new GL::Technique;
-               tech->add_pass(0);
+               tech->add_method(0);
                object->set_mesh(mesh);
                object->set_technique(tech);
                renderable = object;
@@ -196,7 +195,7 @@ Viewer::Viewer(int argc, char **argv):
                        IO::BufferedFile in(opts.renderable_name);
                        DataFile::Parser parser(in, opts.renderable_name);
                        ldr.load(parser);
-                       renderable = ldr.get_scene();
+                       renderable = ldr.get_object();
                }
                else
                        renderable = &resources.get<GL::Scene>(opts.renderable_name);
@@ -227,7 +226,7 @@ Viewer::Viewer(int argc, char **argv):
        mouse.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Viewer::button_release), false));
        mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Viewer::axis_motion), false));
 
-       light.set_position(GL::Vector4(0, 0, 1, 0));
+       light.set_direction(GL::Vector3(0, 0, -1));
        lighting.attach(light);
 
        camera.set_up_direction(GL::Vector3(0, 0, 1));
@@ -235,11 +234,11 @@ Viewer::Viewer(int argc, char **argv):
 
        if(!sequence)
        {
-               sequence = new GL::Sequence(view);
+               sequence = new GL::Sequence();
                GL::Sequence::Step &step = sequence->add_step(0, *renderable);
                step.set_lighting(&lighting);
-               step.set_depth_test(&GL::DepthTest::lequal());
-               step.set_blend(&GL::Blend::alpha());
+               step.set_depth_test(GL::LEQUAL);
+               step.set_blend(GL::Blend(GL::SRC_ALPHA, GL::ONE_MINUS_SRC_ALPHA));
        }
 
        view.set_content(sequence);
@@ -369,7 +368,7 @@ void Viewer::update_light()
        float sy = sin(light_yaw);
        float cp = cos(light_pitch);
        float sp = sin(light_pitch);
-       light.set_position(GL::Vector4(-cy*cp, -sy*cp, -sp, 0));
+       light.set_direction(GL::Vector3(cy*cp, sy*cp, sp));
 }