32 #ifndef __SHADER_PROGRAMPOOL_HH__
33 #define __SHADER_PROGRAMPOOL_HH__
35 #include <OpenGLFramework/Base/glfShaderProgram.hh>
36 #include <OpenGLFramework/Base/glfMatrix.hh>
37 #include <OpenGLFramework/Base/glfException.hh>
38 #include <bias_config.h>
82 AddShaderProgram(
const std::string& shader_program_name);
90 AddFragmentShader(
const std::string& shader_source,
91 const std::string& shader_name,
const std::string& shader_program_name);
99 AddVertexShader(
const std::string& shader_source,
100 const std::string& shader_name,
const std::string& shader_program_name);
108 AddFragmentShaderFromFile(
const std::string& path_to_shader,
109 const std::string& shader_name,
const std::string& shader_program_name);
117 AddVertexShaderFromFile(
const std::string& path_to_shader,
118 const std::string& shader_name,
const std::string& shader_program_name);
125 RemoveShaderProgram(
const std::string& shader_program_name);
131 std::vector<std::pair<std::string, glfShaderProgram*> >
140 GetShaderProgram(
const std::string& shader_program_name);
163 BindShaderProgram(
const std::string& shader_program_name);
169 GetShaderNames(
const std::string& shader_program_name, std::vector<
170 std::string>& shader_names);
176 template<
class StorageType>
178 SetUniform(
const std::string& shader_program_name,
179 const std::string& varName, StorageType value);
181 template<
class StorageType>
183 SetUniformArray(
const std::string& shader_program_name,
184 const std::string& varName, StorageType values,
int arg_number);
191 GetUniformType(
const std::string& shader_program_name,
192 const std::string& varName);
203 AddShader_(GLenum type,
const std::string& shader_source,
204 const std::string& shader_name,
const std::string& shader_program_name);
207 GetShadersMap_(
const std::string& shader_program_name);
210 GetShaderData_(
shader_map_t& shader_map,
const std::string& shader_name);
213 GetShaderProgramData_(
const std::string& shader_program_name);
222 GetUniformMap_(
const std::string& shader_program_name);
231 GetShader_(
const std::string& shader_program_name,
232 const std::string& shader_name);
236 std::string shader_source);
239 AddUniformVariable_(
program_data_t& shader_data,
const std::string& type,
240 const std::string& name);
243 LoadShaderFromFile_(
const std::string& shader_path,
244 std::string& shader_source);
246 std::string RemoveCommentariesFromSource_(
const std::string& source);
254 std::map<std::string, shader_map_t> shaders_;
256 bool all_program_linked_;
266 std::map<std::string, bool> validitlyLinked_;
this class represents a set of shader programs one can add and remove shader programs to and from the...
std::map< std::string, std::list< std::string > > uniforms_map_t
std::pair< glfShaderProgram *, uniforms_map_t > program_data_t
std::map< std::string, program_data_t > program_map_t
A shader program composed of several shaders.
A GLSL vertex shader or fragment shader, which must be linked in a shader program.
std::pair< glfShader *, std::string > shader_data_t
std::map< std::string, shader_data_t > shader_map_t