mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-28 20:40:47 +00:00
- make sure that changing the texture filter mode does not clobber the global state
Need to rebind the samplers after modifying them to avoid undefined behavior. Fixes #397
This commit is contained in:
parent
867b8f006f
commit
b26a5b800e
1 changed files with 15 additions and 2 deletions
|
@ -109,7 +109,16 @@ uint8_t FSamplerManager::Bind(int texunit, int num, int lastval)
|
||||||
|
|
||||||
void FSamplerManager::SetTextureFilterMode()
|
void FSamplerManager::SetTextureFilterMode()
|
||||||
{
|
{
|
||||||
UnbindAll();
|
GLint bounds[IHardwareTexture::MAX_TEXTURES];
|
||||||
|
|
||||||
|
// Unbind all
|
||||||
|
for(int i = IHardwareTexture::MAX_TEXTURES-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
glActiveTexture(GL_TEXTURE0 + i);
|
||||||
|
glGetIntegerv(GL_SAMPLER_BINDING, &bounds[i]);
|
||||||
|
glBindSampler(i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
int filter = sysCallbacks && sysCallbacks->DisableTextureFilter && sysCallbacks->DisableTextureFilter() ? 0 : gl_texture_filter;
|
int filter = sysCallbacks && sysCallbacks->DisableTextureFilter && sysCallbacks->DisableTextureFilter() ? 0 : gl_texture_filter;
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
|
@ -122,6 +131,10 @@ void FSamplerManager::SetTextureFilterMode()
|
||||||
glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter);
|
glSamplerParameteri(mSamplers[CLAMP_XY_NOMIP], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter);
|
||||||
glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter);
|
glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MIN_FILTER, TexFilter[filter].magfilter);
|
||||||
glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter);
|
glSamplerParameteri(mSamplers[CLAMP_CAMTEX], GL_TEXTURE_MAG_FILTER, TexFilter[filter].magfilter);
|
||||||
|
for(int i = 0; i < IHardwareTexture::MAX_TEXTURES; i++)
|
||||||
|
{
|
||||||
|
glBindSampler(i, bounds[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue