X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Fovr%2Foculusriftdevice.cpp;h=38fd20e68179d657cf05a7292818b2e038384c61;hp=146f04a7c0ad32a12c94dead97ea46265bec34fa;hb=23a6e642715fab2f275a2015ea079137cb31036d;hpb=11d105c5183b401e5f52e9abb16cf659298cf035 diff --git a/source/ovr/oculusriftdevice.cpp b/source/ovr/oculusriftdevice.cpp index 146f04a..38fd20e 100644 --- a/source/ovr/oculusriftdevice.cpp +++ b/source/ovr/oculusriftdevice.cpp @@ -1,3 +1,4 @@ +#include #include #include "oculusriftdevice.h" #include "oculusriftdevice_private.h" @@ -35,11 +36,32 @@ OculusRiftDevice::~OculusRiftDevice() ovr_Shutdown(); } +void OculusRiftDevice::configure_window(Graphics::Window &window) const +{ + Graphics::WindowOptions win_opts = window.get_options(); + win_opts.width = priv->ovr_hmd->Resolution.w; + win_opts.height = priv->ovr_hmd->Resolution.h; + + const list &monitors = window.get_display().get_monitors(); + string hmd_name = priv->ovr_hmd->ProductName; + for(list::const_iterator i=monitors.begin(); i!=monitors.end(); ++i) + if(hmd_name.find(i->name)!=string::npos) + { + win_opts.fullscreen = true; + win_opts.fullscreen_monitor = &*i; + win_opts.fullscreen_exclusive = false; + } + + window.reconfigure(win_opts); +} + void OculusRiftDevice::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]); - view.set_eye_spacing(left_desc.HmdToEyeViewOffset.x-right_desc.HmdToEyeViewOffset.x); + const ovrVector3f &l = left_desc.HmdToEyeViewOffset; + const ovrVector3f &r = right_desc.HmdToEyeViewOffset; + 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 *OculusRiftDevice::create_camera(const GL::Camera &bc)