aboutsummaryrefslogtreecommitdiff
path: root/src/graphics/Shader.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-10-22 07:29:34 +0200
committerdec05eba <dec05eba@protonmail.com>2021-10-22 07:29:34 +0200
commita80bf6bb6cb8ab8c5a1430f9f9dbc214f71bdddf (patch)
treeefcab64abdcfa211020bf4410e12d6182a1c8d90 /src/graphics/Shader.cpp
parentc9ee5e1c1feccb073863ba17cbfdcf094f235886 (diff)
Use shader
Diffstat (limited to 'src/graphics/Shader.cpp')
-rw-r--r--src/graphics/Shader.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/graphics/Shader.cpp b/src/graphics/Shader.cpp
new file mode 100644
index 0000000..96fe8ba
--- /dev/null
+++ b/src/graphics/Shader.cpp
@@ -0,0 +1,40 @@
+#include "../../include/mglpp/graphics/Shader.hpp"
+
+namespace mgl {
+ Shader::Shader() {
+ shader_program.id = 0;
+ }
+
+ Shader::~Shader() {
+ mgl_shader_program_deinit(&shader_program);
+ }
+
+ bool Shader::load_from_file(const char *filepath, Type type) {
+ if(shader_program.id)
+ return false;
+
+ int res = mgl_shader_program_init(&shader_program);
+ if(res != 0)
+ return false;
+
+ res = mgl_shader_program_add_shader_from_file(&shader_program, filepath, (mgl_shader_type)type);
+ if(res != 0)
+ return false;
+
+ return mgl_shader_program_finalize(&shader_program) == 0;
+ }
+
+ bool Shader::set_uniform(const char *name, vec2f value) {
+ if(!shader_program.id)
+ return false;
+ return mgl_shader_program_set_uniform_vec2f(&shader_program, name, { value.x, value.y }) == 0;
+ }
+
+ // static
+ void Shader::use(Shader *shader) {
+ if(shader)
+ mgl_shader_program_use(&shader->shader_program);
+ else
+ mgl_shader_program_use(nullptr);
+ }
+} \ No newline at end of file