From 32c062d019deddca9f84f9c95ff6bae736985f07 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Sat, 29 Nov 2025 01:33:58 +0800 Subject: [PATCH] [Feat] (MG_State/TextureState): Add ITextureObject::GetAllSwizzleParams --- .../GLState/TextureState/TextureObject.cpp | 20 ++++++++------ .../GLState/TextureState/TextureObject.h | 26 +++++++++++-------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp b/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp index fbb2a8e7..dd5cdb88 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp +++ b/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp @@ -53,13 +53,13 @@ namespace MobileGL { TextureSwizzleParam TextureObjectBase::GetSwizzleParam(TextureSwizzleParam param) const { switch (param) { case TextureSwizzleParam::Red: - return m_swizzleParams[0]; + return m_swizzleParams.r(); case TextureSwizzleParam::Green: - return m_swizzleParams[1]; + return m_swizzleParams.g(); case TextureSwizzleParam::Blue: - return m_swizzleParams[2]; + return m_swizzleParams.b(); case TextureSwizzleParam::Alpha: - return m_swizzleParams[3]; + return m_swizzleParams.a(); default: MOBILEGL_ASSERT(false, "TextureObjectBase::GetSwizzleParam: Invalid TextureSwizzleParam: %d", static_cast(param)); @@ -67,19 +67,23 @@ namespace MobileGL { } } + const Vec4& TextureObjectBase::GetAllSwizzleParams() const { + return m_swizzleParams; + } + void TextureObjectBase::SetSwizzleParam(TextureSwizzleParam param, TextureSwizzleParam value) { switch (param) { case TextureSwizzleParam::Red: - m_swizzleParams[0] = value; + m_swizzleParams.r() = value; break; case TextureSwizzleParam::Green: - m_swizzleParams[1] = value; + m_swizzleParams.g() = value; break; case TextureSwizzleParam::Blue: - m_swizzleParams[2] = value; + m_swizzleParams.b() = value; break; case TextureSwizzleParam::Alpha: - m_swizzleParams[3] = value; + m_swizzleParams.a() = value; break; default: MOBILEGL_ASSERT(false, "TextureObjectBase::SetSwizzleParam: Invalid TextureSwizzleParam: %d", diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObject.h b/MobileGL/MG_State/GLState/TextureState/TextureObject.h index 096c3e05..4b75cd04 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObject.h +++ b/MobileGL/MG_State/GLState/TextureState/TextureObject.h @@ -35,6 +35,7 @@ namespace MobileGL { virtual void SetBorderColor(const FloatVec4& color) = 0; virtual TextureSwizzleParam GetSwizzleParam(TextureSwizzleParam param) const = 0; virtual void SetSwizzleParam(TextureSwizzleParam param, TextureSwizzleParam value) = 0; + virtual const Vec4& GetAllSwizzleParams() const = 0; virtual const UintVec2& GetLevelRange() const = 0; virtual void SetBaseLevel(Uint baseLevel) = 0; virtual void SetMaxLevel(Uint maxLevel) = 0; @@ -48,14 +49,15 @@ namespace MobileGL { virtual ~TextureObjectBase() = default; // Mipmap ops -// Uint GetMipmapLevelCount() const = 0; -// const IntVec3 GetMipmapTexelSize(TextureUploadTarget target, Uint mipmapLevel) const = 0; -// const SizeT GetMipmapByteSize(TextureUploadTarget target, Uint mipmapLevel) const = 0; -// void AllocateStorage(TextureUploadTarget uploadTarget, Uint mipmapLevel, MipmapInput input) = 0; -// void UpdateMipmapSubData(TextureUploadTarget uploadTarget, Uint mipmapLevel, DataPtr input) = 0; -// void* MapMipmapData(TextureUploadTarget uploadTarget, Uint mipmapLevel) = 0; -// void MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, bool dirty) = 0; -// bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const = 0; + // Uint GetMipmapLevelCount() const = 0; + // const IntVec3 GetMipmapTexelSize(TextureUploadTarget target, Uint mipmapLevel) const = + // 0; const SizeT GetMipmapByteSize(TextureUploadTarget target, Uint mipmapLevel) const = + // 0; void AllocateStorage(TextureUploadTarget uploadTarget, Uint mipmapLevel, + // MipmapInput input) = 0; void UpdateMipmapSubData(TextureUploadTarget uploadTarget, + // Uint mipmapLevel, DataPtr input) = 0; void* MapMipmapData(TextureUploadTarget + // uploadTarget, Uint mipmapLevel) = 0; void MarkStorageDirty(TextureUploadTarget + // uploadTarget, Uint mipmapLevel, bool dirty) = 0; bool + // IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const = 0; TextureInternalFormat GetFormat() const override; TextureTarget GetTarget() const override; @@ -67,6 +69,7 @@ namespace MobileGL { const FloatVec4& GetBorderColor() const override; void SetBorderColor(const FloatVec4& color) override; TextureSwizzleParam GetSwizzleParam(TextureSwizzleParam param) const override; + const Vec4& GetAllSwizzleParams() const override; void SetSwizzleParam(TextureSwizzleParam param, TextureSwizzleParam value) override; const UintVec2& GetLevelRange() const override; void SetBaseLevel(Uint baseLevel) override; @@ -78,14 +81,15 @@ namespace MobileGL { TextureInternalFormat m_internalFormat = TextureInternalFormat::Unknown; SharedPtr m_sampler = nullptr; FloatVec4 m_borderColor = {0.0f, 0.0f, 0.0f, 0.0f}; - TextureSwizzleParam m_swizzleParams[4] = {TextureSwizzleParam::Red, TextureSwizzleParam::Green, - TextureSwizzleParam::Blue, TextureSwizzleParam::Alpha}; + Vec4 m_swizzleParams = {TextureSwizzleParam::Red, TextureSwizzleParam::Green, + TextureSwizzleParam::Blue, TextureSwizzleParam::Alpha}; UintVec2 m_levelRange = {0, 1000}; }; class TextureObjectWithOneMipmap : public TextureObjectBase { public: - TextureObjectWithOneMipmap(TextureTarget target, Uint externalIndex): TextureObjectBase(target, externalIndex) {} + TextureObjectWithOneMipmap(TextureTarget target, Uint externalIndex, Bool isDefaultTexture) + : TextureObjectBase(target, externalIndex, isDefaultTexture) {} virtual ~TextureObjectWithOneMipmap() = default; Uint GetMipmapLevelCount() const override;