diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp index 8dcd62831e..c565ee8d43 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/Render.cpp @@ -610,8 +610,10 @@ void UpdateViewport() // This seems to happen a lot - the above calc is probably wrong. if (vp.MinZ < 0.0f) vp.MinZ = 0.0f; + if (vp.MinZ > 1.0f) vp.MinZ = 1.0f; if (vp.MaxZ > 1.0f) vp.MaxZ = 1.0f; - + if (vp.MaxZ < 0.0f) vp.MaxZ = 0.0f; + D3D::dev->SetViewport(&vp); } diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp index 43bb17a15d..0036b494b5 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp @@ -1347,6 +1347,11 @@ void UpdateViewport() double GLNear = (xfregs.rawViewport[5] - xfregs.rawViewport[2]) / 16777216.0f; double GLFar = xfregs.rawViewport[5] / 16777216.0f; + if (GLNear < 0.0f) GLNear = 0.0f; + if (GLNear > 1.0f) GLNear = 1.0f; + if (GLFar > 1.0f) GLFar = 1.0f; + if (GLFar < 0.0f) GLFar = 0.0f; + // Update the view port glViewport(GLx, GLy, GLWidth, GLHeight); glDepthRange(GLNear, GLFar);