Forráskód Böngészése

Merge pull request #420 from mendsley/vr_eye_bleeding

VR: Add buffer between left/right eye textures
Branimir Karadžić 10 éve
szülő
commit
66ad074f90
1 módosított fájl, 9 hozzáadás és 3 törlés
  1. 9 3
      src/ovr.cpp

+ 9 - 3
src/ovr.cpp

@@ -9,6 +9,12 @@
 
 namespace bgfx
 {
+#if OVR_VERSION <= OVR_VERSION_050
+	static const int s_eyeBuffer = 100;
+#else
+	static const int s_eyeBuffer = 8;
+#endif // OVR_VERSION...
+
 	OVR::OVR()
 		: m_hmd(NULL)
 		, m_isenabled(false)
@@ -50,7 +56,7 @@ namespace bgfx
 
 		ovrSizei sizeL = ovrHmd_GetFovTextureSize(m_hmd, ovrEye_Left,  m_hmd->DefaultEyeFov[0], 1.0f);
 		ovrSizei sizeR = ovrHmd_GetFovTextureSize(m_hmd, ovrEye_Right, m_hmd->DefaultEyeFov[1], 1.0f);
-		m_rtSize.w = sizeL.w + sizeR.w;
+		m_rtSize.w = sizeL.w + sizeR.w + s_eyeBuffer;
 		m_rtSize.h = bx::uint32_max(sizeL.h, sizeR.h);
 		m_warning = true;
 	}
@@ -169,12 +175,12 @@ ovrError:
 			ovrRecti rect;
 			rect.Pos.x  = 0;
 			rect.Pos.y  = 0;
-			rect.Size.w = m_rtSize.w/2;
+			rect.Size.w = (m_rtSize.w - s_eyeBuffer)/2;
 			rect.Size.h = m_rtSize.h;
 
 			m_texture[0].Header.RenderViewport = rect;
 
-			rect.Pos.x += rect.Size.w;
+			rect.Pos.x += rect.Size.w + s_eyeBuffer;
 			m_texture[1].Header.RenderViewport = rect;
 
 			m_timing = ovrHmd_BeginFrame(m_hmd, 0);