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

Fix TexrectDrawer when frame buffer emulation disabled.

This commit is contained in:
Sergey Lipskiy 2018-03-21 21:20:57 +07:00
parent 5ccc40423f
commit ed21ec774b
3 changed files with 13 additions and 2 deletions

View File

@ -518,6 +518,8 @@ void FrameBufferList::setCurrentDrawBuffer() const
{
if (m_pCurrent != nullptr)
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, m_pCurrent->m_FBO);
else if (!m_list.empty())
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, m_list.back().m_FBO);
}
FrameBuffer * FrameBufferList::findBuffer(u32 _startAddress)

View File

@ -104,6 +104,14 @@ void TexrectDrawer::_setViewport() const
gfxContext.setViewport(0, 0, bufferWidth, VI_GetMaxBufferHeight(bufferWidth));
}
void TexrectDrawer::_setDrawBuffer()
{
if (m_pBuffer != nullptr)
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, m_pBuffer->m_FBO);
else
frameBufferList().setCurrentDrawBuffer();
}
void TexrectDrawer::add()
{
DisplayWindow & wnd = dwnd();
@ -278,7 +286,7 @@ bool TexrectDrawer::draw()
rect[3].t0 = t1;
drawer.updateScissor(m_pBuffer);
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, m_pBuffer != nullptr ? m_pBuffer->m_FBO : ObjectHandle::null);
_setDrawBuffer();
Context::DrawRectParameters rectParams;
rectParams.mode = drawmode::TRIANGLE_STRIP;
@ -313,7 +321,7 @@ bool TexrectDrawer::draw()
gfxContext.enable(enable::SCISSOR_TEST, true);
m_pBuffer = frameBufferList().getCurrent();
gfxContext.bindFramebuffer(bufferTarget::DRAW_FRAMEBUFFER, m_pBuffer != nullptr ? m_pBuffer->m_FBO : ObjectHandle::null);
_setDrawBuffer();
m_numRects = 0;
m_vecRectCoords.clear();

View File

@ -24,6 +24,7 @@ public:
private:
void _setViewport() const;
void _setDrawBuffer();
u32 m_numRects;
u64 m_otherMode;