]> git.tdb.fi Git - libs/vr.git/blob - source/ovr/oculusriftcombiner.h
27c3c83bac49caa7ad8a0d7e590e34d7ac8b4ea9
[libs/vr.git] / source / ovr / oculusriftcombiner.h
1 #ifndef MSP_VR_OCULUSRIFTCOMBINER_H_
2 #define MSP_VR_OCULUSRIFTCOMBINER_H_
3
4 #include <msp/gl/mesh.h>
5 #include <msp/gl/program.h>
6 #include <msp/gl/programdata.h>
7 #include <msp/gl/view.h>
8 #include <msp/vr/stereocombiner.h>
9
10 namespace Msp {
11 namespace VR {
12
13 class OculusRiftDevice;
14
15 /**
16 Presents a stereo view in a way suitable for an Oculus Rift HMD.  All distances
17 are specified in multiples of the screen width.
18 */
19 class OculusRiftCombiner: public StereoCombiner
20 {
21 private:
22         OculusRiftDevice &device;
23         GL::View &view;
24         GL::Mesh left_mesh;
25         GL::Mesh right_mesh;
26         GL::Program shprog;
27         mutable GL::ProgramData left_shdata;
28         mutable GL::ProgramData right_shdata;
29
30 public:
31         OculusRiftCombiner(OculusRiftDevice &, GL::View &);
32
33         virtual void prepare() const;
34         virtual void render(const GL::Texture2D &, const GL::Texture2D &) const;
35 };
36
37 } // namespace VR
38 } // namespace Msp
39
40 #endif