-#ifndef MSP_GL_OCULUSRIFTCOMBINER_H_
-#define MSP_GL_OCULUSRIFTCOMBINER_H_
+#ifndef MSP_VR_OCULUSRIFTCOMBINER_H_
+#define MSP_VR_OCULUSRIFTCOMBINER_H_
-#include "mesh.h"
-#include "program.h"
-#include "programdata.h"
+#include <msp/gl/mesh.h>
+#include <msp/gl/program.h>
+#include <msp/gl/programdata.h>
#include "stereocombiner.h"
namespace Msp {
-namespace GL {
+namespace VR {
+
+class OculusRiftDevice;
/**
Presents a stereo view in a way suitable for an Oculus Rift HMD. All distances
class OculusRiftCombiner: public StereoCombiner
{
private:
- Mesh mesh;
- Program shprog;
- ProgramData left_shdata;
- ProgramData right_shdata;
- float view_distance;
- float lens_separation;
- float eye_separation;
- float distortion[4];
- float fill_factor;
+ const OculusRiftDevice &device;
+ GL::Mesh left_mesh;
+ GL::Mesh right_mesh;
+ GL::Program shprog;
+ 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_fill_factor(float);
-private:
- void update_parameters();
+ OculusRiftCombiner(const OculusRiftDevice &);
- float distort(float) const;
- float undistort(float) const;
-
-public:
- virtual void render(const Texture2D &, const Texture2D &) const;
+ virtual void render(const GL::Texture2D &, const GL::Texture2D &) const;
};
-} // namespace GL
+} // namespace VR
} // namespace Msp
#endif