1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Fix FrameBufferList::renderBuffer() when MSAA enabled.

This commit is contained in:
Sergey Lipskiy 2017-03-09 21:54:37 +07:00
parent 0775d28065
commit 7b3e700eed

View File

@ -1081,29 +1081,21 @@ void FrameBufferList::renderBuffer()
hOffset + dstX1,
vOffset + (s32)(dstY1*dstScaleY) };
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, ObjectHandle::null);
float clearColor[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
drawer.clearColorBuffer(clearColor);
TextureParam filter = textureParameters::FILTER_LINEAR;
ObjectHandle readBuffer;
if (pFilteredBuffer->m_pTexture->frameBufferTexture == CachedTexture::fbMultiSample) {
if (dstX0 > 0 || dstPartHeight > 0 ||
(srcCoord[2] - srcCoord[0]) != (dstCoord[2] - dstCoord[0]) ||
(srcCoord[3] - srcCoord[1]) != (dstCoord[3] - dstCoord[1])) {
pFilteredBuffer->resolveMultisampledTexture(true);
readBuffer = pFilteredBuffer->m_resolveFBO;
} else {
readBuffer = pFilteredBuffer->m_FBO;
filter = textureParameters::FILTER_NEAREST;
}
pFilteredBuffer->resolveMultisampledTexture(true);
readBuffer = pFilteredBuffer->m_resolveFBO;
pBufferTexture = pFilteredBuffer->m_pResolveTexture;
} else {
readBuffer = pFilteredBuffer->m_FBO;
}
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, ObjectHandle::null);
float clearColor[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
drawer.clearColorBuffer(clearColor);
GraphicsDrawer::BlitOrCopyRectParams blitParams;
blitParams.srcX0 = srcCoord[0];
blitParams.srcY0 = srcCoord[1];
@ -1138,12 +1130,12 @@ void FrameBufferList::renderBuffer()
if (pFilteredBuffer->m_pTexture->frameBufferTexture == CachedTexture::fbMultiSample) {
pFilteredBuffer->resolveMultisampledTexture();
readBuffer = pFilteredBuffer->m_resolveFBO;
pBufferTexture = pFilteredBuffer->m_pResolveTexture;
} else {
readBuffer = pFilteredBuffer->m_FBO;
pBufferTexture = pFilteredBuffer->m_pTexture;
}
pBufferTexture = pFilteredBuffer->m_pTexture;
blitParams.srcY0 = 0;
blitParams.srcY1 = min((s32)(srcY1*srcScaleY), (s32)pFilteredBuffer->m_pTexture->realHeight);
blitParams.srcWidth = pBufferTexture->realWidth;