mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
Fix multisampling when the VI origin is not 0
This happens with Beetle Adventure Racing when the movie reel effect is at work. It threw up a whole bunch of errors without taking into account whether or not the framebuffer is multi-sampled.
This commit is contained in:
parent
7a4ef394b1
commit
04e90bee85
|
@ -1004,13 +1004,19 @@ void FrameBufferList::renderBuffer(u32 _address)
|
||||||
const u32 size = *REG.VI_STATUS & 3;
|
const u32 size = *REG.VI_STATUS & 3;
|
||||||
pBuffer = findBuffer(_address + (((*REG.VI_WIDTH)*VI.height)<<size>>1));
|
pBuffer = findBuffer(_address + (((*REG.VI_WIDTH)*VI.height)<<size>>1));
|
||||||
if (pBuffer != NULL) {
|
if (pBuffer != NULL) {
|
||||||
|
pFilteredBuffer = PostProcessor::get().doBlur(PostProcessor::get().doGammaCorrection(pBuffer));
|
||||||
srcY0 = 0;
|
srcY0 = 0;
|
||||||
srcY1 = srcPartHeight;
|
srcY1 = srcPartHeight;
|
||||||
dstY0 = dstY1;
|
dstY0 = dstY1;
|
||||||
dstY1 = dstY0 + dstPartHeight;
|
dstY1 = dstY0 + dstPartHeight;
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, pBuffer->m_FBO);
|
if (pFilteredBuffer->m_pTexture->frameBufferTexture == CachedTexture::fbMultiSample) {
|
||||||
|
pFilteredBuffer->resolveMultisampledTexture();
|
||||||
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, pFilteredBuffer->m_resolveFBO);
|
||||||
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
|
} else
|
||||||
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, pFilteredBuffer->m_FBO);
|
||||||
glBlitFramebuffer(
|
glBlitFramebuffer(
|
||||||
0, (GLint)(srcY0*srcScaleY), Xwidth, min((GLint)(srcY1*srcScaleY), (GLint)pBuffer->m_pTexture->realHeight),
|
0, (GLint)(srcY0*srcScaleY), Xwidth, min((GLint)(srcY1*srcScaleY), (GLint)pFilteredBuffer->m_pTexture->realHeight),
|
||||||
hOffset, vOffset + (GLint)(dstY0*dstScaleY), hOffset + X1, vOffset + (GLint)(dstY1*dstScaleY),
|
hOffset, vOffset + (GLint)(dstY0*dstScaleY), hOffset + X1, vOffset + (GLint)(dstY1*dstScaleY),
|
||||||
GL_COLOR_BUFFER_BIT, filter
|
GL_COLOR_BUFFER_BIT, filter
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user