[Fix] (MG_State/Program): fix ShaderObject compilation error

This commit is contained in:
2025-08-11 13:12:50 +08:00
parent ace0b6d226
commit e96e0ecc42
2 changed files with 27 additions and 3 deletions
@@ -11,7 +11,10 @@ namespace MobileGL {
void ShaderObject::Compile() { void ShaderObject::Compile() {
using namespace MG_Util::ShaderTranspiler; using namespace MG_Util::ShaderTranspiler;
ShaderAttrib attrib{ 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); auto result = ShaderCompiler::CompileShader(attrib);
if (result) { if (result) {
@@ -10,7 +10,8 @@ namespace MobileGL {
TessEval, TessEval,
Geometry, Geometry,
Fragment, Fragment,
Compute Compute,
Unknown = -1
}; };
inline static GLenum GetGLShaderTypeByMGLShaderStage(ShaderStage stage) { inline static GLenum GetGLShaderTypeByMGLShaderStage(ShaderStage stage) {
@@ -29,7 +30,27 @@ namespace MobileGL {
return GL_COMPUTE_SHADER; return GL_COMPUTE_SHADER;
default: default:
assert(false); 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;
} }
} }