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

Fix in FrameBufferList::renderBuffer() : draw blank frame if VI state is wrong.

Previously renderBuffer() did nothing in that case and last rendered frame remained on screen.

Fixed Perfect Dark (Missing Transition Animation at end of Title Intro Screen - PD Logo Doesn't Disappear) #1715
This commit is contained in:
Sergey Lipskiy 2018-09-24 17:44:38 +07:00
parent 2e2cbcfcfc
commit 3faa383c55

View File

@ -1254,9 +1254,6 @@ void FrameBufferList::OverscanBuffer::draw(u32 _fullHeight, bool _PAL)
void FrameBufferList::renderBuffer()
{
if (VI.width == 0 || *REG.VI_WIDTH == 0 || *REG.VI_H_START == 0) // H width is zero. Don't draw
return;
if (g_debugger.isDebugMode()) {
g_debugger.draw();
return;
@ -1268,8 +1265,14 @@ void FrameBufferList::renderBuffer()
}
RdpUpdateResult rdpRes;
if (!rdp_update(rdpRes))
if (!rdp_update(rdpRes)) {
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, ObjectHandle::defaultFramebuffer);
gfxContext.clearColorBuffer(0.0f, 0.0f, 0.0f, 0.0f);
dwnd().swapBuffers();
if (m_pCurrent != nullptr)
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, m_pCurrent->m_FBO);
return;
}
FrameBuffer *pBuffer = findBuffer(rdpRes.vi_origin);
if (pBuffer == nullptr)