some descriptor functions in vkutil - wip
[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 /* each shader program will correspond to a pipeline. The pipeline
8  * must have the cull, zbuffer etc since they can't be dynamic states */
9
10 class ShaderVK : public Shader {
11 private:
12         VkShaderModule sdr;
13
14 protected:
15         ShaderType type;
16         std::string name;
17
18         virtual bool create(char *buf, unsigned int bsz, const char *fname) override;
19
20 public:
21
22         ShaderVK();
23         virtual ~ShaderVK();
24
25         virtual bool load(const char *fname, ShaderType type) override;
26         virtual void destroy() override;
27 };
28
29 class ShaderProgramVK : public ShaderProgram
30 {
31 protected:
32         VkPipeline gpipeline;
33
34 public:
35         ShaderProgramVK();
36         virtual ~ShaderProgramVK();
37
38         virtual bool create() override;
39
40         virtual bool use() const override;
41         virtual bool link() override;
42         virtual void destroy() override;
43         virtual void attach_shader(Shader *shader) override;
44 };
45 #endif // SHADER_VK_H_