summaryrefslogtreecommitdiff
path: root/chisel/backends/opengl/shader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chisel/backends/opengl/shader.cpp')
-rw-r--r--chisel/backends/opengl/shader.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/chisel/backends/opengl/shader.cpp b/chisel/backends/opengl/shader.cpp
new file mode 100644
index 0000000..34979a1
--- /dev/null
+++ b/chisel/backends/opengl/shader.cpp
@@ -0,0 +1,26 @@
+#include "shader.h"
+
+namespace gfx {
+ Shader::Shader(const std::string& text, int type) {
+ _shader_id = glCreateShader(type);
+
+ int len = text.length();
+ const char* txt = text.c_str();
+ glShaderSource(_shader_id, 1, &txt, &len);
+ glCompileShader(_shader_id);
+ }
+ Shader::Shader(Shader&& other) : _shader_id(other._shader_id) {
+ other._shader_id = 0;
+ }
+ Shader::~Shader() {
+ if (!_shader_id)
+ return;
+
+ // Delete the shader
+ glDeleteShader(_shader_id);
+ }
+
+ GLuint Shader::shader_id() {
+ return _shader_id;
+ }
+} \ No newline at end of file