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; } }