X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Fstereoview.cpp;h=5945016da1ac8d1e20d01c0a4e25f0ceb0300954;hp=d9f5822a4913204e3f9b8bb7997ba46f65e97b74;hb=735148a3ecf7e753f520f22668b771583185f72f;hpb=8c61fd4fc7044c4ec0fd008173947b5b4bc00c6f diff --git a/source/stereoview.cpp b/source/stereoview.cpp index d9f5822..5945016 100644 --- a/source/stereoview.cpp +++ b/source/stereoview.cpp @@ -1,4 +1,5 @@ #include +#include "headtrackingcamera.h" #include "stereocombiner.h" #include "stereoview.h" @@ -10,8 +11,23 @@ namespace VR { StereoView::StereoView(const StereoCombiner &c, const GL::Camera &a): combiner(c), base_camera(a), - content(0) + head_camera(0) { + init(); +} + +StereoView::StereoView(const StereoCombiner &c, HeadTrackingCamera &a): + combiner(c), + base_camera(a), + head_camera(&a) +{ + init(); +} + +void StereoView::init() +{ + content = 0; + unsigned w = combiner.get_target_width(); unsigned h = combiner.get_target_height(); left.create_target(w, h); @@ -38,6 +54,9 @@ void StereoView::set_strabismus(const Geometry::Angle &s) void StereoView::setup_frame() const { + if(head_camera) + head_camera->update(); + GL::Vector3 offset_axis = normalize(cross(base_camera.get_look_direction(), base_camera.get_up_direction()))*0.5f; EyeParams params; @@ -59,6 +78,7 @@ void StereoView::setup_frame() const void StereoView::render() const { + combiner.prepare(); setup_frame(); if(content) {