From 2be5dc923825dfd274aba3214e9fa5814db93249 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 27 Sep 2020 11:53:15 +0200 Subject: [PATCH] - fixed binding issues in OpenGL when resetting the samplers due to a texture filter change. --- src/common/rendering/gl/gl_samplers.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/common/rendering/gl/gl_samplers.cpp b/src/common/rendering/gl/gl_samplers.cpp index a0573c468..efe420474 100644 --- a/src/common/rendering/gl/gl_samplers.cpp +++ b/src/common/rendering/gl/gl_samplers.cpp @@ -109,7 +109,16 @@ uint8_t FSamplerManager::Bind(int texunit, int num, int lastval) 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; 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_CAMTEX], GL_TEXTURE_MIN_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]); + } }