X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Fstereoview.h;h=bc9073ed5808ebf8e9802bdbd92f21d673fd584f;hp=c1421f81422fc9d2034da8ebf0832cf6c0c8dfd7;hb=f5248334e741a6409fb3e7bd82ae784aaf1edcb5;hpb=8c61fd4fc7044c4ec0fd008173947b5b4bc00c6f diff --git a/source/stereoview.h b/source/stereoview.h index c1421f8..bc9073e 100644 --- a/source/stereoview.h +++ b/source/stereoview.h @@ -11,6 +11,7 @@ namespace Msp { namespace VR { +class HeadTrackingCamera; class StereoCombiner; class StereoView @@ -36,28 +37,34 @@ private: struct Eye { mutable GL::Camera camera; + GL::Matrix offset_matrix; RenderTarget *target; Eye(); void create_target(unsigned, unsigned); - void setup_frame(const GL::Camera &, const GL::Vector3 &, float, const EyeParams &) const; + void setup_frame(const GL::Camera &, float, const EyeParams &) const; void render(const GL::Renderable &) const; }; const StereoCombiner &combiner; const GL::Camera &base_camera; + HeadTrackingCamera *head_camera; const GL::Renderable *content; Eye left; Eye right; - float eye_spacing; Geometry::Angle strabismus; public: StereoView(const StereoCombiner &, const GL::Camera &); + StereoView(const StereoCombiner &, HeadTrackingCamera &); +private: + void init(); +public: void set_content(const GL::Renderable *); void set_eye_spacing(float); + void set_eye_matrices(const GL::Matrix &, const GL::Matrix &); void set_strabismus(const Geometry::Angle &); private: