X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;f=WCudaMSE%2FAPI_Bilat_GL%2FINC%2FShaderPrograms.h;fp=WCudaMSE%2FAPI_Bilat_GL%2FINC%2FShaderPrograms.h;h=34797cc965c8f23745d6d3fa065205e2a5cf5337;hb=8d08c12b29c2a14684f35c023ee39e694bb80d25;hp=0000000000000000000000000000000000000000;hpb=226de81f7e1f1fbf4ac79d0d089e8a05ec7159a0;p=GPU.git diff --git a/WCudaMSE/API_Bilat_GL/INC/ShaderPrograms.h b/WCudaMSE/API_Bilat_GL/INC/ShaderPrograms.h new file mode 100755 index 0000000..34797cc --- /dev/null +++ b/WCudaMSE/API_Bilat_GL/INC/ShaderPrograms.h @@ -0,0 +1,60 @@ +#ifndef SHADER_PROGRAMS_H +#define SHADER_PROGRAMS_H + +#include "envBilatGL.h" +#include "bilat_GL.h" +#include "Shaders.h" + +#include +using std::vector; + +/** + * ShaderPrograms est composé de plusieurs Shaders (VertexShader et FragmentShader) + * + * Creation : + * + * 1 ou plusieurs VertexShader et 0 FragmentShader + * 1 ou plusieurs VertexShader et 1 ou plusieur FragmentShader + * + * Attention : + * + * 1 seule VertexShader ou FragmentShader avec une méthode main ! + * + * Use : + * Shaders* vertexShader=loadVertexShader(); + * Shaders* fragmentShader=loadFragmentShader(); + * + * ShaderProgam* shaderProgam=new ShaderProgram(); + * shaderProgram->attachShader(vertexShader); + * shaderProgram->attachShader(fragmentShader); + * + * init : + * shaderProgram->init(); + * display : + * shaderProgram->useProgram(); + * draw(); + * shaderProgram->unUseProgram(); + * delete: + * shaderProgram->release(); + * + *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. + */ +class CBI_GL ShaderPrograms + { + public: + ShaderPrograms(); + virtual ~ShaderPrograms(); + void init(); + void link(); + void release(); + void useProgram(); + void unUseProgram(); + void attachShader(Shaders* shader); + void removeShader(Shaders* shader); + GLuint getProgramID() const; + private : + vector tabShaders; + GLuint programID; + }; + +#endif