Bladeren bron

Merge branch 'master' of github.com:bkaradzic/bgfx

Branimir Karadžić 10 jaren geleden
bovenliggende
commit
62d2d744f9
3 gewijzigde bestanden met toevoegingen van 23 en 6 verwijderingen
  1. 8 0
      src/ovr.cpp
  2. 11 4
      src/renderer.h
  3. 4 2
      src/renderer_d3d11.cpp

+ 8 - 0
src/ovr.cpp

@@ -117,6 +117,7 @@ namespace bgfx
 			| ovrDistortionCap_TimeWarp
 			| ovrDistortionCap_Overdrive
 			| ovrDistortionCap_NoRestore
+			| ovrDistortionCap_HqDistortion
 			, eyeFov
 			, m_erd
 			);
@@ -174,6 +175,13 @@ ovrError:
 			m_texture[1].Header.RenderViewport = rect;
 
 			m_timing = ovrHmd_BeginFrame(m_hmd, 0);
+#if OVR_VERSION > OVR_VERSION_042
+			m_pose[0] = ovrHmd_GetHmdPosePerEye(m_hmd, ovrEye_Left);
+			m_pose[1] = ovrHmd_GetHmdPosePerEye(m_hmd, ovrEye_Right);
+#else
+			m_pose[0] = ovrHmd_GetEyePose(m_hmd, ovrEye_Left);
+			m_pose[1] = ovrHmd_GetEyePose(m_hmd, ovrEye_Right);
+#endif // OVR_VERSION > OVR_VERSION_042
 		}
 	}
 

+ 11 - 4
src/renderer.h

@@ -12,12 +12,19 @@ namespace bgfx
 {
 	struct ViewState
 	{
+		ViewState() { }
 		ViewState(Frame* _render, bool _hmdEnabled)
-			: m_alphaRef(0.0f)
-			, m_invViewCached(UINT16_MAX)
-			, m_invProjCached(UINT16_MAX)
-			, m_invViewProjCached(UINT16_MAX)
 		{
+			reset(_render, _hmdEnabled);
+		}
+
+		void reset(Frame* _render, bool _hmdEnabled)
+		{
+			m_alphaRef = 0.0f;
+			m_invViewCached = UINT16_MAX;
+			m_invProjCached = UINT16_MAX;
+			m_invViewProjCached = UINT16_MAX;
+
 			m_view[0] = _render->m_view;
 			m_view[1] = m_viewTmp[1];
 

+ 4 - 2
src/renderer_d3d11.cpp

@@ -942,8 +942,8 @@ BX_PRAGMA_DIAGNOSTIC_POP();
 
 			DX_RELEASE(m_swapChain, 0);
 			DX_RELEASE(m_deviceCtx, 0);
-			DX_RELEASE(m_device, 0);
 			DX_RELEASE(m_factory, 0);
+			DX_RELEASE(m_device, 0);
 
 			unloadRenderDoc(m_renderdocdll);
 
@@ -2459,6 +2459,7 @@ BX_PRAGMA_DIAGNOSTIC_POP();
 		void* m_uniforms[BGFX_CONFIG_MAX_UNIFORMS];
 		Matrix4 m_predefinedUniforms[PredefinedUniform::Count];
 		UniformRegistry m_uniformReg;
+		ViewState m_viewState;
 
 		StateCacheT<ID3D11BlendState> m_blendStateCache;
 		StateCacheT<ID3D11DepthStencilState> m_depthStencilStateCache;
@@ -3305,7 +3306,8 @@ BX_PRAGMA_DIAGNOSTIC_POP();
 		const bool hmdEnabled = m_ovr.isEnabled() || m_ovr.isDebug();
 		_render->m_hmdEnabled = hmdEnabled;
 
-		ViewState viewState(_render, hmdEnabled);
+		ViewState& viewState = m_viewState;
+		viewState.reset(_render, hmdEnabled);
 
 		bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME);
 		bool scissorEnabled = false;