#define MSP_VR_STEREOCOMBINER_H_
#include <msp/geometry/angle.h>
+#include <msp/gl/mesh.h>
+#include <msp/gl/program.h>
+#include <msp/gl/programdata.h>
#include <msp/gl/texture2d.h>
namespace Msp {
Frustum(float, float, float, float);
};
+ struct MirrorView
+ {
+ GL::Mesh mesh;
+ GL::Program shader;
+ GL::ProgramData shdata;
+
+ MirrorView();
+ };
+
unsigned target_width;
unsigned target_height;
float render_aspect;
Geometry::Angle<float> fov;
float frustum_skew;
+ MirrorView *mirror;
StereoCombiner();
public:
const Geometry::Angle<float> &get_field_of_view() const { return fov; }
float get_frustum_skew() const { return frustum_skew; }
+ virtual bool is_mirroring_supported() const { return false; }
+ void set_mirroring(bool);
+ bool get_mirroring() const { return mirror; }
+
virtual void prepare() const { }
virtual void render(const GL::Texture2D &, const GL::Texture2D &) const = 0;
+protected:
+ void render_mirror(const GL::Texture2D &) const;
};
} // namespace VR