Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / API_Bilat_GL / INC / ShaderPrograms.h
diff --git a/WCudaMSE/API_Bilat_GL/INC/ShaderPrograms.h b/WCudaMSE/API_Bilat_GL/INC/ShaderPrograms.h
new file mode 100755 (executable)
index 0000000..34797cc
--- /dev/null
@@ -0,0 +1,60 @@
+#ifndef SHADER_PROGRAMS_H\r
+#define SHADER_PROGRAMS_H\r
+\r
+#include "envBilatGL.h"\r
+#include "bilat_GL.h"\r
+#include "Shaders.h"\r
+\r
+#include <vector>\r
+using std::vector;\r
+\r
+/**\r
+ * ShaderPrograms est composé de plusieurs Shaders (VertexShader et FragmentShader)\r
+ *\r
+ * Creation :\r
+ *\r
+ *     1 ou plusieurs VertexShader et 0 FragmentShader\r
+ *     1 ou plusieurs VertexShader et 1 ou plusieur FragmentShader\r
+ *\r
+ * Attention :\r
+ *\r
+ *     1 seule VertexShader ou FragmentShader avec une méthode main !\r
+ *\r
+ * Use :\r
+ *     Shaders* vertexShader=loadVertexShader();\r
+ *     Shaders* fragmentShader=loadFragmentShader();\r
+ *\r
+ *     ShaderProgam* shaderProgam=new ShaderProgram();\r
+ *     shaderProgram->attachShader(vertexShader);\r
+ *     shaderProgram->attachShader(fragmentShader);\r
+ *\r
+ *     init :\r
+ *             shaderProgram->init();\r
+ *     display :\r
+ *             shaderProgram->useProgram();\r
+ *             draw();\r
+ *             shaderProgram->unUseProgram();\r
+ *     delete:\r
+ *             shaderProgram->release();\r
+ *\r
+ *TODO : amélioration gestion des shaders, ne delete pas les shaders car peuvent être utilisé dans plusieurs shaderProgram ! Mettre un place système de compteur.\r
+ */\r
+class CBI_GL ShaderPrograms\r
+    {\r
+    public:\r
+       ShaderPrograms();\r
+       virtual ~ShaderPrograms();\r
+       void init();\r
+       void link();\r
+       void release();\r
+       void useProgram();\r
+       void unUseProgram();\r
+       void attachShader(Shaders* shader);\r
+       void removeShader(Shaders* shader);\r
+       GLuint getProgramID() const;\r
+    private :\r
+       vector<Shaders*> tabShaders;\r
+       GLuint programID;\r
+    };\r
+\r
+#endif\r