From e72bdb67b580f143f5139de96aab526a941f5c24 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Fri, 28 Nov 2025 21:37:47 +0800 Subject: [PATCH] [Feat] (MG_State/TextureState): Add more TextureUploadTarget. --- .../MG_Impl/GLImpl/Texture/ProxyTexture.cpp | 5 ++++ .../GLState/TextureState/TextureEnum.h | 10 ++++++-- .../GLToMG/TextureEnumConverter.cpp | 13 +++++++++++ .../MGToGL/TextureEnumConverter.cpp | 23 ++++++++++--------- .../MGToMG/TextureEnumConverter.cpp | 14 +++++++++++ .../MGToStr/TextureEnumConverter.cpp | 20 ++++++++++++++++ 6 files changed, 72 insertions(+), 13 deletions(-) diff --git a/MobileGL/MG_Impl/GLImpl/Texture/ProxyTexture.cpp b/MobileGL/MG_Impl/GLImpl/Texture/ProxyTexture.cpp index 500b0725..da8bc71c 100644 --- a/MobileGL/MG_Impl/GLImpl/Texture/ProxyTexture.cpp +++ b/MobileGL/MG_Impl/GLImpl/Texture/ProxyTexture.cpp @@ -10,9 +10,14 @@ namespace MobileGL::MG_Impl::GLImpl { switch (target) { case TextureUploadTarget::ProxyCubeMap: case TextureUploadTarget::ProxyTexture1DArray: + case TextureUploadTarget::ProxyTexture2DArray: + case TextureUploadTarget::ProxyTexture1D: case TextureUploadTarget::ProxyTexture2D: + case TextureUploadTarget::ProxyTexture3D: case TextureUploadTarget::ProxyTexture2DMultisample: + case TextureUploadTarget::ProxyTexture2DMultisampleArray: case TextureUploadTarget::ProxyTextureRectangle: + case TextureUploadTarget::ProxyCubeMapArray: return true; default: return false; diff --git a/MobileGL/MG_State/GLState/TextureState/TextureEnum.h b/MobileGL/MG_State/GLState/TextureState/TextureEnum.h index 8277d8e1..d1d5a8bb 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureEnum.h +++ b/MobileGL/MG_State/GLState/TextureState/TextureEnum.h @@ -17,7 +17,7 @@ namespace MobileGL { Unknown = -1 }; - // Don't tinker with order in this enum + // Don't tinker with order in this enum (especially CubeMap faces), // it is used in TextureStorage enum class TextureUploadTarget { Texture1D, @@ -27,7 +27,9 @@ namespace MobileGL { ProxyTexture2D, ProxyTexture3D, Texture1DArray, + Texture2DArray, ProxyTexture1DArray, + ProxyTexture2DArray, TextureRectangle, ProxyTextureRectangle, CubeMapPositiveX, @@ -37,8 +39,12 @@ namespace MobileGL { CubeMapPositiveZ, CubeMapNegativeZ, ProxyCubeMap, + CubeMapArray, + ProxyCubeMapArray, Texture2DMultisample, + Texture2DMultisampleArray, ProxyTexture2DMultisample, + ProxyTexture2DMultisampleArray, TextureUploadTargetCount, Unknown = -1 }; @@ -182,4 +188,4 @@ namespace MobileGL { SwizzleParamCount, Unknown = -1 }; -} \ No newline at end of file +} // namespace MobileGL \ No newline at end of file diff --git a/MobileGL/MG_Util/Converters/GLToMG/TextureEnumConverter.cpp b/MobileGL/MG_Util/Converters/GLToMG/TextureEnumConverter.cpp index cd917d30..36bf9b25 100644 --- a/MobileGL/MG_Util/Converters/GLToMG/TextureEnumConverter.cpp +++ b/MobileGL/MG_Util/Converters/GLToMG/TextureEnumConverter.cpp @@ -1,4 +1,5 @@ #include "TextureEnumConverter.h" +#include "GL/glext.h" #include "MG_Util/Converters/GLToStr/GLEnumConverter.h" namespace MobileGL { @@ -290,6 +291,14 @@ namespace MobileGL { return TextureUploadTarget::Texture1DArray; case GL_PROXY_TEXTURE_1D_ARRAY: return TextureUploadTarget::ProxyTexture1DArray; + case GL_TEXTURE_2D_ARRAY: + return TextureUploadTarget::Texture2DArray; + case GL_TEXTURE_CUBE_MAP_ARRAY: + return TextureUploadTarget::CubeMapArray; + case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: + return TextureUploadTarget::ProxyCubeMapArray; + case GL_PROXY_TEXTURE_2D_ARRAY: + return TextureUploadTarget::ProxyTexture2DArray; case GL_TEXTURE_RECTANGLE: return TextureUploadTarget::TextureRectangle; case GL_PROXY_TEXTURE_RECTANGLE: @@ -312,6 +321,10 @@ namespace MobileGL { return TextureUploadTarget::Texture2DMultisample; case GL_PROXY_TEXTURE_2D_MULTISAMPLE: return TextureUploadTarget::ProxyTexture2DMultisample; + case GL_TEXTURE_2D_MULTISAMPLE_ARRAY: + return TextureUploadTarget::Texture2DMultisampleArray; + case GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: + return TextureUploadTarget::ProxyTexture2DMultisampleArray; default: return TextureUploadTarget::Unknown; } diff --git a/MobileGL/MG_Util/Converters/MGToGL/TextureEnumConverter.cpp b/MobileGL/MG_Util/Converters/MGToGL/TextureEnumConverter.cpp index 51d39ba4..84651976 100644 --- a/MobileGL/MG_Util/Converters/MGToGL/TextureEnumConverter.cpp +++ b/MobileGL/MG_Util/Converters/MGToGL/TextureEnumConverter.cpp @@ -306,22 +306,23 @@ namespace MobileGL { return GL_TEXTURE_2D_MULTISAMPLE; case TextureUploadTarget::ProxyTexture2DMultisample: return GL_PROXY_TEXTURE_2D_MULTISAMPLE; + case TextureUploadTarget::CubeMapArray: + return GL_TEXTURE_CUBE_MAP_ARRAY; + case TextureUploadTarget::ProxyCubeMapArray: + return GL_PROXY_TEXTURE_CUBE_MAP_ARRAY; + case TextureUploadTarget::Texture2DArray: + return GL_TEXTURE_2D_ARRAY; + case TextureUploadTarget::ProxyTexture2DArray: + return GL_PROXY_TEXTURE_2D_ARRAY; + case TextureUploadTarget::Texture2DMultisampleArray: + return GL_TEXTURE_2D_MULTISAMPLE_ARRAY; + case TextureUploadTarget::ProxyTexture2DMultisampleArray: + return GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY; default: return GL_UNKNOWN_MGL; } } - // GLenum ConvertSamplerFilterModeToGLEnum(SamplerFilterMode v) { - // switch (v) { - // case SamplerFilterMode::Nearest: - // return GL_NEAREST; - // case SamplerFilterMode::Linear: - // return GL_LINEAR; - // default: - // return GL_UNKNOWN_MGL; - // } - // } - GLenum ConvertSamplerFilterModeToGLEnum(SamplerFilterMode filter, SamplerMipmapMode mipmap) { switch (mipmap) { case SamplerMipmapMode::None: { diff --git a/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp b/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp index 2e5d1e93..e8b359ae 100644 --- a/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp +++ b/MobileGL/MG_Util/Converters/MGToMG/TextureEnumConverter.cpp @@ -20,10 +20,24 @@ namespace MobileGL { case TextureUploadTarget::CubeMapPositiveZ: case TextureUploadTarget::CubeMapNegativeZ: case TextureUploadTarget::ProxyCubeMap: + case TextureUploadTarget::CubeMapArray: + case TextureUploadTarget::ProxyCubeMapArray: return TextureTarget::TextureCubeMap; case TextureUploadTarget::Texture2DMultisample: case TextureUploadTarget::ProxyTexture2DMultisample: return TextureTarget::Texture2DMultisample; + case TextureUploadTarget::Texture2DMultisampleArray: + case TextureUploadTarget::ProxyTexture2DMultisampleArray: + return TextureTarget::Texture2DMultisampleArray; + case TextureUploadTarget::Texture3D: + case TextureUploadTarget::ProxyTexture3D: + return TextureTarget::Texture3D; + case TextureUploadTarget::Texture1D: + case TextureUploadTarget::ProxyTexture1D: + return TextureTarget::Texture1D; + case TextureUploadTarget::Texture2DArray: + case TextureUploadTarget::ProxyTexture2DArray: + return TextureTarget::Texture2DArray; default: return TextureTarget::Unknown; } diff --git a/MobileGL/MG_Util/Converters/MGToStr/TextureEnumConverter.cpp b/MobileGL/MG_Util/Converters/MGToStr/TextureEnumConverter.cpp index 97d6da6a..e5f851f5 100644 --- a/MobileGL/MG_Util/Converters/MGToStr/TextureEnumConverter.cpp +++ b/MobileGL/MG_Util/Converters/MGToStr/TextureEnumConverter.cpp @@ -296,6 +296,26 @@ namespace MobileGL { return "Texture2DMultisample"; case TextureUploadTarget::ProxyTexture2DMultisample: return "ProxyTexture2DMultisample"; + case TextureUploadTarget::CubeMapArray: + return "CubeMapArray"; + case TextureUploadTarget::ProxyCubeMapArray: + return "ProxyCubeMapArray"; + case TextureUploadTarget::Texture3D: + return "Texture3D"; + case TextureUploadTarget::ProxyTexture3D: + return "ProxyTexture3D"; + case TextureUploadTarget::Texture1D: + return "Texture1D"; + case TextureUploadTarget::ProxyTexture1D: + return "ProxyTexture1D"; + case TextureUploadTarget::Texture2DArray: + return "Texture2DArray"; + case TextureUploadTarget::ProxyTexture2DArray: + return "ProxyTexture2DArray"; + case TextureUploadTarget::Texture2DMultisampleArray: + return "Texture2DMultisampleArray"; + case TextureUploadTarget::ProxyTexture2DMultisampleArray: + return "ProxyTexture2DMultisampleArray"; default: return "Unknown"; }