X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Foculusriftcombiner.h;h=32ab9cce825ac47ae34984124462c544fcb84f17;hp=a204c3eff766b25085095cdc4e6020f99423029b;hb=8d1197440f07062a1020d902619ae8e9a494baa0;hpb=5244110fa8d347b8539f4fcff1bea729eecc2027 diff --git a/source/oculusriftcombiner.h b/source/oculusriftcombiner.h index a204c3e..32ab9cc 100644 --- a/source/oculusriftcombiner.h +++ b/source/oculusriftcombiner.h @@ -9,6 +9,8 @@ namespace Msp { namespace VR { +class OculusRiftDevice; + /** Presents a stereo view in a way suitable for an Oculus Rift HMD. All distances are specified in multiples of the screen width. @@ -16,31 +18,16 @@ are specified in multiples of the screen width. class OculusRiftCombiner: public StereoCombiner { private: - GL::Mesh mesh; + const OculusRiftDevice &device; + GL::Mesh left_mesh; + GL::Mesh right_mesh; GL::Program shprog; - GL::ProgramData left_shdata; - GL::ProgramData right_shdata; - float view_distance; - float lens_separation; - float eye_separation; - float distortion[4]; - float fill_factor; + mutable GL::ProgramData left_shdata; + mutable GL::ProgramData right_shdata; public: - OculusRiftCombiner(); - - void set_view_distance(float); - void set_lens_separation(float); - void set_eye_separation(float); - void set_distortion(float = 1.0f, float = 0.0f, float = 0.0f, float = 0.0f); - void set_fill_factor(float); -private: - void update_parameters(); + OculusRiftCombiner(const OculusRiftDevice &); - float distort(float) const; - float undistort(float) const; - -public: virtual void render(const GL::Texture2D &, const GL::Texture2D &) const; };