GLES3: reset anisotropic filtering when changing texture filtering mode

(cherry picked from commit 90f0e97eb9)
This commit is contained in:
LRFLEW 2023-07-17 00:18:39 -05:00 committed by Yuri Sizov
parent 7627337d63
commit f8ffad873a
1 changed files with 5 additions and 5 deletions

View File

@ -255,7 +255,7 @@ struct Texture {
GLenum pmin = GL_NEAREST; // param min GLenum pmin = GL_NEAREST; // param min
GLenum pmag = GL_NEAREST; // param mag GLenum pmag = GL_NEAREST; // param mag
GLint max_lod = 1000; GLint max_lod = 1000;
bool use_anisotropy = false; float anisotropy = 1.0f;
switch (state_filter) { switch (state_filter) {
case RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST: { case RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST: {
pmin = GL_NEAREST; pmin = GL_NEAREST;
@ -268,7 +268,7 @@ struct Texture {
max_lod = 0; max_lod = 0;
} break; } break;
case RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC: { case RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC: {
use_anisotropy = true; anisotropy = config->anisotropic_level;
}; };
[[fallthrough]]; [[fallthrough]];
case RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS: { case RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS: {
@ -283,7 +283,7 @@ struct Texture {
} }
} break; } break;
case RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC: { case RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC: {
use_anisotropy = true; anisotropy = config->anisotropic_level;
}; };
[[fallthrough]]; [[fallthrough]];
case RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS: { case RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS: {
@ -304,8 +304,8 @@ struct Texture {
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, pmag); glTexParameteri(target, GL_TEXTURE_MAG_FILTER, pmag);
glTexParameteri(target, GL_TEXTURE_BASE_LEVEL, 0); glTexParameteri(target, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(target, GL_TEXTURE_MAX_LEVEL, max_lod); glTexParameteri(target, GL_TEXTURE_MAX_LEVEL, max_lod);
if (config->support_anisotropic_filter && use_anisotropy) { if (config->support_anisotropic_filter) {
glTexParameterf(target, _GL_TEXTURE_MAX_ANISOTROPY_EXT, config->anisotropic_level); glTexParameterf(target, _GL_TEXTURE_MAX_ANISOTROPY_EXT, anisotropy);
} }
} }
void gl_set_repeat(RS::CanvasItemTextureRepeat p_repeat) { void gl_set_repeat(RS::CanvasItemTextureRepeat p_repeat) {