mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-02 09:03:37 +00:00
Fix scissor related problems:
- scissor dissable/enable in FrameBuffer_RenderBuffer() - scissor height in OGL_UpdateStates()
This commit is contained in:
parent
8f9584440e
commit
92eb61572e
|
@ -454,6 +454,9 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
dstY1 -= partHeight;
|
||||
}
|
||||
|
||||
// glDisable(GL_SCISSOR_TEST) does not affect glBlitFramebuffer, at least on AMD
|
||||
glScissor( 0, 0, OGL.width, OGL.height );
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, current->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
//glDrawBuffer( GL_BACK );
|
||||
|
@ -480,9 +483,11 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
);
|
||||
}
|
||||
}
|
||||
glEnable(GL_SCISSOR_TEST);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
OGL_SwapBuffers();
|
||||
gDP.changed |= CHANGED_SCISSOR;
|
||||
}
|
||||
#else
|
||||
|
||||
|
@ -520,6 +525,7 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
OGL_DrawTexturedRect( 0.0f, 0.0f, width, height, 0.0f, 0.0f, width-1.0f, height-1.0f, false );
|
||||
OGL_SwapBuffers();
|
||||
frameBuffer.drawBuffer = GL_FRAMEBUFFER;
|
||||
glEnable(GL_SCISSOR_TEST);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
gSP.changed |= CHANGED_TEXTURE | CHANGED_VIEWPORT;
|
||||
gDP.changed |= CHANGED_COMBINE;
|
||||
|
|
|
@ -796,7 +796,7 @@ void OGL_UpdateStates()
|
|||
|
||||
if (gDP.changed & CHANGED_SCISSOR)
|
||||
{
|
||||
const u32 screenHeight = (frameBuffer.top == NULL || frameBuffer.drawBuffer == GL_BACK) ? VI.height : frameBuffer.top->height;
|
||||
const u32 screenHeight = (frameBuffer.top == NULL || frameBuffer.top->height == 0 || frameBuffer.drawBuffer == GL_BACK) ? VI.height : frameBuffer.top->height;
|
||||
glScissor( gDP.scissor.ulx * OGL.scaleX, (screenHeight - gDP.scissor.lry) * OGL.scaleY + (frameBuffer.drawBuffer == GL_BACK ? OGL.heightOffset : 0),
|
||||
(gDP.scissor.lrx - gDP.scissor.ulx) * OGL.scaleX, (gDP.scissor.lry - gDP.scissor.uly) * OGL.scaleY );
|
||||
}
|
||||
|
@ -1206,9 +1206,8 @@ void OGL_ClearDepthBuffer()
|
|||
|
||||
DepthBuffer_ClearBuffer();
|
||||
|
||||
glDisable( GL_SCISSOR_TEST );
|
||||
|
||||
OGL_UpdateStates();
|
||||
glDisable( GL_SCISSOR_TEST );
|
||||
glDepthMask( TRUE );
|
||||
glClear( GL_DEPTH_BUFFER_BIT );
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user