Make the StereoCombiner information interface more flexible
[libs/vr.git] / source / stereocombiner.h
1 #ifndef MSP_VR_STEREOCOMBINER_H_
2 #define MSP_VR_STEREOCOMBINER_H_
3
4 #include <msp/geometry/angle.h>
5 #include <msp/gl/texture2d.h>
6
7 namespace Msp {
8 namespace VR {
9
10 class StereoCombiner
11 {
12 protected:
13         float width_factor;
14         float height_factor;
15         float aspect_factor;
16         Geometry::Angle<float> fov;
17         float frustum_skew;
18
19         StereoCombiner();
20 public:
21         virtual ~StereoCombiner() { }
22
23         float get_width_factor() const { return width_factor; }
24         float get_height_factor() const { return height_factor; }
25         float get_aspect_factor() const { return aspect_factor; }
26         const Geometry::Angle<float> &get_field_of_view() const { return fov; }
27         float get_frustum_skew() const { return frustum_skew; }
28
29         virtual void render(const GL::Texture2D &, const GL::Texture2D &) const = 0;
30 };
31
32 } // namespace VR
33 } // namespace Msp
34
35 #endif