--- /dev/null
+#ifndef MSP_VR_DISPLAYDEVICE_H_
+#define MSP_VR_DISPLAYDEVICE_H_
+
+#include <msp/gl/camera.h>
+
+namespace Msp {
+namespace VR {
+
+class HeadTrackingCamera;
+class StereoCombiner;
+
+class DisplayDevice
+{
+protected:
+ DisplayDevice() { }
+public:
+ virtual ~DisplayDevice() { }
+
+ virtual HeadTrackingCamera *create_camera(const GL::Camera &) const = 0;
+ virtual StereoCombiner *create_combiner() const = 0;
+};
+
+} // namespace VR
+} // namespace Msp
+
+#endif
--- /dev/null
+#ifndef MSP_VR_HEADTRACKINGCAMERA_H_
+#define MSP_VR_HEADTRACKINGCAMERA_H_
+
+#include <msp/gl/camera.h>
+
+namespace Msp {
+namespace VR {
+
+class HeadTrackingCamera: public Msp::GL::Camera
+{
+protected:
+ HeadTrackingCamera() { }
+
+public:
+ virtual ~HeadTrackingCamera() { }
+
+ virtual void update() = 0;
+};
+
+} // namespace VR
+} // namespace Msp
+
+#endif