backup
[demo] / src / shader.h
index abfe364..6e9509a 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef SHADER_H_
 #define SHADER_H_
 
+#include <vulkan/vulkan.h>
+
 #include <vector>
 #include <string>
 
@@ -18,16 +20,19 @@ enum SType {
 
 class Shader {
 protected:
+       SType type;
+       std::string name;
+
        virtual bool create(char *buf, unsigned int bsz, const char *fname) = 0;
 
 public:
-       SType type;
 
        Shader();
        virtual ~Shader() = 0;
 
        virtual bool load(const char *fname, SType type);
        virtual void destroy() = 0;
+       virtual SType get_type();
 };
 
 /* Shader Program */
@@ -47,14 +52,9 @@ public:
        ShaderProgram();
        virtual ~ShaderProgram();
 
-       virtual void cache_uniforms() = 0;
-
-       virtual void add_shader(Shader *sdr);
-       virtual void delete_shaders() = 0;
-
        virtual bool create() = 0;
        virtual bool link() = 0;
-       virtual bool use() = 0;
+       virtual bool use() const = 0;
        virtual void destroy() = 0;
        virtual void attach_shader(Shader *shader) = 0;
 
@@ -63,6 +63,7 @@ public:
                using descriptor sets. The current design is suitable for OpenGL and
                it *might* have to be rewritten to work with both APIs later
        */
+       virtual int get_uniform_location(const char *name) const = 0;
 
        virtual void set_uniformi(int location, int value) = 0;
        virtual void set_uniformi(int location, int x, int y) = 0;
@@ -77,6 +78,4 @@ public:
        virtual void set_uniform_matrix(int location, const Mat4 &mat) = 0;
 };
 
-ShaderProgram *get_current_program();
-
 #endif // SHADER_H_