summaryrefslogtreecommitdiff
path: root/src/GFX/Shading
diff options
context:
space:
mode:
Diffstat (limited to 'src/GFX/Shading')
-rw-r--r--src/GFX/Shading/Program.cpp2
-rw-r--r--src/GFX/Shading/Program.hpp2
-rw-r--r--src/GFX/Shading/Shader.cpp14
-rw-r--r--src/GFX/Shading/Shader.hpp13
4 files changed, 23 insertions, 8 deletions
diff --git a/src/GFX/Shading/Program.cpp b/src/GFX/Shading/Program.cpp
index 39393f8..2b675f8 100644
--- a/src/GFX/Shading/Program.cpp
+++ b/src/GFX/Shading/Program.cpp
@@ -4,7 +4,7 @@
namespace MC::GFX::Shading {
-Program::Program(Shader fragment, Shader vertex) {
+Program::Program(Shader vertex, Shader fragment) {
m_program = glCreateProgram();
glAttachShader(m_program, fragment.get());
diff --git a/src/GFX/Shading/Program.hpp b/src/GFX/Shading/Program.hpp
index 15c9899..b04dfff 100644
--- a/src/GFX/Shading/Program.hpp
+++ b/src/GFX/Shading/Program.hpp
@@ -10,7 +10,7 @@ namespace MC::GFX::Shading {
class Program {
public:
- Program(Shader fragment, Shader vertex);
+ Program(Shader vertex, Shader fragment);
uint32_t get() const;
diff --git a/src/GFX/Shading/Shader.cpp b/src/GFX/Shading/Shader.cpp
index ff954a5..f1502c2 100644
--- a/src/GFX/Shading/Shader.cpp
+++ b/src/GFX/Shading/Shader.cpp
@@ -4,8 +4,18 @@
namespace MC::GFX::Shading {
-Shader::Shader(uint32_t type, const char* source) {
- m_shader = glCreateShader(type);
+Shader::Shader(Shader::Type type, const char* source) {
+ uint32_t gl_type;
+ switch (type) {
+ case Type::Vertex:
+ gl_type = GL_VERTEX_SHADER;
+ break;
+ case Type::Fragment:
+ gl_type = GL_FRAGMENT_SHADER;
+ break;
+ }
+
+ m_shader = glCreateShader(gl_type);
glShaderSource(m_shader, 1, &source, nullptr);
glCompileShader(m_shader);
diff --git a/src/GFX/Shading/Shader.hpp b/src/GFX/Shading/Shader.hpp
index 4a3d9cf..15450cb 100644
--- a/src/GFX/Shading/Shader.hpp
+++ b/src/GFX/Shading/Shader.hpp
@@ -8,21 +8,26 @@ namespace MC::GFX::Shading {
class Shader {
public:
+ enum class Type {
+ Vertex,
+ Fragment,
+ };
+
+ Shader(Type type, const char* source);
+
uint32_t get() const {
return m_shader;
}
static Shader create_vertex() {
- return {GL_VERTEX_SHADER, Assets::Shaders::vertex};
+ return {Type::Vertex, Assets::Shaders::vertex};
}
static Shader create_fragment() {
- return {GL_FRAGMENT_SHADER, Assets::Shaders::fragment};
+ return {Type::Fragment, Assets::Shaders::fragment};
}
private:
- Shader(uint32_t type, const char* source);
-
uint32_t m_shader;
};