mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-08 04:08:32 +09:00
53 lines
1.7 KiB
C++
53 lines
1.7 KiB
C++
#pragma once
|
|
#include "MG_Util/Types.h"
|
|
|
|
namespace MobileGL {
|
|
namespace MG_State {
|
|
namespace GLState {
|
|
enum class ShaderStage {
|
|
Vertex,
|
|
TessControl,
|
|
TessEval,
|
|
Geometry,
|
|
Fragment,
|
|
Compute
|
|
};
|
|
|
|
inline static GLenum GetGLShaderTypeByMGLShaderStage(ShaderStage stage) {
|
|
switch (stage) {
|
|
case ShaderStage::Vertex:
|
|
return GL_VERTEX_SHADER;
|
|
case ShaderStage::TessControl:
|
|
return GL_TESS_CONTROL_SHADER;
|
|
case ShaderStage::TessEval:
|
|
return GL_TESS_EVALUATION_SHADER;
|
|
case ShaderStage::Geometry:
|
|
return GL_GEOMETRY_SHADER;
|
|
case ShaderStage::Fragment:
|
|
return GL_FRAGMENT_SHADER;
|
|
case ShaderStage::Compute:
|
|
return GL_COMPUTE_SHADER;
|
|
default:
|
|
assert(false);
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
class ShaderObject {
|
|
public:
|
|
ShaderObject(const ShaderStage stage): m_stage(stage) {}
|
|
void SetShaderSource(const std::string& source);
|
|
void Compile();
|
|
|
|
const ShaderStage m_stage;
|
|
std::string m_source;
|
|
SharedPtr<glslang::TShader> m_shader;
|
|
std::string m_infoLog;
|
|
|
|
bool m_deleteStatus = false;
|
|
bool m_compileStatus = false;
|
|
};
|
|
}
|
|
}
|
|
}
|