From e96e0ecc42e96d9af184d6c08c2a3fb4097f8cc5 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Mon, 11 Aug 2025 13:12:50 +0800 Subject: [PATCH] [Fix] (MG_State/Program): fix ShaderObject compilation error --- .../GLState/ProgramState/ShaderObject.cpp | 5 +++- .../GLState/ProgramState/ShaderObject.h | 25 +++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/MobileGL/MG_State/GLState/ProgramState/ShaderObject.cpp b/MobileGL/MG_State/GLState/ProgramState/ShaderObject.cpp index 0bf85db3..fd8a07fb 100644 --- a/MobileGL/MG_State/GLState/ProgramState/ShaderObject.cpp +++ b/MobileGL/MG_State/GLState/ProgramState/ShaderObject.cpp @@ -11,7 +11,10 @@ namespace MobileGL { void ShaderObject::Compile() { using namespace MG_Util::ShaderTranspiler; ShaderAttrib attrib{ - .sourceStr = m_source, .shaderType = GetGLShaderTypeByMGLShaderStage(m_stage), .flags = 0}; + .shaderType = GetGLShaderTypeByMGLShaderStage(m_stage), + .sourceStr = m_source, + .flags = 0 + }; auto result = ShaderCompiler::CompileShader(attrib); if (result) { diff --git a/MobileGL/MG_State/GLState/ProgramState/ShaderObject.h b/MobileGL/MG_State/GLState/ProgramState/ShaderObject.h index 7619f2b2..d473c097 100644 --- a/MobileGL/MG_State/GLState/ProgramState/ShaderObject.h +++ b/MobileGL/MG_State/GLState/ProgramState/ShaderObject.h @@ -10,7 +10,8 @@ namespace MobileGL { TessEval, Geometry, Fragment, - Compute + Compute, + Unknown = -1 }; inline static GLenum GetGLShaderTypeByMGLShaderStage(ShaderStage stage) { @@ -29,7 +30,27 @@ namespace MobileGL { return GL_COMPUTE_SHADER; default: assert(false); - return 0; + return GL_FALSE; + } + } + + inline static ShaderStage GetMGLShaderStageByGLShaderType(GLenum type) { + switch (type) { + case GL_VERTEX_SHADER: + return ShaderStage::Vertex; + case GL_TESS_CONTROL_SHADER: + return ShaderStage::TessControl; + case GL_TESS_EVALUATION_SHADER: + return ShaderStage::TessEval; + case GL_GEOMETRY_SHADER: + return ShaderStage::Geometry; + case GL_FRAGMENT_SHADER: + return ShaderStage::Fragment; + case GL_COMPUTE_SHADER: + return ShaderStage::Compute; + default: + assert(false); + return ShaderStage::Unknown; } }