From 31c28161d36749d040cbab0099b352f53cad232d Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Mon, 3 Oct 2016 15:47:59 +0300 Subject: [PATCH] Name LibOVR classes after the API, not the device --- Build | 2 +- .../libovrcamera.cpp} | 12 +++---- source/libovr/libovrcamera.h | 26 +++++++++++++++ .../libovrcombiner.cpp} | 16 ++++----- .../libovrcombiner.h} | 12 +++---- .../libovrsystem.cpp} | 33 ++++++++++--------- .../libovrsystem.h} | 18 +++++----- .../libovrsystem_private.h} | 8 ++--- source/ovr/oculusriftcamera.h | 26 --------------- source/system.cpp | 4 +-- 10 files changed, 79 insertions(+), 78 deletions(-) rename source/{ovr/oculusriftcamera.cpp => libovr/libovrcamera.cpp} (73%) create mode 100644 source/libovr/libovrcamera.h rename source/{ovr/oculusriftcombiner.cpp => libovr/libovrcombiner.cpp} (92%) rename source/{ovr/oculusriftcombiner.h => libovr/libovrcombiner.h} (74%) rename source/{ovr/oculusriftsystem.cpp => libovr/libovrsystem.cpp} (72%) rename source/{ovr/oculusriftsystem.h => libovr/libovrsystem.h} (64%) rename source/{ovr/oculusriftsystem_private.h => libovr/libovrsystem_private.h} (50%) delete mode 100644 source/ovr/oculusriftcamera.h diff --git a/Build b/Build index 98da6b9..fa837ec 100644 --- a/Build +++ b/Build @@ -31,7 +31,7 @@ package "mspvr" source "source"; if_feature "libovr" { - source "source/ovr"; + source "source/libovr"; }; if_feature "openvr" { diff --git a/source/ovr/oculusriftcamera.cpp b/source/libovr/libovrcamera.cpp similarity index 73% rename from source/ovr/oculusriftcamera.cpp rename to source/libovr/libovrcamera.cpp index 4da732b..7446086 100644 --- a/source/ovr/oculusriftcamera.cpp +++ b/source/libovr/libovrcamera.cpp @@ -1,11 +1,11 @@ -#include "oculusriftcamera.h" -#include "oculusriftsystem.h" -#include "oculusriftsystem_private.h" +#include "libovrcamera.h" +#include "libovrsystem.h" +#include "libovrsystem_private.h" namespace Msp { namespace VR { -OculusRiftCamera::OculusRiftCamera(const OculusRiftSystem &d, const GL::Camera &c): +LibOVRCamera::LibOVRCamera(const LibOVRSystem &d, const GL::Camera &c): HeadTrackingCamera(c), device(d) { @@ -13,12 +13,12 @@ OculusRiftCamera::OculusRiftCamera(const OculusRiftSystem &d, const GL::Camera & ovrHmd_ConfigureTracking(device.get_private().ovr_hmd, supported, 0); } -void OculusRiftCamera::reset_tracking() +void LibOVRCamera::reset_tracking() { ovrHmd_RecenterPose(device.get_private().ovr_hmd); } -void OculusRiftCamera::update() +void LibOVRCamera::update() { double time; if(device.is_timing_active()) diff --git a/source/libovr/libovrcamera.h b/source/libovr/libovrcamera.h new file mode 100644 index 0000000..44495b0 --- /dev/null +++ b/source/libovr/libovrcamera.h @@ -0,0 +1,26 @@ +#ifndef MSP_VR_LIBOVRCAMERA_H_ +#define MSP_VR_LIBOVRCAMERA_H_ + +#include + +namespace Msp { +namespace VR { + +class LibOVRSystem; + +class LibOVRCamera: public HeadTrackingCamera +{ +private: + const LibOVRSystem &device; + +public: + LibOVRCamera(const LibOVRSystem &, const GL::Camera &); + + virtual void reset_tracking(); + virtual void update(); +}; + +} // namespace VR +} // namespace Msp + +#endif diff --git a/source/ovr/oculusriftcombiner.cpp b/source/libovr/libovrcombiner.cpp similarity index 92% rename from source/ovr/oculusriftcombiner.cpp rename to source/libovr/libovrcombiner.cpp index e0c2c4d..5eddb4a 100644 --- a/source/ovr/oculusriftcombiner.cpp +++ b/source/libovr/libovrcombiner.cpp @@ -1,8 +1,8 @@ #include #include -#include "oculusriftcombiner.h" -#include "oculusriftsystem.h" -#include "oculusriftsystem_private.h" +#include "libovrcombiner.h" +#include "libovrsystem.h" +#include "libovrsystem_private.h" using namespace std; @@ -75,13 +75,13 @@ void create_distortion_mesh(Msp::GL::Mesh &mesh, ovrHmd hmd, ovrEyeType eye, con namespace Msp { namespace VR { -struct OculusRiftCombiner::Frustum: StereoCombiner::Frustum +struct LibOVRCombiner::Frustum: StereoCombiner::Frustum { Frustum(const ovrFovPort &); }; -OculusRiftCombiner::OculusRiftCombiner(OculusRiftSystem &d, GL::View &v): +LibOVRCombiner::LibOVRCombiner(LibOVRSystem &d, GL::View &v): device(d), view(v), left_mesh((GL::VERTEX2, GL::TEXCOORD2,0, GL::TEXCOORD2,1, GL::TEXCOORD2,2, GL::TEXCOORD2,3)), @@ -125,12 +125,12 @@ OculusRiftCombiner::OculusRiftCombiner(OculusRiftSystem &d, GL::View &v): device.configure_window(view.get_window()); } -void OculusRiftCombiner::prepare() const +void LibOVRCombiner::prepare() const { device.begin_frame(); } -void OculusRiftCombiner::render(const GL::Texture2D &left, const GL::Texture2D &right) const +void LibOVRCombiner::render(const GL::Texture2D &left, const GL::Texture2D &right) const { GL::Bind bind_shprog(shprog); @@ -168,7 +168,7 @@ void OculusRiftCombiner::render(const GL::Texture2D &left, const GL::Texture2D & } -OculusRiftCombiner::Frustum::Frustum(const ovrFovPort &fov): +LibOVRCombiner::Frustum::Frustum(const ovrFovPort &fov): StereoCombiner::Frustum(-fov.LeftTan, fov.RightTan, -fov.DownTan, fov.UpTan) { } diff --git a/source/ovr/oculusriftcombiner.h b/source/libovr/libovrcombiner.h similarity index 74% rename from source/ovr/oculusriftcombiner.h rename to source/libovr/libovrcombiner.h index 418c569..789de55 100644 --- a/source/ovr/oculusriftcombiner.h +++ b/source/libovr/libovrcombiner.h @@ -1,5 +1,5 @@ -#ifndef MSP_VR_OCULUSRIFTCOMBINER_H_ -#define MSP_VR_OCULUSRIFTCOMBINER_H_ +#ifndef MSP_VR_LIBOVRCOMBINER_H_ +#define MSP_VR_LIBOVRCOMBINER_H_ #include #include @@ -10,18 +10,18 @@ namespace Msp { namespace VR { -class OculusRiftSystem; +class LibOVRSystem; /** Presents a stereo view in a way suitable for an Oculus Rift HMD. All distances are specified in multiples of the screen width. */ -class OculusRiftCombiner: public StereoCombiner +class LibOVRCombiner: public StereoCombiner { private: struct Frustum; - OculusRiftSystem &device; + LibOVRSystem &device; GL::View &view; GL::Mesh left_mesh; GL::Mesh right_mesh; @@ -30,7 +30,7 @@ private: mutable GL::ProgramData right_shdata; public: - OculusRiftCombiner(OculusRiftSystem &, GL::View &); + LibOVRCombiner(LibOVRSystem &, GL::View &); virtual void prepare() const; virtual void render(const GL::Texture2D &, const GL::Texture2D &) const; diff --git a/source/ovr/oculusriftsystem.cpp b/source/libovr/libovrsystem.cpp similarity index 72% rename from source/ovr/oculusriftsystem.cpp rename to source/libovr/libovrsystem.cpp index 4a85383..c8183b0 100644 --- a/source/ovr/oculusriftsystem.cpp +++ b/source/libovr/libovrsystem.cpp @@ -1,16 +1,16 @@ #include #include -#include "oculusriftsystem.h" -#include "oculusriftsystem_private.h" +#include "libovrsystem.h" +#include "libovrsystem_private.h" using namespace std; namespace Msp { namespace VR { -unsigned OculusRiftSystem::n_instances = 0; +unsigned LibOVRSystem::n_instances = 0; -OculusRiftSystem::OculusRiftSystem(): +LibOVRSystem::LibOVRSystem(): priv(new Private), frame_index(0) { @@ -22,11 +22,12 @@ OculusRiftSystem::OculusRiftSystem(): if(!priv->ovr_hmd) { delete priv; + // XXX decrement n_instances throw runtime_error("rift hmd not found"); } } -OculusRiftSystem::~OculusRiftSystem() +LibOVRSystem::~LibOVRSystem() { ovrHmd_Destroy(priv->ovr_hmd); delete priv; @@ -36,7 +37,7 @@ OculusRiftSystem::~OculusRiftSystem() ovr_Shutdown(); } -void OculusRiftSystem::configure_window(Graphics::Window &window) const +void LibOVRSystem::configure_window(Graphics::Window &window) const { Graphics::WindowOptions win_opts = window.get_options(); win_opts.width = priv->ovr_hmd->Resolution.w; @@ -55,7 +56,7 @@ void OculusRiftSystem::configure_window(Graphics::Window &window) const window.reconfigure(win_opts); } -void OculusRiftSystem::configure_view(StereoView &view) const +void LibOVRSystem::configure_view(StereoView &view) const { ovrEyeRenderDesc left_desc = ovrHmd_GetRenderDesc(priv->ovr_hmd, ovrEye_Left, priv->ovr_hmd->DefaultEyeFov[ovrEye_Left]); ovrEyeRenderDesc right_desc = ovrHmd_GetRenderDesc(priv->ovr_hmd, ovrEye_Right, priv->ovr_hmd->DefaultEyeFov[ovrEye_Left]); @@ -64,44 +65,44 @@ void OculusRiftSystem::configure_view(StereoView &view) const view.set_eye_matrices(GL::Matrix::translation(GL::Vector3(l.x, l.y, l.z)), GL::Matrix::translation(GL::Vector3(r.x, r.y, r.z))); } -OculusRiftCamera *OculusRiftSystem::create_camera(const GL::Camera &bc) +LibOVRCamera *LibOVRSystem::create_camera(const GL::Camera &bc) { - return new OculusRiftCamera(*this, bc); + return new LibOVRCamera(*this, bc); } -OculusRiftCombiner *OculusRiftSystem::create_combiner(GL::View &view) +LibOVRCombiner *LibOVRSystem::create_combiner(GL::View &view) { - return new OculusRiftCombiner(*this, view); + return new LibOVRCombiner(*this, view); } -void OculusRiftSystem::begin_frame() +void LibOVRSystem::begin_frame() { priv->frame_timing = ovrHmd_BeginFrameTiming(priv->ovr_hmd, ++frame_index); timing_active = true; } -void OculusRiftSystem::end_frame() +void LibOVRSystem::end_frame() { glFinish(); ovrHmd_EndFrameTiming(priv->ovr_hmd); timing_active = false; } -double OculusRiftSystem::get_tracking_time() const +double LibOVRSystem::get_tracking_time() const { if(!timing_active) throw logic_error("timing not active"); return priv->frame_timing.ScanoutMidpointSeconds; } -double OculusRiftSystem::get_timewarp_time() const +double LibOVRSystem::get_timewarp_time() const { if(!timing_active) throw logic_error("timing not active"); return priv->frame_timing.TimewarpPointSeconds; } -double OculusRiftSystem::get_current_time() const +double LibOVRSystem::get_current_time() const { return ovr_GetTimeInSeconds(); } diff --git a/source/ovr/oculusriftsystem.h b/source/libovr/libovrsystem.h similarity index 64% rename from source/ovr/oculusriftsystem.h rename to source/libovr/libovrsystem.h index 20a4a5e..d5623a0 100644 --- a/source/ovr/oculusriftsystem.h +++ b/source/libovr/libovrsystem.h @@ -1,14 +1,14 @@ -#ifndef MSP_VR_OCULUSRIFTSYSTEM_H_ -#define MSP_VR_OCULUSRIFTSYSTEM_H_ +#ifndef MSP_VR_LIBOVRSYSTEM_H_ +#define MSP_VR_LIBOVRSYSTEM_H_ #include -#include "oculusriftcamera.h" -#include "oculusriftcombiner.h" +#include "libovrcamera.h" +#include "libovrcombiner.h" namespace Msp { namespace VR { -class OculusRiftSystem: public System +class LibOVRSystem: public System { public: struct Private; @@ -21,15 +21,15 @@ private: static unsigned n_instances; public: - OculusRiftSystem(); - virtual ~OculusRiftSystem(); + LibOVRSystem(); + virtual ~LibOVRSystem(); const Private &get_private() const { return *priv; } virtual void configure_window(Graphics::Window &) const; virtual void configure_view(StereoView &) const; - virtual OculusRiftCamera *create_camera(const GL::Camera &); - virtual OculusRiftCombiner *create_combiner(GL::View &); + virtual LibOVRCamera *create_camera(const GL::Camera &); + virtual LibOVRCombiner *create_combiner(GL::View &); void begin_frame(); void end_frame(); diff --git a/source/ovr/oculusriftsystem_private.h b/source/libovr/libovrsystem_private.h similarity index 50% rename from source/ovr/oculusriftsystem_private.h rename to source/libovr/libovrsystem_private.h index 2f91fdf..d75f9f8 100644 --- a/source/ovr/oculusriftsystem_private.h +++ b/source/libovr/libovrsystem_private.h @@ -1,13 +1,13 @@ -#ifndef MSP_VR_OCULUSRIFTSYSTEM_PRIVATE_H_ -#define MSP_VR_OCULUSRIFTSYSTEM_PRIVATE_H_ +#ifndef MSP_VR_LIBOVRSYSTEM_PRIVATE_H_ +#define MSP_VR_LIBOVRSYSTEM_PRIVATE_H_ #include -#include "oculusriftsystem.h" +#include "libovrsystem.h" namespace Msp { namespace VR { -struct OculusRiftSystem::Private +struct LibOVRSystem::Private { ovrHmd ovr_hmd; ovrFrameTiming frame_timing; diff --git a/source/ovr/oculusriftcamera.h b/source/ovr/oculusriftcamera.h deleted file mode 100644 index 6abb116..0000000 --- a/source/ovr/oculusriftcamera.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef MSP_VR_OCULUSRIFTCAMERA_H_ -#define MSP_VR_OCULUSRIFTCAMERA_H_ - -#include - -namespace Msp { -namespace VR { - -class OculusRiftSystem; - -class OculusRiftCamera: public HeadTrackingCamera -{ -private: - const OculusRiftSystem &device; - -public: - OculusRiftCamera(const OculusRiftSystem &, const GL::Camera &); - - virtual void reset_tracking(); - virtual void update(); -}; - -} // namespace VR -} // namespace Msp - -#endif diff --git a/source/system.cpp b/source/system.cpp index 436862e..99a6d48 100644 --- a/source/system.cpp +++ b/source/system.cpp @@ -4,7 +4,7 @@ #include "openvr/openvrsystem.h" #endif #ifdef WITH_LIBOVR -#include "ovr/oculusriftsystem.h" +#include "libovr/libovrsystem.h" #endif using namespace std; @@ -20,7 +20,7 @@ System *System::create(const string &type) #endif #ifdef WITH_LIBOVR if(type=="libovr") - return new OculusRiftSystem; + return new LibOVRSystem; #endif throw invalid_argument(format("system '%s' not supported", type)); } -- 2.43.0