diff options
| author | Mel <einebeere@gmail.com> | 2022-10-23 21:28:09 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-10-23 21:28:09 +0200 |
| commit | ad84d0686f1d7f72e86b55cdadd8272f225f776d (patch) | |
| tree | 4d3cb6fbc48f41126407d10eac3d835c1b2d0a91 /src/GFX/Shading | |
| parent | 75a9c87b50cef2f1d749bd9042a9348bc28b4c09 (diff) | |
| download | meowcraft-ad84d0686f1d7f72e86b55cdadd8272f225f776d.tar.zst meowcraft-ad84d0686f1d7f72e86b55cdadd8272f225f776d.zip | |
Modular mesh vertex attributes
Diffstat (limited to 'src/GFX/Shading')
| -rw-r--r-- | src/GFX/Shading/Program.cpp | 2 | ||||
| -rw-r--r-- | src/GFX/Shading/Program.hpp | 2 | ||||
| -rw-r--r-- | src/GFX/Shading/Shader.cpp | 14 | ||||
| -rw-r--r-- | src/GFX/Shading/Shader.hpp | 13 |
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; }; |
