+#ifndef MSP_VR_SYSTEM_H_
+#define MSP_VR_SYSTEM_H_
+
+#include <string>
+#include <msp/gl/camera.h>
+#include <msp/gl/view.h>
+
+namespace Msp {
+namespace VR {
+
+class HeadTrackingCamera;
+class StereoCombiner;
+class StereoView;
+
+class System
+{
+protected:
+ System() { }
+public:
+ virtual ~System() { }
+
+ static System *create(const std::string &);
+
+ virtual void configure_window(Graphics::Window &) const = 0;
+ virtual void configure_view(StereoView &) const = 0;
+ virtual HeadTrackingCamera *create_camera(const GL::Camera &) = 0;
+ virtual StereoCombiner *create_combiner(GL::View &) = 0;
+};
+
+} // namespace VR
+} // namespace Msp
+
+#endif