quick backup
[demo] / src / vulkan / shader-vk.h
diff --git a/src/vulkan/shader-vk.h b/src/vulkan/shader-vk.h
new file mode 100644 (file)
index 0000000..88e07bc
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef SHADER_VK_H_
+#define SHADER_VK_H_
+
+#include <string>
+#include "shader.h"
+
+class ShaderVK : public Shader
+{
+protected:
+       SType type;
+       std::string name;
+
+       virtual bool create(char *buf, unsigned int bsz, const char *fname) override;
+
+public:
+       ShaderVK();
+       virtual ~ShaderVK();
+
+       virtual bool load(const char *fname, SType type);
+       virtual void destroy() override;
+};
+
+class ShaderProgramVK : public ShaderProgram
+{
+protected:
+       /*ubo*/
+
+public:
+       ShaderProgramVK();
+       virtual ~ShaderProgramVK();
+
+       virtual bool create() override;
+       virtual bool use() const override;
+       virtual bool link() override;
+       virtual void destroy() override;
+       virtual void attach_shader(Shader *shader) override;
+
+       virtual int get_uniform_location(const char *name) const override;
+
+       virtual void set_uniformi(int location, int value) override;
+       virtual void set_uniformi(int location, int x, int y) override;
+       virtual void set_uniformi(int location, int x, int y, int z) override;
+       virtual void set_uniformi(int location, int x, int y, int z, int w) override;
+
+       virtual void set_uniformf(int location, float value) override;
+       virtual void set_uniformf(int location, float x, float y) override;
+       virtual void set_uniformf(int location, float x, float y, float z) override;
+       virtual void set_uniformf(int location, float x, float y, float z, float w) override;
+
+       virtual void set_uniform_matrix(int location, const Mat4 &mat) override;
+};
+#endif // SHADER_VK_H_
\ No newline at end of file