|
| | InstancedShaderBase () |
| | Construct this InstancedShader, creating the shared Shader if necessary. More...
|
| |
| | InstancedShader (const ShaderPtr &sharedShader) |
| | Create an InstancedShader which references a shader Shader. More...
|
| |
| const ShaderPtr & | getSharedShader () const |
| | Returns the Shader that is shared among instances. More...
|
| |
| virtual bool | isCurrent () const override |
| | Returns whether or not this instance is bound. More...
|
| |
| virtual bool | isValid () const override |
| | Returns whether or not this shader is valid (compiled and linked) and can be used for rendering. More...
|
| |
| virtual bool | isCompiled () const override |
| | Returns whether or not this shader has been processed for compilation. More...
|
| |
| virtual GLuint | getProgramId () const override |
| | Returns the GL program id for this shader. More...
|
| |
| virtual void | begin () override |
| | Binds this shader, and sets uniforms and other GL state associated with this instance. More...
|
| |
| virtual void | end () override |
| | Unbinds this shader if bound by a corresponding call to begin(). More...
|
| |
| virtual void | compile () override |
| | Compiles this shader, resulting in the compilation of the shared Shader if necessary. More...
|
| |
| virtual std::string | getErrorLog () const override |
| | Retrieves the string describing compilation errors, if the call to compile() failed and isValid() is false. More...
|
| |
| virtual int | getAttributeLocation (int index) const override |
| | Returns the location of an indexed Attribute. More...
|
| |
| virtual int | getUniformLocation (int index) const override |
| | Returns the location of an indexed uniform. More...
|
| |
| void | setIndexedTexture (int index, int stage, const TexturePtr &value, TexturePtr *stateValue) |
| | Set the indexed texture for this instance at the given index. More...
|
| |
| | Shader (const AttributeSetPtr &attributes, const std::vector< std::string > &uniformNames) |
| | Construct a Shader with the given list of attributes and uniforms. More...
|
| |
| const AttributeSetPtr & | getAttributes () const |
| | Returns the list of indexed Attributes for this shader, as an AttributeSet. More...
|
| |
| const std::vector< std::string > & | getUniformNames () const |
| | Returns the list of indexed uniforms. More...
|
| |
| void | setIndexedUniform1f (int index, bool global, float value, float *stateValue) |
| | Set the value of a float scalar uniform at the given index. More...
|
| |
| void | setIndexedUniform2f (int index, bool global, const Vector2 &value, Vector2 *stateValue) |
| | Set the value of a 2D float vector uniform at the given index. More...
|
| |
| void | setIndexedUniform3f (int index, bool global, float value1, float value2, float value3, float *stateValue) |
| | Set the value of a 3D float vector uniform at the given index. More...
|
| |
| void | setIndexedUniform4f (int index, bool global, float value1, float value2, float value3, float value4, float *stateValue) |
| | Set the value of a 4D float vector uniform at the given index. More...
|
| |
| void | setIndexedUniform1i (int index, bool global, int value, int *stateValue) |
| | Set the value of an integer scalar uniform at the given index. More...
|
| |
| void | setIndexedUniformMatrix4f (int index, bool global, bool transpose, const Matrix4 &value, Matrix4 *stateValue) |
| | Set the value of a 4x4 float matrix uniform at the given index. More...
|
| |
template<typename TShaderImpl>
class InstancedShaderBase< TShaderImpl >
Helper class to implement InstancedShader subclasses, by managing a shared Shader.
This class creates and manages a shared Shader as a singleton. The singleton Shader is created by a call to createSharedShader, a static method. The default implementation builds the shader using data returned from static methods which must be traits of the subclass TShaderImpl. The following traits should exist:
std::string TShaderImpl::getVertexShaderCode()
std::string TShaderImpl::getFragmentShaderCode()
AttributeSetPtr TShaderImpl::getAttributeSet()
std::vector<std::string> TShaderImpl::getUniformNames()
Alternatively, the subclass can implement and hide the createSharedShader() static function to manually create a custom shader. The signature should be:
ShaderPtr TShaderImpl::createSharedShader()