Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / API_Bilat_GL / INC / ShaderPrograms.h
1 #ifndef SHADER_PROGRAMS_H
2 #define SHADER_PROGRAMS_H
3
4 #include "envBilatGL.h"
5 #include "bilat_GL.h"
6 #include "Shaders.h"
7
8 #include <vector>
9 using std::vector;
10
11 /**
12 * ShaderPrograms est composé de plusieurs Shaders (VertexShader et FragmentShader)
13 *
14 * Creation :
15 *
16 * 1 ou plusieurs VertexShader et 0 FragmentShader
17 * 1 ou plusieurs VertexShader et 1 ou plusieur FragmentShader
18 *
19 * Attention :
20 *
21 * 1 seule VertexShader ou FragmentShader avec une méthode main !
22 *
23 * Use :
24 * Shaders* vertexShader=loadVertexShader();
25 * Shaders* fragmentShader=loadFragmentShader();
26 *
27 * ShaderProgam* shaderProgam=new ShaderProgram();
28 * shaderProgram->attachShader(vertexShader);
29 * shaderProgram->attachShader(fragmentShader);
30 *
31 * init :
32 * shaderProgram->init();
33 * display :
34 * shaderProgram->useProgram();
35 * draw();
36 * shaderProgram->unUseProgram();
37 * delete:
38 * shaderProgram->release();
39 *
40 *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.
41 */
42 class CBI_GL ShaderPrograms
43 {
44 public:
45 ShaderPrograms();
46 virtual ~ShaderPrograms();
47 void init();
48 void link();
49 void release();
50 void useProgram();
51 void unUseProgram();
52 void attachShader(Shaders* shader);
53 void removeShader(Shaders* shader);
54 GLuint getProgramID() const;
55 private :
56 vector<Shaders*> tabShaders;
57 GLuint programID;
58 };
59
60 #endif