[Fix] (MG_State/RenderState): track front face mode

This commit is contained in:
2026-06-06 08:46:43 +08:00
parent 5cfe9c8998
commit dd2bd267c1
13 changed files with 88 additions and 3 deletions
+8
View File
@@ -405,6 +405,14 @@ namespace MobileGL::MG_State {
return m_renderState.GetCullFaceMode();
}
void GLContext::SetFrontFaceMode(FrontFaceMode mode) {
m_renderState.SetFrontFaceMode(mode);
}
FrontFaceMode GLContext::GetFrontFaceMode() const {
return m_renderState.GetFrontFaceMode();
}
void GLContext::SetScissorBox(IntVec4 box) {
m_renderState.SetScissorBox(box);
}
+2
View File
@@ -134,6 +134,8 @@ namespace MobileGL {
PixelStoreParameters GetPixelStoreParameters(Bool isUnpack) const;
void SetCullFaceMode(CullFaceMode mode);
CullFaceMode GetCullFaceMode() const;
void SetFrontFaceMode(FrontFaceMode mode);
FrontFaceMode GetFrontFaceMode() const;
void SetScissorBox(IntVec4 box); // x, y, width, height
const IntVec4& GetScissorBox() const; // x, y, width, height
@@ -349,6 +349,17 @@ namespace MobileGL {
return m_parameters.CullFaceModeSetting;
}
void RenderState::SetFrontFaceMode(FrontFaceMode mode) {
if (m_parameters.FrontFaceModeSetting == mode) return;
m_parameters.FrontFaceModeSetting = mode;
++m_version;
}
FrontFaceMode RenderState::GetFrontFaceMode() const {
return m_parameters.FrontFaceModeSetting;
}
// --------------------- Scissor ---------------------
void RenderState::SetScissorBox(IntVec4 box) {
if (m_parameters.ScissorBox == box) return;
@@ -87,6 +87,13 @@ namespace MobileGL {
Unknown = -1
};
enum class FrontFaceMode {
CounterClockwise,
Clockwise,
FrontFaceModeCount,
Unknown = -1
};
enum class CapabilityInput {
Blend,
ClipDistance0,
@@ -171,6 +178,7 @@ namespace MobileGL {
// Cull Face
Bool CullFaceEnabled = false;
CullFaceMode CullFaceModeSetting = CullFaceMode::Back;
FrontFaceMode FrontFaceModeSetting = FrontFaceMode::CounterClockwise;
// Scissor
Bool ScissorTestEnabled = false;
@@ -235,6 +243,8 @@ namespace MobileGL {
// Cull Face
void SetCullFaceMode(CullFaceMode mode);
CullFaceMode GetCullFaceMode() const;
void SetFrontFaceMode(FrontFaceMode mode);
FrontFaceMode GetFrontFaceMode() const;
// Scissor
void SetScissorBox(IntVec4 box); // x, y, width, height