18 #ifndef SHADER_PROGRAM_H_ 19 #define SHADER_PROGRAM_H_ 24 #include <unordered_map> 61 void unbind() noexcept;
67 void attachShader(
Shader *_shader ) noexcept;
79 void bindFragDataLocation(
GLuint index,
const std::string &_attribName ) noexcept;
96 GLint getUniformLocation(
const char* _name)
const noexcept;
102 void printActiveUniforms()
const noexcept;
107 void printActiveAttributes()
const noexcept;
112 void printProperties()
const noexcept;
122 void setUniform1f(
const char* _varname,
float __v0 )
const noexcept;
129 void setRegisteredUniform1f(
const std::string &_varname,
float _v0 )
const noexcept;
137 void setUniform2f(
const char* _varname,
float _v0,
float _v1 )
const noexcept;
144 void setRegisteredUniform2f(
const std::string &_varname,
float _v0,
float _v1 )
const noexcept;
153 void setUniform3f(
const char* _varname,
float _v0,
float _v1,
float _v2 )
const noexcept;
161 void setRegisteredUniform3f(
const std::string &_varname,
float _v0,
float _v1,
float _v2 )
const noexcept;
170 void setUniform4f(
const char* _varname,
float _v0,
float _v1,
float _v2,
float _v3 )
const noexcept;
179 void setRegisteredUniform4f(
const std::string &_varname,
float _v0,
float _v1,
float _v2,
float _v3 )
const noexcept;
186 void setUniform1fv(
const char* _varname,
size_t _count,
const float* _value )
const noexcept;
194 void setUniform2fv(
const char* _varname,
size_t _count,
const float* _value )
const noexcept;
202 void setUniform3fv(
const char* _varname,
size_t _count,
const float* _value )
const noexcept;
210 void setUniform4fv(
const char* _varname,
size_t _count,
const float* _value )
const noexcept;
218 void setUniform1i(
const char* _varname,
GLint _v0 )
const noexcept;
225 void setRegisteredUniform1i(
const std::string &_varname,
int _v0 )
const noexcept;
233 void setRegisteredUniform2i(
const std::string &_varname,
int _v0,
int _v1 )
const noexcept;
241 void setRegisteredUniform3i(
const std::string &_varname,
int _v0,
int _v1,
int _v2 )
const noexcept;
251 void setRegisteredUniform4i(
const std::string &_varname,
int _v0,
int _v1,
int _v2,
int _v3 )
const noexcept;
259 void setUniform2i(
const char* _varname,
GLint _v0,
GLint _v1 )
const noexcept;
268 void setUniform3i(
const char* _varname,
GLint _v0,
GLint _v1,
GLint _v2 )
const noexcept;
278 void setUniform4i(
const char* _varname,
GLint _v0,
GLint _v1,
GLint _v2,
GLint _v3 )
const noexcept;
286 void setUniform1iv(
const char* _varname,
size_t _count,
const GLint* _value )
const noexcept;
294 void setUniform2iv(
const char* _varname,
size_t _count,
const GLint* _value)
const noexcept;
302 void setUniform3iv(
const char* _varname,
size_t _count,
const GLint* _value )
const noexcept;
310 void setUniform4iv(
const char* _varname,
size_t _count,
const GLint* _value )
const noexcept;
324 void setUniformMatrix2fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
333 void setUniformMatrix3fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
341 void setRegisteredUniformMatrix3fv(
const std::string &_varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
349 void setUniformMatrix4fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value)
const noexcept;
358 void setRegisteredUniformMatrix4fv(
const std::string &_varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
372 void setUniformMatrix2x3fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
381 void setUniformMatrix2x4fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
390 void setUniformMatrix3x2fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
399 void setUniformMatrix3x4fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value)
const noexcept;
408 void setUniformMatrix4x2fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
417 void setUniformMatrix4x3fv(
const char* _varname,
size_t _count,
bool _transpose,
const float* _value )
const noexcept;
428 void getUniformfv(
const char* _name,
float* o_values )
const noexcept;
435 void getUniformiv(
const char* _name,
int* o_values )
const noexcept;
447 void enableAttribArray(
const char* _name )
const noexcept;
453 void disableAttribArray(
const char* _name)
const noexcept;
458 void autoRegisterUniforms() noexcept;
462 void printRegisteredUniforms()
const noexcept;
469 void bindFragDataLocation(
GLuint _colourNumber,
const char *_name) noexcept;
476 GLuint getUniformBlockIndex(
const std::string &_uniformBlockName )
const noexcept;
some useful definitions and functions
std::vector< Shader * > m_shaders
a list of the shader objects attached to the program
main definition of types and namespace
GLuint m_programID
the program id for this program object
bool m_active
indicate if this program is the current active program
implementation files for RibExport class
std::string m_programName
text name of the current program used in lookup and debugging
bool m_debugState
debug mode flag
bool m_linked
flag to indicate if the current Program has been linked
std::unordered_map< std::string, GLuint > m_attribs
a list of attributes for this object, mapping name to ID number
GLuint getID() const noexcept
get the ProgramID for the Program
and encapsulation of an OpenGL Shader object with associations for source code, etc. Used in conjunction with the ShaderProgram class
std::unordered_map< std::string, uniformData > m_registeredUniforms
a list of uniforms for this object, mapping name to ID number must be added by the user using the reg...
GLsizei const GLchar *const * string