X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstereocombiner.h;h=88f979caeee1c8ce35190cdcf1f7ea186cdb72e7;hb=ee7031ad49618ac199adb506f78b2ca0d2bea2fc;hp=bef0849b39ee4a460d8c8c838957286f70dc4fa9;hpb=dca13ee66628568631f502dfc79847c7368c7bb1;p=libs%2Fvr.git diff --git a/source/stereocombiner.h b/source/stereocombiner.h index bef0849..88f979c 100644 --- a/source/stereocombiner.h +++ b/source/stereocombiner.h @@ -2,6 +2,9 @@ #define MSP_VR_STEREOCOMBINER_H_ #include +#include +#include +#include #include namespace Msp { @@ -21,11 +24,21 @@ protected: 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 fov; float frustum_skew; + MirrorView *mirror; StereoCombiner(); public: @@ -40,8 +53,14 @@ public: const Geometry::Angle &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