From 6845a1596c04ec37ffb734b4e14b908deb4b3088 Mon Sep 17 00:00:00 2001 From: NeoBrainX Date: Sat, 3 Sep 2011 23:37:05 +0200 Subject: [PATCH] Fix various cases in scissor rect emulation. Patch by delroth. --- Source/Plugins/Plugin_VideoOGL/Src/Render.cpp | 40 ++++--------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp index 0c9d904cad..a54e1dd3f5 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp +++ b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp @@ -652,39 +652,15 @@ bool Renderer::SetScissorRect() if (rc.right > EFB_WIDTH) rc.right = EFB_WIDTH; if (rc.bottom > EFB_HEIGHT) rc.bottom = EFB_HEIGHT; - if (rc.left > rc.right) - { - int temp = rc.right; - rc.right = rc.left; - rc.left = temp; - } - if (rc.top > rc.bottom) - { - int temp = rc.bottom; - rc.bottom = rc.top; - rc.top = temp; - } + if (rc.left > rc.right) rc.right = rc.left; + if (rc.top > rc.bottom) rc.bottom = rc.top; - // Check that the coordinates are good - if (rc.right != rc.left && rc.bottom != rc.top) - { - glScissor( - EFBToScaledX(rc.left), // x = 0 for example - EFBToScaledY(EFB_HEIGHT - rc.bottom), // y = 0 for example - EFBToScaledX(rc.right - rc.left), // width = 640 for example - EFBToScaledY(rc.bottom - rc.top)); // height = 480 for example - return true; - } - else - { - glScissor( - 0, - 0, - Renderer::GetTargetWidth(), - Renderer::GetTargetHeight() - ); - } - return false; + glScissor( + EFBToScaledX(rc.left), // x = 0 for example + EFBToScaledY(EFB_HEIGHT - rc.bottom), // y = 0 for example + EFBToScaledX(rc.right - rc.left), // width = 640 for example + EFBToScaledY(rc.bottom - rc.top)); // height = 480 for example + return true; } void Renderer::SetColorMask()