Rev Author Line No. Line
1 ovan 1 #ifndef OGL_SHADER
2 #define OGL_SHADER
3  
6 ovan 4 #include "ogl.h"
1 ovan 5 #include "../shader.h"
6  
7 namespace sleek
8 {
9     namespace driver
10     {
11         template<bool dsa>
12         class ogl_shader : public shader
13         {
14             public:
15                 ogl_shader() noexcept;
16                 virtual ~ogl_shader() noexcept;
17  
18                 virtual void* getHardwareLink() const noexcept;
19  
20                 virtual void setVertexShader(const std::string &prog, const std::string &main) noexcept;
21                 virtual void setGeometryShader(const std::string &prog, const std::string &main) noexcept;
22                 virtual void setFragmentShader(const std::string &prog, const std::string &main) noexcept;
23  
24                 virtual void compileShader() noexcept;
25                 virtual void attacheShader(const u32) noexcept;
26                 virtual void detacheShader(const u32) noexcept;
27  
28                 virtual void setLinkToMaterial(material*) noexcept;
29                 virtual material* getLinkFromMaterial() const noexcept;
30  
31                 virtual void setVariable(const std::string&, const f32) noexcept;
32                 virtual void setVariable(const std::string&, const s32) noexcept;
33                 virtual void setVariable(const std::string&, const u32) noexcept;
34                 virtual void setVariable(const std::string&, const math::vector3df&) noexcept;
35                 virtual void setTexture(const std::string&, identifier*, const s32) noexcept;
36  
37                 virtual u32 getVariableID(const std::string&) const noexcept;
38  
39                 virtual void bind() noexcept;
40                 virtual void unbind() noexcept;
41             protected:
42                 virtual void LinkAndValidate() noexcept;
43             protected:
44                 material *link;
45                 GLuint vs, ps, gs, prog;
46                 std::string frag, vert, geom;
47                 int compiled;
48         };
49     }
50 }
51  
52 #endif