mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
Fix some issues with multisampling which were causing GL errors
This commit is contained in:
parent
fedb3a08a1
commit
478344ab5f
|
@ -34,7 +34,7 @@ DepthBuffer::DepthBuffer(DepthBuffer && _other) :
|
||||||
m_depthImageFBO(_other.m_depthImageFBO), m_pDepthImageTexture(_other.m_pDepthImageTexture), m_pDepthBufferTexture(_other.m_pDepthBufferTexture),
|
m_depthImageFBO(_other.m_depthImageFBO), m_pDepthImageTexture(_other.m_pDepthImageTexture), m_pDepthBufferTexture(_other.m_pDepthBufferTexture),
|
||||||
m_depthRenderbuffer(_other.m_depthRenderbuffer), m_depthRenderbufferWidth(_other.m_depthRenderbufferWidth),
|
m_depthRenderbuffer(_other.m_depthRenderbuffer), m_depthRenderbufferWidth(_other.m_depthRenderbufferWidth),
|
||||||
m_cleared(_other.m_cleared), m_pResolveDepthBufferTexture(_other.m_pResolveDepthBufferTexture), m_resolved(_other.m_resolved),
|
m_cleared(_other.m_cleared), m_pResolveDepthBufferTexture(_other.m_pResolveDepthBufferTexture), m_resolved(_other.m_resolved),
|
||||||
m_pDepthBufferCopyTexture(_other.m_pDepthBufferCopyTexture), m_copied(m_copied)
|
m_pDepthBufferCopyTexture(_other.m_pDepthBufferCopyTexture), m_copied(_other.m_copied)
|
||||||
{
|
{
|
||||||
_other.m_depthImageFBO = 0;
|
_other.m_depthImageFBO = 0;
|
||||||
_other.m_pDepthImageTexture = nullptr;
|
_other.m_pDepthImageTexture = nullptr;
|
||||||
|
@ -267,18 +267,11 @@ CachedTexture * DepthBuffer::copyDepthBufferTexture(FrameBuffer * _pBuffer)
|
||||||
glReadBuffer(GL_COLOR_ATTACHMENT0);
|
glReadBuffer(GL_COLOR_ATTACHMENT0);
|
||||||
assert(checkFBO());
|
assert(checkFBO());
|
||||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_copyFBO);
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_copyFBO);
|
||||||
#ifdef GL_MULTISAMPLING_SUPPORT
|
|
||||||
GLenum textarget = config.video.multisampling != 0 ? GL_TEXTURE_2D_MULTISAMPLE : GL_TEXTURE_2D;
|
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
|
||||||
#else
|
_pBuffer->m_pTexture->frameBufferTexture == CachedTexture::fbMultiSample ? _pBuffer->m_pResolveTexture->glName : _pBuffer->m_pTexture->glName,
|
||||||
GLenum textarget = GL_TEXTURE_2D;
|
|
||||||
#endif
|
|
||||||
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
|
|
||||||
GL_COLOR_ATTACHMENT0,
|
|
||||||
textarget,
|
|
||||||
_pBuffer->m_pTexture->frameBufferTexture == CachedTexture::fbMultiSample ?
|
|
||||||
_pBuffer->m_pResolveTexture->glName :
|
|
||||||
_pBuffer->m_pTexture->glName,
|
|
||||||
0);
|
0);
|
||||||
|
|
||||||
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_pDepthBufferCopyTexture->glName, 0);
|
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_pDepthBufferCopyTexture->glName, 0);
|
||||||
assert(checkFBO());
|
assert(checkFBO());
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
|
|
|
@ -364,7 +364,14 @@ CachedTexture * FrameBuffer::_getSubTexture(u32 _t)
|
||||||
if (y0 + copyHeight > m_pTexture->realHeight)
|
if (y0 + copyHeight > m_pTexture->realHeight)
|
||||||
copyHeight = m_pTexture->realHeight - y0;
|
copyHeight = m_pTexture->realHeight - y0;
|
||||||
|
|
||||||
|
#ifdef GLESX
|
||||||
|
if (m_pTexture->frameBufferTexture == CachedTexture::fbMultiSample){
|
||||||
|
resolveMultisampledTexture(true);
|
||||||
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_resolveFBO);
|
||||||
|
}else
|
||||||
|
#endif
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
||||||
|
|
||||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_SubFBO);
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_SubFBO);
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
glBlitFramebuffer(
|
glBlitFramebuffer(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user