summary refs log tree commit diff
path: root/src/GFX/Shading
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-10-23 21:28:09 +0200
committerMel <einebeere@gmail.com>2022-10-23 21:28:09 +0200
commitad84d0686f1d7f72e86b55cdadd8272f225f776d (patch)
tree4d3cb6fbc48f41126407d10eac3d835c1b2d0a91 /src/GFX/Shading
parent75a9c87b50cef2f1d749bd9042a9348bc28b4c09 (diff)
downloadmeowcraft-ad84d0686f1d7f72e86b55cdadd8272f225f776d.tar.zst
meowcraft-ad84d0686f1d7f72e86b55cdadd8272f225f776d.zip
Modular mesh vertex attributes
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;
 };