Ensure WRAP_R is set to CLAMP_TO_EDGE when sampling textures in GL

This commit is contained in:
baldurk
2019-11-20 12:01:25 +00:00
parent 66aaf6dc13
commit 37deb472ea
2 changed files with 4 additions and 0 deletions
+3
View File
@@ -1281,6 +1281,7 @@ GLReplay::TextureSamplerState GLReplay::SetSamplerParams(GLenum target, GLuint t
GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_MAG_FILTER, (GLint *)&ret.magFilter);
GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_S, (GLint *)&ret.wrapS);
GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)&ret.wrapT);
GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_R, (GLint *)&ret.wrapR);
GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&ret.compareMode);
// disable depth comparison
@@ -1291,6 +1292,7 @@ GLReplay::TextureSamplerState GLReplay::SetSamplerParams(GLenum target, GLuint t
GLenum param = eGL_CLAMP_TO_EDGE;
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_S, (GLint *)&param);
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)&param);
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_R, (GLint *)&param);
// depending on the mode, set min/mag filter
GLenum minFilter = eGL_NEAREST;
@@ -1326,6 +1328,7 @@ void GLReplay::RestoreSamplerParams(GLenum target, GLuint texname, TextureSample
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_S, (GLint *)&state.wrapS);
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)&state.wrapT);
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_R, (GLint *)&state.wrapR);
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_MIN_FILTER, (GLint *)&state.minFilter);
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_MAG_FILTER, (GLint *)&state.magFilter);
GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&state.compareMode);
+1
View File
@@ -304,6 +304,7 @@ private:
GLenum magFilter = eGL_NEAREST;
GLenum wrapS = eGL_CLAMP_TO_EDGE;
GLenum wrapT = eGL_CLAMP_TO_EDGE;
GLenum wrapR = eGL_CLAMP_TO_EDGE;
GLenum compareMode = eGL_NONE;
};