88e07bcb38a6719eef1052b052a021f06e22660c
[demo] / src / vulkan / shader-vk.h
1 #ifndef SHADER_VK_H_
2 #define SHADER_VK_H_
3
4 #include <string>
5 #include "shader.h"
6
7 class ShaderVK : public Shader
8 {
9 protected:
10         SType type;
11         std::string name;
12
13         virtual bool create(char *buf, unsigned int bsz, const char *fname) override;
14
15 public:
16         ShaderVK();
17         virtual ~ShaderVK();
18
19         virtual bool load(const char *fname, SType type);
20         virtual void destroy() override;
21 };
22
23 class ShaderProgramVK : public ShaderProgram
24 {
25 protected:
26         /*ubo*/
27
28 public:
29         ShaderProgramVK();
30         virtual ~ShaderProgramVK();
31
32         virtual bool create() override;
33         virtual bool use() const override;
34         virtual bool link() override;
35         virtual void destroy() override;
36         virtual void attach_shader(Shader *shader) override;
37
38         virtual int get_uniform_location(const char *name) const override;
39
40         virtual void set_uniformi(int location, int value) override;
41         virtual void set_uniformi(int location, int x, int y) override;
42         virtual void set_uniformi(int location, int x, int y, int z) override;
43         virtual void set_uniformi(int location, int x, int y, int z, int w) override;
44
45         virtual void set_uniformf(int location, float value) override;
46         virtual void set_uniformf(int location, float x, float y) override;
47         virtual void set_uniformf(int location, float x, float y, float z) override;
48         virtual void set_uniformf(int location, float x, float y, float z, float w) override;
49
50         virtual void set_uniform_matrix(int location, const Mat4 &mat) override;
51 };
52 #endif // SHADER_VK_H_