mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 12:17:45 +02:00
Updating API usage to Oculus 0.4.4
This commit is contained in:
parent
71b677ef5c
commit
a921f7ae74
2 changed files with 17 additions and 6 deletions
|
@ -50,6 +50,7 @@ ovrHmd OculusManager::_ovrHmd;
|
||||||
ovrHmdDesc OculusManager::_ovrHmdDesc;
|
ovrHmdDesc OculusManager::_ovrHmdDesc;
|
||||||
ovrFovPort OculusManager::_eyeFov[ovrEye_Count];
|
ovrFovPort OculusManager::_eyeFov[ovrEye_Count];
|
||||||
ovrEyeRenderDesc OculusManager::_eyeRenderDesc[ovrEye_Count];
|
ovrEyeRenderDesc OculusManager::_eyeRenderDesc[ovrEye_Count];
|
||||||
|
ovrVector3f OculusManager::_eyeOffset[ovrEye_Count];
|
||||||
ovrSizei OculusManager::_renderTargetSize;
|
ovrSizei OculusManager::_renderTargetSize;
|
||||||
ovrVector2f OculusManager::_UVScaleOffset[ovrEye_Count][2];
|
ovrVector2f OculusManager::_UVScaleOffset[ovrEye_Count][2];
|
||||||
GLuint OculusManager::_vertices[ovrEye_Count] = { 0, 0 };
|
GLuint OculusManager::_vertices[ovrEye_Count] = { 0, 0 };
|
||||||
|
@ -114,6 +115,8 @@ void OculusManager::connect() {
|
||||||
|
|
||||||
_eyeRenderDesc[0] = ovrHmd_GetRenderDesc(_ovrHmd, ovrEye_Left, _eyeFov[0]);
|
_eyeRenderDesc[0] = ovrHmd_GetRenderDesc(_ovrHmd, ovrEye_Left, _eyeFov[0]);
|
||||||
_eyeRenderDesc[1] = ovrHmd_GetRenderDesc(_ovrHmd, ovrEye_Right, _eyeFov[1]);
|
_eyeRenderDesc[1] = ovrHmd_GetRenderDesc(_ovrHmd, ovrEye_Right, _eyeFov[1]);
|
||||||
|
_eyeOffset[0] = _eyeRenderDesc[0].HmdToEyeViewOffset;
|
||||||
|
_eyeOffset[1] = _eyeRenderDesc[1].HmdToEyeViewOffset;
|
||||||
|
|
||||||
#if defined(__APPLE__) || defined(_WIN32)
|
#if defined(__APPLE__) || defined(_WIN32)
|
||||||
ovrHmd_SetEnabledCaps(_ovrHmd, ovrHmdCap_LowPersistence);
|
ovrHmd_SetEnabledCaps(_ovrHmd, ovrHmdCap_LowPersistence);
|
||||||
|
@ -433,6 +436,12 @@ void OculusManager::configureCamera(Camera& camera, int screenWidth, int screenH
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBOVR
|
||||||
|
glm::vec3 toGlm(const ovrVector3f & v) {
|
||||||
|
return std::move(glm::vec3(v.x, v.y, v.z));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//Displays everything for the oculus, frame timing must be active
|
//Displays everything for the oculus, frame timing must be active
|
||||||
void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &position, Camera& whichCamera) {
|
void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &position, Camera& whichCamera) {
|
||||||
#ifdef HAVE_LIBOVR
|
#ifdef HAVE_LIBOVR
|
||||||
|
@ -481,8 +490,12 @@ void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &p
|
||||||
|
|
||||||
trackerPosition = bodyOrientation * trackerPosition;
|
trackerPosition = bodyOrientation * trackerPosition;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// void ovrHmd_GetEyePoses(ovrHmd hmd, unsigned int frameIndex, ovrVector3f hmdToEyeViewOffset[2],
|
||||||
|
// ovrPosef outEyePoses[2], ovrTrackingState* outHmdTrackingState);
|
||||||
|
|
||||||
//Render each eye into an fbo
|
//Render each eye into an fbo
|
||||||
|
ovrHmd_GetEyePoses(_ovrHmd, 0, _eyeOffset, eyeRenderPose, nullptr);
|
||||||
for (int eyeIndex = 0; eyeIndex < ovrEye_Count; eyeIndex++) {
|
for (int eyeIndex = 0; eyeIndex < ovrEye_Count; eyeIndex++) {
|
||||||
_activeEyeIndex = eyeIndex;
|
_activeEyeIndex = eyeIndex;
|
||||||
|
|
||||||
|
@ -492,7 +505,6 @@ void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &p
|
||||||
ovrEyeType eye = _ovrHmdDesc.EyeRenderOrder[eyeIndex];
|
ovrEyeType eye = _ovrHmdDesc.EyeRenderOrder[eyeIndex];
|
||||||
#endif
|
#endif
|
||||||
// Set the camera rotation for this eye
|
// Set the camera rotation for this eye
|
||||||
eyeRenderPose[eye] = ovrHmd_GetEyePose(_ovrHmd, eye);
|
|
||||||
orientation.x = eyeRenderPose[eye].Orientation.x;
|
orientation.x = eyeRenderPose[eye].Orientation.x;
|
||||||
orientation.y = eyeRenderPose[eye].Orientation.y;
|
orientation.y = eyeRenderPose[eye].Orientation.y;
|
||||||
orientation.z = eyeRenderPose[eye].Orientation.z;
|
orientation.z = eyeRenderPose[eye].Orientation.z;
|
||||||
|
@ -507,9 +519,7 @@ void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &p
|
||||||
_camera->setPosition(whichCamera.getPosition());
|
_camera->setPosition(whichCamera.getPosition());
|
||||||
|
|
||||||
// Store the latest left and right eye render locations for things that need to know
|
// Store the latest left and right eye render locations for things that need to know
|
||||||
glm::vec3 thisEyePosition = position + trackerPosition +
|
glm::vec3 thisEyePosition = position + trackerPosition + toGlm(eyeRenderPose[eye].Position);
|
||||||
(bodyOrientation * glm::quat(orientation.x, orientation.y, orientation.z, orientation.w) *
|
|
||||||
glm::vec3(_eyeRenderDesc[eye].ViewAdjust.x, _eyeRenderDesc[eye].ViewAdjust.y, _eyeRenderDesc[eye].ViewAdjust.z));
|
|
||||||
|
|
||||||
RenderArgs::RenderSide renderSide = RenderArgs::STEREO_LEFT;
|
RenderArgs::RenderSide renderSide = RenderArgs::STEREO_LEFT;
|
||||||
if (eyeIndex == 0) {
|
if (eyeIndex == 0) {
|
||||||
|
@ -538,7 +548,7 @@ void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &p
|
||||||
// HACK: instead of passing the stereo eye offset directly in the matrix, pass it in the camera offset
|
// HACK: instead of passing the stereo eye offset directly in the matrix, pass it in the camera offset
|
||||||
//glTranslatef(_eyeRenderDesc[eye].ViewAdjust.x, _eyeRenderDesc[eye].ViewAdjust.y, _eyeRenderDesc[eye].ViewAdjust.z);
|
//glTranslatef(_eyeRenderDesc[eye].ViewAdjust.x, _eyeRenderDesc[eye].ViewAdjust.y, _eyeRenderDesc[eye].ViewAdjust.z);
|
||||||
|
|
||||||
_camera->setEyeOffsetPosition(glm::vec3(-_eyeRenderDesc[eye].ViewAdjust.x, -_eyeRenderDesc[eye].ViewAdjust.y, -_eyeRenderDesc[eye].ViewAdjust.z));
|
//_camera->setEyeOffsetPosition(glm::vec3(-_eyeRenderDesc[eye].ViewAdjust.x, -_eyeRenderDesc[eye].ViewAdjust.y, -_eyeRenderDesc[eye].ViewAdjust.z));
|
||||||
Application::getInstance()->displaySide(*_camera, false, RenderArgs::MONO);
|
Application::getInstance()->displaySide(*_camera, false, RenderArgs::MONO);
|
||||||
|
|
||||||
applicationOverlay.displayOverlayTextureOculus(*_camera);
|
applicationOverlay.displayOverlayTextureOculus(*_camera);
|
||||||
|
|
|
@ -92,6 +92,7 @@ private:
|
||||||
static ovrHmdDesc _ovrHmdDesc;
|
static ovrHmdDesc _ovrHmdDesc;
|
||||||
static ovrFovPort _eyeFov[ovrEye_Count];
|
static ovrFovPort _eyeFov[ovrEye_Count];
|
||||||
static ovrEyeRenderDesc _eyeRenderDesc[ovrEye_Count];
|
static ovrEyeRenderDesc _eyeRenderDesc[ovrEye_Count];
|
||||||
|
static ovrVector3f _eyeOffset[ovrEye_Count];
|
||||||
static ovrSizei _renderTargetSize;
|
static ovrSizei _renderTargetSize;
|
||||||
static ovrVector2f _UVScaleOffset[ovrEye_Count][2];
|
static ovrVector2f _UVScaleOffset[ovrEye_Count][2];
|
||||||
static GLuint _vertices[ovrEye_Count];
|
static GLuint _vertices[ovrEye_Count];
|
||||||
|
|
Loading…
Reference in a new issue