LibOVRCamera::LibOVRCamera(const LibOVRSystem &d, const GL::Camera &c):
HeadTrackingCamera(c),
- device(d)
+ system(d)
{
unsigned supported = ovrTrackingCap_Orientation|ovrTrackingCap_MagYawCorrection|ovrTrackingCap_Position;
- ovrHmd_ConfigureTracking(device.get_private().ovr_hmd, supported, 0);
+ ovrHmd_ConfigureTracking(system.get_private().ovr_hmd, supported, 0);
}
void LibOVRCamera::reset_tracking()
{
- ovrHmd_RecenterPose(device.get_private().ovr_hmd);
+ ovrHmd_RecenterPose(system.get_private().ovr_hmd);
}
void LibOVRCamera::update()
{
double time;
- if(device.is_timing_active())
- time = device.get_tracking_time();
+ if(system.is_timing_active())
+ time = system.get_tracking_time();
else
- time = device.get_current_time();
+ time = system.get_current_time();
- ovrTrackingState state = ovrHmd_GetTrackingState(device.get_private().ovr_hmd, time);
+ ovrTrackingState state = ovrHmd_GetTrackingState(system.get_private().ovr_hmd, time);
OVR::Posef head_pose = state.HeadPose.ThePose;
OVR::Matrix4f tracking_matrix(head_pose);
update_from_matrix(transpose(GL::Matrix(&tracking_matrix.M[0][0])));
LibOVRCombiner::LibOVRCombiner(LibOVRSystem &d, GL::View &v):
- device(d),
+ system(d),
view(v),
left_mesh((GL::VERTEX2, GL::TEXCOORD2,0, GL::TEXCOORD2,1, GL::TEXCOORD2,2, GL::TEXCOORD2,3)),
right_mesh((GL::VERTEX2, GL::TEXCOORD2,0, GL::TEXCOORD2,1, GL::TEXCOORD2,2, GL::TEXCOORD2,3)),
shprog(vs_source, fs_source)
{
- ovrHmd hmd = device.get_private().ovr_hmd;
+ ovrHmd hmd = system.get_private().ovr_hmd;
ovrFovPort left_fov = hmd->DefaultEyeFov[ovrEye_Left];
ovrFovPort right_fov = hmd->DefaultEyeFov[ovrEye_Right];
right_shdata.uniform("uv_scale", uv_scale_offset[0].x, -uv_scale_offset[0].y);
right_shdata.uniform("uv_offset", uv_scale_offset[1].x, 1-uv_scale_offset[1].y);
- device.configure_window(view.get_window());
+ system.configure_window(view.get_window());
}
void LibOVRCombiner::prepare() const
{
- device.begin_frame();
+ system.begin_frame();
}
void LibOVRCombiner::render(const GL::Texture2D &left, const GL::Texture2D &right) const
{
GL::Bind bind_shprog(shprog);
- ovrHmd hmd = device.get_private().ovr_hmd;
+ ovrHmd hmd = system.get_private().ovr_hmd;
- if(device.is_timing_active())
+ if(system.is_timing_active())
{
- ovr_WaitTillTime(device.get_timewarp_time());
- ovrTrackingState state = ovrHmd_GetTrackingState(hmd, device.get_tracking_time());
+ ovr_WaitTillTime(system.get_timewarp_time());
+ ovrTrackingState state = ovrHmd_GetTrackingState(hmd, system.get_tracking_time());
ovrMatrix4f matrices[2];
ovrHmd_GetEyeTimewarpMatrices(hmd, ovrEye_Left, state.HeadPose.ThePose, matrices);
right_mesh.draw();
view.get_context().swap_buffers();
- device.end_frame();
+ system.end_frame();
}