]> git.tdb.fi Git - libs/vr.git/blobdiff - source/stereoview.h
Make offset_axis a local variable of StereoView::setup_frame
[libs/vr.git] / source / stereoview.h
index 4dce63b99870b96aa5c52cdb5296fcdba2311344..f9e9a560ea7eefc21b8f4081cf627267e4e601db 100644 (file)
@@ -1,26 +1,26 @@
-#ifndef MSP_GL_STEREOVIEW_H_
-#define MSP_GL_STEREOVIEW_H_
+#ifndef MSP_VR_STEREOVIEW_H_
+#define MSP_VR_STEREOVIEW_H_
 
 #include <msp/geometry/angle.h>
 
 #include <msp/geometry/angle.h>
-#include "camera.h"
-#include "framebuffer.h"
-#include "renderable.h"
-#include "renderbuffer.h"
-#include "texture2d.h"
+#include <msp/gl/camera.h>
+#include <msp/gl/framebuffer.h>
+#include <msp/gl/renderable.h>
+#include <msp/gl/renderbuffer.h>
+#include <msp/gl/texture2d.h>
 
 namespace Msp {
 
 namespace Msp {
-namespace GL {
+namespace VR {
 
 class StereoCombiner;
 
 
 class StereoCombiner;
 
-class StereoView: public Renderable
+class StereoView
 {
 private:
        struct RenderTarget
        {
 {
 private:
        struct RenderTarget
        {
-               Framebuffer fbo;
-               Texture2D color;
-               Renderbuffer depth;
+               GL::Framebuffer fbo;
+               GL::Texture2D color;
+               GL::Renderbuffer depth;
 
                RenderTarget(unsigned, unsigned);
        };
 
                RenderTarget(unsigned, unsigned);
        };
@@ -35,40 +35,40 @@ private:
 
        struct Eye
        {
 
        struct Eye
        {
-               mutable Camera camera;
+               mutable GL::Camera camera;
                RenderTarget *target;
 
                Eye();
 
                void create_target(unsigned, unsigned);
                RenderTarget *target;
 
                Eye();
 
                void create_target(unsigned, unsigned);
-               void setup_frame(const Camera &, const Vector3 &, const EyeParams &) const;
-               void render(const Renderable &, const Tag &) const;
+               void setup_frame(const GL::Camera &, const GL::Vector3 &, float, const EyeParams &) const;
+               void render(const GL::Renderable &) const;
        };
 
        unsigned width;
        unsigned height;
        };
 
        unsigned width;
        unsigned height;
-       const Camera &base_camera;
-       const Renderable &renderable;
+       const GL::Camera &base_camera;
+       const GL::Renderable &renderable;
        const StereoCombiner *combiner;
        Eye left;
        Eye right;
        float eye_spacing;
        const StereoCombiner *combiner;
        Eye left;
        Eye right;
        float eye_spacing;
-       mutable Vector3 offset_axis;
+       Geometry::Angle<float> strabismus;
 
 public:
 
 public:
-       StereoView(unsigned, unsigned, const Camera &, const Renderable &, const StereoCombiner &);
+       StereoView(unsigned, unsigned, const GL::Camera &, const GL::Renderable &, const StereoCombiner &);
 
        void set_combiner(const StereoCombiner &);
        void set_eye_spacing(float);
 
        void set_combiner(const StereoCombiner &);
        void set_eye_spacing(float);
+       void set_strabismus(const Geometry::Angle<float> &);
 
 
-       virtual void setup_frame() const;
-       virtual void finish_frame() const;
-
-       virtual void render(const Tag & = Tag()) const;
-       virtual void render(Renderer &, const Tag & = Tag()) const;
+private:
+       void setup_frame() const;
+public:
+       void render() const;
 };
 
 };
 
-} // namespace GL
+} // namespace VR
 } // namespace Msp
 
 #endif
 } // namespace Msp
 
 #endif