no clue :) just to push it
[demo] / src / shader.h
1 #ifndef SHADER_H_
2 #define SHADER_H_
3
4 #include <vulkan/vulkan.h>
5
6 #include <vector>
7 #include <string>
8
9 #include <gmath/gmath.h>
10
11 class Texture;
12
13 enum ShaderType {
14         SDR_UNKNOWN,
15         SDR_VERTEX,
16         SDR_FRAGMENT
17 };
18
19 class Shader {
20 protected:
21         ShaderType type;
22         std::string name;
23
24         virtual bool create(char *buf, unsigned int bsz, const char *fname) = 0;
25
26 public:
27         Shader();
28         virtual ~Shader() = 0;
29
30         virtual bool load(const char *fname, ShaderType type);
31         virtual void destroy() = 0;
32         virtual ShaderType get_type();
33 };
34
35 /* Shader Program */
36
37 class ShaderProgram {
38 protected:
39         Shader *shaders[2];
40
41 public:
42         ShaderProgram();
43         virtual ~ShaderProgram();
44
45         virtual bool create() = 0;
46         virtual bool link() = 0;
47         virtual bool use() const = 0;
48         virtual void destroy() = 0;
49         virtual void attach_shader(Shader *shader) = 0;
50 };
51
52 #endif // SHADER_H_