From 6c4340af432c5214471a6144edd074297b955429 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Sat, 1 Nov 2025 16:03:06 +0800 Subject: [PATCH] [Feat] (MG_Backend/DirectGLES): Handle newly added params in backend. --- MobileGL/MG_Backend/DirectGLES/Managers.cpp | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index 337e5e1e..51d256bc 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -300,9 +300,36 @@ namespace MobileGL::MG_Backend::DirectGLES { target, GL_TEXTURE_WRAP_T, MG_Util::ConvertSamplerWrapModeToGLEnum(samplerObject->GetWrapT())); MG_External::GLES::glTexParameteri( target, GL_TEXTURE_WRAP_R, MG_Util::ConvertSamplerWrapModeToGLEnum(samplerObject->GetWrapR())); + MG_External::GLES::glTexParameteri(target, GL_TEXTURE_MIN_LOD, samplerObject->GetMinLod()); + MG_External::GLES::glTexParameteri(target, GL_TEXTURE_MAX_LOD, samplerObject->GetMaxLod()); + MG_External::GLES::glTexParameteri( + target, GL_TEXTURE_COMPARE_FUNC, + MG_Util::ConvertSamplerCompareFuncToGLEnum(samplerObject->GetSamplerCompareFunc())); + MG_External::GLES::glTexParameteri( + target, GL_TEXTURE_COMPARE_MODE, + MG_Util::ConvertSamplerCompareModeToGLEnum(samplerObject->GetCompareMode())); } } + { // Update texture parameters + const auto& levelRange = stateTextureObject->GetLevelRange(); + MG_External::GLES::glTexParameteri(target, GL_TEXTURE_BASE_LEVEL, static_cast(levelRange.x())); + MG_External::GLES::glTexParameteri(target, GL_TEXTURE_MAX_LEVEL, static_cast(levelRange.y())); + GLenum swizzleParams[4] = {MG_Util::ConvertTextureSwizzleParamToGLEnum( + stateTextureObject->GetSwizzleParam(TextureSwizzleParam::Red)), + MG_Util::ConvertTextureSwizzleParamToGLEnum( + stateTextureObject->GetSwizzleParam(TextureSwizzleParam::Green)), + MG_Util::ConvertTextureSwizzleParamToGLEnum( + stateTextureObject->GetSwizzleParam(TextureSwizzleParam::Blue)), + MG_Util::ConvertTextureSwizzleParamToGLEnum( + stateTextureObject->GetSwizzleParam(TextureSwizzleParam::Alpha))}; + MG_External::GLES::glTexParameteriv(target, GL_TEXTURE_SWIZZLE_RGBA, + reinterpret_cast(swizzleParams)); + const auto& borderColor = stateTextureObject->GetBorderColor(); + GLfloat borderColorArray[4] = {borderColor.x(), borderColor.y(), borderColor.z(), borderColor.w()}; + MG_External::GLES::glTexParameterfv(target, GL_TEXTURE_BORDER_COLOR, borderColorArray); + } + { // Update all dirty mipmap levels const auto& mipmaps = stateTextureObject->GetMipmaps(); GLenum glInternalFormat, glType, glFormat;