]> git.tdb.fi Git - libs/gl.git/blobdiff - tools/viewer.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / tools / viewer.cpp
index b0e3420dab0395394f02ec0aa8525a8b04bff089..36a5dc9bc13e3a2af70daf93d32e2234e781b04d 100644 (file)
@@ -5,14 +5,16 @@
 #include <msp/datafile/packsource.h>
 #include <msp/fs/stat.h>
 #include <msp/fs/utils.h>
-#include <msp/graphics/simplewindow.h>
+#include <msp/graphics/display.h>
+#include <msp/graphics/window.h>
 #include <msp/gl/animatedobject.h>
 #include <msp/gl/animation.h>
 #include <msp/gl/animationplayer.h>
 #include <msp/gl/blend.h>
 #include <msp/gl/camera.h>
+#include <msp/gl/device.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>
@@ -42,7 +44,6 @@ private:
                string animation_name;
                string renderable_name;
                Graphics::WindowOptions wnd_opts;
-               Graphics::GLOptions gl_opts;
 
                Options(int, char **);
        };
@@ -63,7 +64,7 @@ private:
        Options opts;
        Graphics::Display display;
        Graphics::Window window;
-       Graphics::GLContext gl_ctx;
+       GL::Device gl_device;
        Input::Mouse mouse;
        Resources resources;
        GL::WindowView view;
@@ -71,7 +72,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;
@@ -125,16 +126,14 @@ Viewer::Options::Options(int argc, char **argv)
                wnd_opts.width = lexical_cast<unsigned>(m[1].str);
                wnd_opts.height = lexical_cast<unsigned>(m[2].str);
        }
-       gl_opts.gl_version_major = Graphics::GLOptions::LATEST_VERSION;
-       gl_opts.core_profile = true;
 }
 
 Viewer::Viewer(int argc, char **argv):
        opts(argc, argv),
        window(display, opts.wnd_opts),
-       gl_ctx(window, opts.gl_opts),
+       gl_device(window),
        mouse(window),
-       view(window, gl_ctx),
+       view(window),
        sequence(0),
        renderable(0),
        anim_object(0),
@@ -204,6 +203,7 @@ Viewer::Viewer(int argc, char **argv):
        {
                GL::SequenceTemplate *tmpl = load<GL::SequenceTemplate>(opts.renderable_name);
                GL::SequenceBuilder bld(*tmpl);
+               bld.set_debug_name(FS::basename(opts.renderable_name));
                sequence = bld.build(view);
        }
        else
@@ -226,19 +226,21 @@ 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_debug_name("Camera");
        camera.set_up_direction(GL::Vector3(0, 0, 1));
        update_camera();
 
        if(!sequence)
        {
                sequence = new GL::Sequence();
+               sequence->set_debug_name("Sequence");
+               sequence->set_clear_enabled(true);
                GL::Sequence::Step &step = sequence->add_step(0, *renderable);
                step.set_lighting(&lighting);
                step.set_depth_test(GL::LEQUAL);
-               step.set_blend(GL::Blend(GL::SRC_ALPHA, GL::ONE_MINUS_SRC_ALPHA));
        }
 
        view.set_content(sequence);
@@ -368,7 +370,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));
 }