Skip to content

Commit 2be5a7e

Browse files
committed
fixup: use glBindSampler()
1 parent 2931004 commit 2be5a7e

File tree

1 file changed

+30
-6
lines changed

1 file changed

+30
-6
lines changed

src/engine/renderer/tr_backend.cpp

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1625,18 +1625,42 @@ void RB_FXAA()
16251625
GL_BindToTMU( 0, tr.currentRenderImage[backEnd.currentMainFBO] )
16261626
);
16271627

1628-
// The framebuffer should use GL_LINEAR for FXAA to work.
1629-
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
1630-
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
1628+
bool greaterThanGL33 =true;// std::make_pair( glConfig.glMajor, glConfig.glMinor ) >= std::make_pair( 3, 3 );
1629+
1630+
// FXAA expect GL_LINEAR for the sampling to work.
1631+
if ( greaterThanGL33 )
1632+
{
1633+
// Bind a sampler.
1634+
GLuint sampler = 0;
1635+
glGenSamplers( 1, &sampler );
1636+
glSamplerParameteri( sampler, GL_TEXTURE_MAG_FILTER, GL_LINEAR) ;
1637+
glSamplerParameteri( sampler, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
1638+
glBindSampler( 0, sampler );
1639+
}
1640+
else
1641+
{
1642+
// Change the filter (requires a texture bind).
1643+
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
1644+
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
1645+
}
16311646

16321647
// This shader is run last, so let it render to screen.
16331648
R_BindNullFBO();
16341649

16351650
Tess_InstantScreenSpaceQuad();
16361651

1637-
// Restore GL_NEAREST to not break other effects.
1638-
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
1639-
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
1652+
// Make sure we didn't break other effects expecting GL_NEAREST.
1653+
if ( greaterThanGL33 )
1654+
{
1655+
// Unbind the sampler.
1656+
glBindSampler( 0, 0 );
1657+
}
1658+
else
1659+
{
1660+
// Restore the filter (requires a texture bind).
1661+
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
1662+
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
1663+
}
16401664

16411665
GL_CheckErrors();
16421666
}

0 commit comments

Comments
 (0)