|
| 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()