From 850081d3132e3a0502e740966fbee01c98dde566 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Sun, 16 Nov 2025 00:43:23 +0800 Subject: [PATCH] [Feat] (MG_State/SamplerState): Uniform SamplerParameters. --- .../GLState/SamplerState/SamplerObject.cpp | 55 +++++++++---------- .../GLState/SamplerState/SamplerObject.h | 23 +++++--- 2 files changed, 42 insertions(+), 36 deletions(-) diff --git a/MobileGL/MG_State/GLState/SamplerState/SamplerObject.cpp b/MobileGL/MG_State/GLState/SamplerState/SamplerObject.cpp index a11ac085..03780c94 100644 --- a/MobileGL/MG_State/GLState/SamplerState/SamplerObject.cpp +++ b/MobileGL/MG_State/GLState/SamplerState/SamplerObject.cpp @@ -3,106 +3,103 @@ namespace MobileGL { namespace MG_State { namespace GLState { - - SamplerObject::SamplerObject(Uint externalIndex) - : m_externalIndex(externalIndex), m_wrapS(SamplerWrapMode::Repeat), m_wrapT(SamplerWrapMode::Repeat), - m_wrapR(SamplerWrapMode::Repeat), m_minFilter(SamplerFilterMode::Linear), - m_magFilter(SamplerFilterMode::Linear), m_mipmapMode(SamplerMipmapMode::None), m_minLod(0.0f), - m_maxLod(1000.0f), m_lodBias(0.0f), m_compareMode(SamplerCompareMode::None), - m_compareFunc(SamplerCompareFunc::Less) {} + SamplerObject::SamplerObject(Uint externalIndex) : m_externalIndex(externalIndex) {} void SamplerObject::SetWrapS(SamplerWrapMode mode) { - m_wrapS = mode; + m_samplerParameters.wrapS = mode; } void SamplerObject::SetWrapT(SamplerWrapMode mode) { - m_wrapT = mode; + m_samplerParameters.wrapT = mode; } void SamplerObject::SetWrapR(SamplerWrapMode mode) { - m_wrapR = mode; + m_samplerParameters.wrapR = mode; } void SamplerObject::SetMinFilter(SamplerFilterMode mode) { - m_minFilter = mode; + m_samplerParameters.minFilter = mode; } void SamplerObject::SetMagFilter(SamplerFilterMode mode) { - m_magFilter = mode; + m_samplerParameters.magFilter = mode; } void SamplerObject::SetMipmapMode(SamplerMipmapMode mode) { - m_mipmapMode = mode; + m_samplerParameters.mipmapMode = mode; } void SamplerObject::SetLodRange(Float minLod, Float maxLod) { if (minLod > maxLod) { THROW_EXCEPTION("minLod cannot be greater than maxLod"); } - m_minLod = minLod; - m_maxLod = maxLod; + m_samplerParameters.minLod = minLod; + m_samplerParameters.maxLod = maxLod; } void SamplerObject::SetLodBias(Float bias) { - m_lodBias = bias; + m_samplerParameters.lodBias = bias; } void SamplerObject::SetSamplerCompareFunc(SamplerCompareFunc func) { - m_compareFunc = func; + m_samplerParameters.compareFunc = func; } void SamplerObject::SetCompareMode(SamplerCompareMode mode) { - m_compareMode = mode; + m_samplerParameters.compareMode = mode; } SamplerWrapMode SamplerObject::GetWrapS() const { - return m_wrapS; + return m_samplerParameters.wrapS; } SamplerWrapMode SamplerObject::GetWrapT() const { - return m_wrapT; + return m_samplerParameters.wrapT; } SamplerWrapMode SamplerObject::GetWrapR() const { - return m_wrapR; + return m_samplerParameters.wrapR; } SamplerFilterMode SamplerObject::GetMinFilter() const { - return m_minFilter; + return m_samplerParameters.minFilter; } SamplerFilterMode SamplerObject::GetMagFilter() const { - return m_magFilter; + return m_samplerParameters.magFilter; } SamplerMipmapMode SamplerObject::GetMipmapMode() const { - return m_mipmapMode; + return m_samplerParameters.mipmapMode; } Float SamplerObject::GetMinLod() const { - return m_minLod; + return m_samplerParameters.minLod; } Float SamplerObject::GetMaxLod() const { - return m_maxLod; + return m_samplerParameters.maxLod; } Float SamplerObject::GetLodBias() const { - return m_lodBias; + return m_samplerParameters.lodBias; } SamplerCompareMode SamplerObject::GetCompareMode() const { - return m_compareMode; + return m_samplerParameters.compareMode; } SamplerCompareFunc SamplerObject::GetSamplerCompareFunc() const { - return m_compareFunc; + return m_samplerParameters.compareFunc; } Uint SamplerObject::GetExternalIndex() const { return m_externalIndex; } + const SamplerParameters& SamplerObject::GetAllSamplerParameters() const { + return m_samplerParameters; + } } // namespace GLState } // namespace MG_State } // namespace MobileGL diff --git a/MobileGL/MG_State/GLState/SamplerState/SamplerObject.h b/MobileGL/MG_State/GLState/SamplerState/SamplerObject.h index 04dced30..756223f6 100644 --- a/MobileGL/MG_State/GLState/SamplerState/SamplerObject.h +++ b/MobileGL/MG_State/GLState/SamplerState/SamplerObject.h @@ -45,6 +45,20 @@ namespace MobileGL { Unknown = -1 }; + struct SamplerParameters { + SamplerWrapMode wrapS = SamplerWrapMode::Repeat; + SamplerWrapMode wrapT = SamplerWrapMode::Repeat; + SamplerWrapMode wrapR = SamplerWrapMode::Repeat; + SamplerFilterMode minFilter = SamplerFilterMode::Linear; + SamplerFilterMode magFilter = SamplerFilterMode::Linear; + SamplerMipmapMode mipmapMode = SamplerMipmapMode::None; + Float minLod = -1000.0f; + Float maxLod = 1000.0f; + Float lodBias = 0.0f; + SamplerCompareFunc compareFunc = SamplerCompareFunc::Always; + SamplerCompareMode compareMode = SamplerCompareMode::None; + }; + namespace MG_State { namespace GLState { class SamplerObject { @@ -74,16 +88,11 @@ namespace MobileGL { SamplerCompareMode GetCompareMode() const; SamplerCompareFunc GetSamplerCompareFunc() const; Uint GetExternalIndex() const; + const SamplerParameters& GetAllSamplerParameters() const; private: const Uint m_externalIndex; - SamplerWrapMode m_wrapS, m_wrapT, m_wrapR; - SamplerFilterMode m_minFilter, m_magFilter; - SamplerMipmapMode m_mipmapMode; - Float m_minLod, m_maxLod; - Float m_lodBias; - SamplerCompareMode m_compareMode; - SamplerCompareFunc m_compareFunc; + SamplerParameters m_samplerParameters; }; } // namespace GLState } // namespace MG_State