X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Fstereocombiner.cpp;h=75c788997e770fa0f1a7340d03b578e969062d51;hp=c24a937484aae3c162de692dee4d143959cc2176;hb=dca13ee66628568631f502dfc79847c7368c7bb1;hpb=735148a3ecf7e753f520f22668b771583185f72f diff --git a/source/stereocombiner.cpp b/source/stereocombiner.cpp index c24a937..75c7889 100644 --- a/source/stereocombiner.cpp +++ b/source/stereocombiner.cpp @@ -1,5 +1,8 @@ +#include #include "stereocombiner.h" +using namespace std; + namespace Msp { namespace VR { @@ -10,5 +13,32 @@ StereoCombiner::StereoCombiner(): frustum_skew(0.0f) { } +void StereoCombiner::configure_eye_frustums(const Frustum &left_frustum, const Frustum &right_frustum) +{ + float vertical = max(max(left_frustum.top, -left_frustum.bottom), max(right_frustum.top, -right_frustum.bottom)); + fov = Geometry::atan(vertical)*2.0f; + + float inner = max(left_frustum.right, -right_frustum.left); + float outer = max(-left_frustum.left, right_frustum.right); + frustum_skew = (inner-outer)/(inner+outer); + + render_aspect = (inner+outer)/(vertical*2); +} + + +StereoCombiner::Frustum::Frustum(): + left(-1), + right(1), + bottom(-1), + top(1) +{ } + +StereoCombiner::Frustum::Frustum(float l, float r, float b, float t): + left(l), + right(r), + bottom(b), + top(t) +{ } + } // namespace VR } // namespace Msp