Merge pull request #423 from mendsley/vr_viewportfix

VR: Fix skewed viewports with buffered eye textures
This commit is contained in:
Branimir Karadžić 2015-06-05 09:14:19 -07:00
commit d2204e5cf2
4 changed files with 31 additions and 4 deletions

View file

@ -69,6 +69,14 @@ namespace bgfx
ovr_Shutdown();
}
void OVR::getViewport(uint8_t _eye, Rect* _viewport)
{
_viewport->m_width = (m_rtSize.w - s_eyeBuffer)/2;
_viewport->m_height = m_rtSize.h;
_viewport->m_x = _eye * (m_rtSize.w + s_eyeBuffer + 1)/2;
_viewport->m_y = 0;
}
bool OVR::postReset(void* _nwh, ovrRenderAPIConfig* _config, bool _debug)
{
if (_debug)

View file

@ -67,6 +67,7 @@ namespace bgfx
void init();
void shutdown();
void getViewport(uint8_t _eye, Rect* _viewport);
bool postReset(void* _nwh, ovrRenderAPIConfig* _config, bool _debug = false);
void postReset(const ovrTexture& _texture);
void preReset();

View file

@ -3856,8 +3856,17 @@ BX_PRAGMA_DIAGNOSTIC_POP();
PIX_BEGINEVENT(D3DCOLOR_RGBA(0xff, 0x00, 0x00, 0xff), viewNameW);
}
viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2;
viewState.m_rect.m_width /= 2;
#if BGFX_CONFIG_USE_OVR
if (m_ovr.isEnabled())
{
m_ovr.getViewport(eye, &viewState.m_rect);
}
else
#endif // BGFX_CONFIG_USE_OVR
{
viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2;
viewState.m_rect.m_width /= 2;
}
}
else
{

View file

@ -4963,8 +4963,17 @@ namespace bgfx { namespace gl
GL_CHECK(glInsertEventMarker(0, viewName) );
}
viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2;
viewState.m_rect.m_width /= 2;
#if BGFX_CONFIG_USE_OVR
if (m_ovr.isEnabled())
{
m_ovr.getViewport(eye, &viewState.m_rect);
}
else
#endif // BGFX_CONFIG_USE_OVR
{
viewState.m_rect.m_x = eye * (viewState.m_rect.m_width+1)/2;
viewState.m_rect.m_width /= 2;
}
}
else
{