|
Developer Documentation
|
#include <ACG/ShaderUtils/GLSLShader.hh>
Public Member Functions | |
| Program () | |
| Creates a new GLSL program object. | |
| virtual | ~Program () |
| Deletes the GLSL program object and frees the linked shader objects. | |
| GLuint | getProgramId () |
| Returns opengl id. | |
Compilation/Linking | |
| void | attach (PtrConstShader _shader) |
| Attaches a shader object to the program object. | |
| void | detach (PtrConstShader _shader) |
| Detaches a shader object from the program object. | |
| void | link () |
| Links the shader objects to the program. | |
Localizations | |
| int | getAttributeLocation (const char *_name) |
| Get location of the specified attribute. More... | |
| int | getUniformLocation (const char *_name) |
| Get location of the specified uniform. More... | |
| int | getFragDataLocation (const char *_name) |
| Get location of the fragment data output. More... | |
| void | bindAttributeLocation (unsigned int _index, const char *_name) |
| Bind attribute to name. More... | |
| void | bindFragDataLocation (unsigned int _index, const char *_name) |
| Bind fragment output data to name. More... | |
Uniform setters | |
| void | setUniform (const char *_name, GLint _value) |
| Set int uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec2i &_value) |
| Set Vec2i uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec3i &_value) |
| Set Vec3i uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec4i &_value) |
| Set Vec4i uniform to specified value. More... | |
| void | setUniform (const char *_name, GLuint _value) |
| Set uint uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec2ui &_value) |
| Set Vec2ui uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec3ui &_value) |
| Set Vec3ui uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec4ui &_value) |
| Set Vec4ui uniform to specified value. More... | |
| void | setUniform (const char *_name, GLfloat _value) |
| Set float uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec2f &_value) |
| Set Vec2f uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec3f &_value) |
| Set Vec3f uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec4f &_value) |
| Set Vec4f uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::GLMatrixf &_value, bool _transposed=false) |
| Set 4x4fMatrix uniform to specified value. More... | |
| void | setUniformMat3 (const char *_name, const ACG::GLMatrixf &_value, bool _transposed=false) |
| Set 3x3fMatrix uniform to specified value. More... | |
| void | setUniform (const char *_name, const GLint *_values, int _count) |
| Set int array uniform to specified values. More... | |
| void | setUniform (const char *_name, const GLfloat *_values, int _count) |
| Set float array uniform to specified values. More... | |
| void | setUniform (const char *_name, const ACG::Vec2f *_values, int _count) |
| Set Vec2f array uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec3f *_values, int _count) |
| Set Vec3f array uniform to specified value. More... | |
| void | setUniform (const char *_name, const ACG::Vec4f *_values, int _count) |
| Set Vec4f array uniform to specified value. More... | |
| void | setUniform (const char *_name, int _index, bool _value) |
| Set an entry of a bool uniform array. More... | |
| void | setUniform (const char *_name, int _index, int _value) |
| Set an entry of a int uniform array. More... | |
| void | setUniform (const char *_name, int _index, float _value) |
| Set an entry of a float uniform array. More... | |
Uniform buffer blocks | |
| GLuint | getUniformBlockIndex (const char *_name) |
| Get location of the specified uniform buffer. More... | |
| void | setUniformBlockBinding (GLuint _index, int _binding) |
| Set binding point of a uniform buffer. More... | |
| void | setUniformBlockBinding (const char *_name, int _binding) |
| Set binding point of a uniform buffer. More... | |
| int | getUniformBlockSize (GLuint _index) |
| Get size in bytes of a uniform buffer. More... | |
| int | getUniformBlockSize (const char *_name) |
| Get size in bytes of a uniform buffer. More... | |
| void | getUniformBlockOffsets (int _numUniforms, const char **_names, int *_outOffsets) |
| Get offsets of uniforms in a uniform buffer. More... | |
Geometry shader parameters | |
| void | setGeometryInputType (GLint _type) |
| Set Type of Geometry. More... | |
| void | setGeometryOutputType (GLint _type) |
| Set output type of geometry. More... | |
| void | setGeometryVertexCount (GLint _numVerticesOut) |
| Sets the maximum vertex output of the geometry shader. More... | |
Enable/disable functions | |
| void | use () |
| Enables the program object for using. | |
| void | disable () |
| Resets to standard rendering pipeline. | |
| bool | isActive () |
| Returns if the program object is currently active. | |
| bool | isLinked () |
| Returns if the program object has been succesfully linked. | |
Private Attributes | |
| std::list< PtrConstShader > | m_linkedShaders |
| GLint | m_programId |
| GLint | m_linkStatus |
GLSL program class.
A GLSL program links together the vertex and fragment shaders.
Definition at line 217 of file GLSLShader.hh.
| void GLSL::Program::bindAttributeLocation | ( | unsigned int | _index, |
| const char * | _name | ||
| ) |
Bind attribute to name.
| _index | Index of the attribute to be bound |
| _name | Name of the attribute |
Definition at line 688 of file GLSLShader.cc.
| void GLSL::Program::bindFragDataLocation | ( | unsigned int | _index, |
| const char * | _name | ||
| ) |
Bind fragment output data to name.
| _index | Index of the fragment output to be bound |
| _name | Name of the fragment output data |
Definition at line 698 of file GLSLShader.cc.
| int GLSL::Program::getAttributeLocation | ( | const char * | _name | ) |
Get location of the specified attribute.
| _name | Name of the attribute |
Definition at line 708 of file GLSLShader.cc.
| int GLSL::Program::getFragDataLocation | ( | const char * | _name | ) |
Get location of the fragment data output.
| _name | Name of the fragment data output |
Definition at line 730 of file GLSLShader.cc.
| GLuint GLSL::Program::getUniformBlockIndex | ( | const char * | _name | ) |
Get location of the specified uniform buffer.
Program does not have to be active.
| _name | name of the uniform block |
Definition at line 773 of file GLSLShader.cc.
| void GLSL::Program::getUniformBlockOffsets | ( | int | _numUniforms, |
| const char ** | _names, | ||
| int * | _outOffsets | ||
| ) |
Get offsets of uniforms in a uniform buffer.
Program does not have to be active.
| _numUniforms | number of uniforms to query offsets for |
| _names | array of uniform names in the buffer |
| _outOffsets | offset for each uniform |
Definition at line 840 of file GLSLShader.cc.
| int GLSL::Program::getUniformBlockSize | ( | GLuint | _index | ) |
Get size in bytes of a uniform buffer.
Program does not have to be active.
| _index | block index as returned via getUniformBlockIndex |
Definition at line 813 of file GLSLShader.cc.
| int GLSL::Program::getUniformBlockSize | ( | const char * | _name | ) |
Get size in bytes of a uniform buffer.
Program does not have to be active.
| _name | name of the uniform block |
Definition at line 828 of file GLSLShader.cc.
| int GLSL::Program::getUniformLocation | ( | const char * | _name | ) |
Get location of the specified uniform.
| _name | Name of the uniform |
Definition at line 719 of file GLSLShader.cc.
| void GLSL::Program::setGeometryInputType | ( | GLint | _type | ) |
Set Type of Geometry.
valid input types: GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_EXT, GL_TRIANGLES, GL_TRIANGLES_ADJACENCY_EXT
| _type | Geometry type |
Definition at line 742 of file GLSLShader.cc.
| void GLSL::Program::setGeometryOutputType | ( | GLint | _type | ) |
Set output type of geometry.
valid output types: GL_POINTS, GL_LINE_STRIP, GL_TRIANGLE_STRIP
| _type | Output geometry type |
Definition at line 752 of file GLSLShader.cc.
| void GLSL::Program::setGeometryVertexCount | ( | GLint | _numVerticesOut | ) |
Sets the maximum vertex output of the geometry shader.
Query GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT to get the gpu limitation
| _numVerticesOut | Maximal number of vertices |
Definition at line 762 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| GLint | _value | ||
| ) |
Set int uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 391 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec2i & | _value | ||
| ) |
Set Vec2i uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 404 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec3i & | _value | ||
| ) |
Set Vec3i uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 417 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec4i & | _value | ||
| ) |
Set Vec4i uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 430 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| GLuint | _value | ||
| ) |
Set uint uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 443 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec2ui & | _value | ||
| ) |
Set Vec2ui uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 456 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec3ui & | _value | ||
| ) |
Set Vec3ui uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 469 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec4ui & | _value | ||
| ) |
Set Vec4ui uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 482 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| GLfloat | _value | ||
| ) |
Set float uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 495 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec2f & | _value | ||
| ) |
Set Vec2f uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 508 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec3f & | _value | ||
| ) |
Set Vec3f uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 521 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec4f & | _value | ||
| ) |
Set Vec4f uniform to specified value.
| _name | Name of the uniform |
| _value | New value of the uniform |
Definition at line 534 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::GLMatrixf & | _value, | ||
| bool | _transposed = false |
||
| ) |
Set 4x4fMatrix uniform to specified value.
| _name | Name of the uniform |
| _value | Matrix to be set |
| _transposed | Is the matrix transposed? |
Definition at line 655 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const GLint * | _values, | ||
| int | _count | ||
| ) |
Set int array uniform to specified values.
| _name | Name of the uniform to be set |
| _values | Pointer to an array with the new values |
| _count | Number of values in the given array |
Definition at line 548 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const GLfloat * | _values, | ||
| int | _count | ||
| ) |
Set float array uniform to specified values.
| _name | Name of the uniform to be set |
| _values | Pointer to an array with the new values |
| _count | Number of values in the given array |
Definition at line 562 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec2f * | _values, | ||
| int | _count | ||
| ) |
Set Vec2f array uniform to specified value.
| _name | Name of the uniform |
| _values | Pointer to an array with the new values |
| _count | Number of values in the given array |
Definition at line 576 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec3f * | _values, | ||
| int | _count | ||
| ) |
Set Vec3f array uniform to specified value.
| _name | Name of the uniform |
| _values | Pointer to an array with the new values |
| _count | Number of values in the given array |
Definition at line 590 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| const ACG::Vec4f * | _values, | ||
| int | _count | ||
| ) |
Set Vec4f array uniform to specified value.
| _name | Name of the uniform |
| _values | Pointer to an array with the new values |
| _count | Number of values in the given array |
Definition at line 604 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| int | _index, | ||
| bool | _value | ||
| ) |
Set an entry of a bool uniform array.
| _name | Name of the uniform to be set |
| _index | Entry in the array |
| _value | New value of the entry |
Definition at line 618 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| int | _index, | ||
| int | _value | ||
| ) |
Set an entry of a int uniform array.
| _name | Name of the uniform to be set |
| _index | Entry in the array |
| _value | New value of the entry |
Definition at line 630 of file GLSLShader.cc.
| void GLSL::Program::setUniform | ( | const char * | _name, |
| int | _index, | ||
| float | _value | ||
| ) |
Set an entry of a float uniform array.
| _name | Name of the uniform to be set |
| _index | Entry in the array |
| _value | New value of the entry |
Definition at line 642 of file GLSLShader.cc.
| void GLSL::Program::setUniformBlockBinding | ( | GLuint | _index, |
| int | _binding | ||
| ) |
Set binding point of a uniform buffer.
Program does not have to be active.
| _index | block index as returned via getUniformBlockIndex |
| _binding | binding point where the buffer is bound to |
Definition at line 789 of file GLSLShader.cc.
| void GLSL::Program::setUniformBlockBinding | ( | const char * | _name, |
| int | _binding | ||
| ) |
Set binding point of a uniform buffer.
Program does not have to be active.
| _name | name of the uniform block |
| _binding | binding point where the buffer is bound to |
Definition at line 802 of file GLSLShader.cc.
| void GLSL::Program::setUniformMat3 | ( | const char * | _name, |
| const ACG::GLMatrixf & | _value, | ||
| bool | _transposed = false |
||
| ) |
Set 3x3fMatrix uniform to specified value.
| _name | Name of the uniform |
| _value | Matrix to be set |
| _transposed | Is the matrix transposed? |
Definition at line 669 of file GLSLShader.cc.