VoltAir
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Groups Pages
Public Types | Static Public Member Functions | List of all members
SingletonInstancedShaderBase< TShaderImpl > Class Template Reference

A helper to define singletons for InstancedShaders. More...

Inheritance diagram for SingletonInstancedShaderBase< TShaderImpl >:
InstancedShaderBase< TShaderImpl > InstancedShader Shader

Public Types

typedef std::shared_ptr
< TShaderImpl > 
TShaderImplPtr
 Helper typedef for a shared pointer to a TShaderImpl. More...
 
typedef std::weak_ptr
< TShaderImpl > 
TShaderImplWeakPtr
 Helper typedef for a weak shared pointer to a TShaderImpl. More...
 

Static Public Member Functions

static TShaderImplPtr getInstance ()
 Returns the singleton instance of this shader, creating it if necessary. More...
 
- Static Public Member Functions inherited from InstancedShaderBase< TShaderImpl >
static const ShaderPtrgetSharedShader ()
 Returns the shared Shader singleton, creating it if necessary. More...
 

Additional Inherited Members

- Public Member Functions inherited from InstancedShaderBase< TShaderImpl >
 InstancedShaderBase ()
 Construct this InstancedShader, creating the shared Shader if necessary. More...
 
- Public Member Functions inherited from InstancedShader
 InstancedShader (const ShaderPtr &sharedShader)
 Create an InstancedShader which references a shader Shader. More...
 
const ShaderPtrgetSharedShader () 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...
 
- Public Member Functions inherited from Shader
 Shader (const AttributeSetPtr &attributes, const std::vector< std::string > &uniformNames)
 Construct a Shader with the given list of attributes and uniforms. More...
 
const AttributeSetPtrgetAttributes () 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...
 
- Protected Member Functions inherited from InstancedShader
virtual void updateState ()
 Update state in response to this instance getting bound. More...
 
- Static Protected Member Functions inherited from InstancedShaderBase< TShaderImpl >
static ShaderPtr createSharedShader ()
 The default implementation of createSharedShader(). More...
 

Detailed Description

template<typename TShaderImpl>
class SingletonInstancedShaderBase< TShaderImpl >

A helper to define singletons for InstancedShaders.

While treating an instanced shader as a singleton means that you can no longer create instances of that shader, it benefits from being able to use some extra functionality from InstancedShader and InstancedShaderBase.

Member Typedef Documentation

template<typename TShaderImpl>
typedef std::shared_ptr<TShaderImpl> SingletonInstancedShaderBase< TShaderImpl >::TShaderImplPtr

Helper typedef for a shared pointer to a TShaderImpl.

template<typename TShaderImpl>
typedef std::weak_ptr<TShaderImpl> SingletonInstancedShaderBase< TShaderImpl >::TShaderImplWeakPtr

Helper typedef for a weak shared pointer to a TShaderImpl.

Member Function Documentation

template<typename TShaderImpl>
static TShaderImplPtr SingletonInstancedShaderBase< TShaderImpl >::getInstance ( )
inlinestatic

Returns the singleton instance of this shader, creating it if necessary.