X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Foculusriftcombiner.h;h=435ccb3f18b0bc903a10d462efcd7ebe5188a46c;hp=afb5573453b99345edf9900b7c245dc03215122f;hb=654b8083e06fb9f3338f7148bfd30b6305c7c5be;hpb=ae3ee351d103bfef3feb247c61691c22a622bb15 diff --git a/source/oculusriftcombiner.h b/source/oculusriftcombiner.h index afb5573..435ccb3 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,34 +18,15 @@ 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 chromatic[4]; - float fill_factor; + GL::ProgramData 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_red_aberration(float = 1.0f, float = 0.0f); - void set_blue_aberration(float = 1.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; };