C++ encapsulation of GLSL Program Object. More...
#include <OgreGLSLProgramCommon.h>
Public Member Functions | |
GLSLProgramCommon (GLSLGpuProgram *vertexProgram, GLSLGpuProgram *geometryProgram, GLSLGpuProgram *fragmentProgram, GLSLGpuProgram *hullProgram, GLSLGpuProgram *domainProgram, GLSLGpuProgram *computeProgram) | |
Constructor should only be used by GLSLLinkProgramManager and GLSLProgramPipelineManager. More... | |
virtual | ~GLSLProgramCommon (void) |
virtual void | activate (void)=0 |
Makes a program object active by making sure it is linked and then putting it in use. More... | |
virtual void | extractLayoutQualifiers (void) |
Finds layout qualifiers in the shader source and sets attribute indices appropriately. More... | |
virtual GLint | getAttributeIndex (VertexElementSemantic semantic, uint index) |
Get the index of a non-standard attribute bound in the linked code. More... | |
GLSLGpuProgram * | getComputeProgram () const |
GLSLGpuProgram * | getDomainProgram () const |
GLSLGpuProgram * | getFragmentProgram () const |
GLSLGpuProgram * | getGeometryProgram () const |
GLuint | getGLProgramHandle (void) const |
Get the GL Handle for the program object. More... | |
GLSLGpuProgram * | getHullProgram () const |
GL3PlusVertexArrayObject * | getVertexArrayObject () |
GLSLGpuProgram * | getVertexProgram () const |
bool | isAttributeValid (VertexElementSemantic semantic, uint index) |
Is a non-standard attribute bound in the linked code? More... | |
bool | isSkeletalAnimationIncluded (void) const |
Returns whether the linked program includes the required instructions to perform skeletal animation. More... | |
void | setSkeletalAnimationIncluded (bool included) |
Sets whether the linked program includes the required instructions to perform skeletal animation. More... | |
virtual void | updatePassIterationUniforms (GpuProgramParametersSharedPtr params)=0 |
Updates program object uniforms using data from pass iteration GpuProgramParameters. More... | |
virtual void | updateUniformBlocks (GpuProgramParametersSharedPtr params, uint16 mask, GpuProgramType fromProgType)=0 |
Updates program object uniform blocks using data from GpuProgramParameters. More... | |
virtual void | updateUniforms (GpuProgramParametersSharedPtr params, uint16 mask, GpuProgramType fromProgType)=0 |
Updates program object uniforms using data from GpuProgramParameters. More... | |
Protected Types | |
typedef set< GLuint >::type | AttributeSet |
typedef map< String, VertexElementSemantic >::type | SemanticToStringMap |
Protected Member Functions | |
virtual void | _useProgram (void)=0 |
Put a program in use. More... | |
void | buildGLUniformReferences (void) |
Build uniform references from active named uniforms. More... | |
virtual void | compileAndLink (void)=0 |
Compiles and links the vertex and fragment programs. More... | |
VertexElementSemantic | getAttributeSemanticEnum (String type) |
const char * | getAttributeSemanticString (VertexElementSemantic semantic) |
Ogre::String | getCombinedName (void) |
void | getMicrocodeFromCache (void) |
Get the the binary data of a program from the microcode cache. More... | |
Protected Attributes | |
GLSLGpuProgram * | mComputeProgram |
Linked compute program. More... | |
GLint | mCustomAttributesIndexes [VES_COUNT][OGRE_MAX_TEXTURE_COORD_SETS] |
An array to hold the attributes indexes. More... | |
GLSLGpuProgram * | mDomainProgram |
Linked domain(evaluation) program. More... | |
GLSLGpuProgram * | mFragmentProgram |
Linked fragment program. More... | |
GLSLGpuProgram * | mGeometryProgram |
Linked geometry program. More... | |
GLuint | mGLProgramHandle |
GL handle for the program object. More... | |
GLUniformBufferList | mGLUniformBufferReferences |
Container of uniform buffer references that are active in the program object. More... | |
GLUniformReferenceList | mGLUniformReferences |
Container of uniform references that are active in the program object. More... | |
GLSLGpuProgram * | mHullProgram |
Linked hull(control) program. More... | |
GLint | mLinked |
Flag indicating that the program or pipeline object has been successfully linked. More... | |
SemanticToStringMap | mSemanticTypeMap |
bool | mSkeletalAnimation |
Flag indicating skeletal animation is being performed. More... | |
bool | mTriedToLinkAndFailed |
Flag indicating that the program or pipeline object has tried to link and failed. More... | |
bool | mUniformRefsBuilt |
Flag to indicate that uniform references have already been built. More... | |
GL3PlusVertexArrayObject * | mVertexArrayObject |
GL handle for the vertex array object. More... | |
GLSLGpuProgram * | mVertexProgram |
Linked vertex program. More... | |
C++ encapsulation of GLSL Program Object.
Definition at line 61 of file OgreGLSLProgramCommon.h.
|
protected |
Definition at line 98 of file OgreGLSLProgramCommon.h.
|
protected |
Definition at line 115 of file OgreGLSLProgramCommon.h.
Ogre::GLSLProgramCommon::GLSLProgramCommon | ( | GLSLGpuProgram * | vertexProgram, |
GLSLGpuProgram * | geometryProgram, | ||
GLSLGpuProgram * | fragmentProgram, | ||
GLSLGpuProgram * | hullProgram, | ||
GLSLGpuProgram * | domainProgram, | ||
GLSLGpuProgram * | computeProgram | ||
) |
Constructor should only be used by GLSLLinkProgramManager and GLSLProgramPipelineManager.
|
virtual |
|
protectedpure virtual |
Put a program in use.
Implemented in Ogre::GLSLProgramPipeline, and Ogre::GLSLLinkProgram.
|
pure virtual |
Makes a program object active by making sure it is linked and then putting it in use.
Implemented in Ogre::GLSLProgramPipeline, and Ogre::GLSLLinkProgram.
|
protected |
Build uniform references from active named uniforms.
|
protectedpure virtual |
Compiles and links the vertex and fragment programs.
Implemented in Ogre::GLSLProgramPipeline, and Ogre::GLSLLinkProgram.
|
virtual |
Finds layout qualifiers in the shader source and sets attribute indices appropriately.
|
virtual |
Get the index of a non-standard attribute bound in the linked code.
Reimplemented in Ogre::GLSLProgramPipeline.
|
protected |
|
protected |
|
protected |
|
inline |
Definition at line 172 of file OgreGLSLProgramCommon.h.
|
inline |
Definition at line 171 of file OgreGLSLProgramCommon.h.
|
inline |
Definition at line 168 of file OgreGLSLProgramCommon.h.
|
inline |
Definition at line 169 of file OgreGLSLProgramCommon.h.
|
inline |
Get the GL Handle for the program object.
Definition at line 145 of file OgreGLSLProgramCommon.h.
|
inline |
Definition at line 170 of file OgreGLSLProgramCommon.h.
|
protected |
Get the the binary data of a program from the microcode cache.
|
inline |
Definition at line 173 of file OgreGLSLProgramCommon.h.
|
inline |
Definition at line 167 of file OgreGLSLProgramCommon.h.
bool Ogre::GLSLProgramCommon::isAttributeValid | ( | VertexElementSemantic | semantic, |
uint | index | ||
) |
Is a non-standard attribute bound in the linked code?
|
inline |
Returns whether the linked program includes the required instructions to perform skeletal animation.
Definition at line 160 of file OgreGLSLProgramCommon.h.
|
inline |
Sets whether the linked program includes the required instructions to perform skeletal animation.
Definition at line 152 of file OgreGLSLProgramCommon.h.
|
pure virtual |
Updates program object uniforms using data from pass iteration GpuProgramParameters.
normally called by GLSLGpuProgram::bindMultiPassParameters() just before multi pass rendering occurs.
Implemented in Ogre::GLSLProgramPipeline, and Ogre::GLSLLinkProgram.
|
pure virtual |
Updates program object uniform blocks using data from GpuProgramParameters.
normally called by GLSLGpuProgram::bindParameters() just before rendering occurs.
Implemented in Ogre::GLSLProgramPipeline, and Ogre::GLSLLinkProgram.
|
pure virtual |
Updates program object uniforms using data from GpuProgramParameters.
normally called by GLSLGpuProgram::bindParameters() just before rendering occurs.
Implemented in Ogre::GLSLProgramPipeline, and Ogre::GLSLLinkProgram.
|
protected |
Linked compute program.
Definition at line 81 of file OgreGLSLProgramCommon.h.
|
protected |
An array to hold the attributes indexes.
Definition at line 101 of file OgreGLSLProgramCommon.h.
|
protected |
Linked domain(evaluation) program.
Definition at line 79 of file OgreGLSLProgramCommon.h.
|
protected |
Linked fragment program.
Definition at line 73 of file OgreGLSLProgramCommon.h.
|
protected |
Linked geometry program.
Definition at line 75 of file OgreGLSLProgramCommon.h.
|
protected |
GL handle for the program object.
Definition at line 88 of file OgreGLSLProgramCommon.h.
|
protected |
Container of uniform buffer references that are active in the program object.
Definition at line 68 of file OgreGLSLProgramCommon.h.
|
protected |
Container of uniform references that are active in the program object.
Definition at line 65 of file OgreGLSLProgramCommon.h.
|
protected |
Linked hull(control) program.
Definition at line 77 of file OgreGLSLProgramCommon.h.
|
protected |
Flag indicating that the program or pipeline object has been successfully linked.
Definition at line 90 of file OgreGLSLProgramCommon.h.
|
protected |
Definition at line 116 of file OgreGLSLProgramCommon.h.
|
protected |
Flag indicating skeletal animation is being performed.
Definition at line 94 of file OgreGLSLProgramCommon.h.
|
protected |
Flag indicating that the program or pipeline object has tried to link and failed.
Definition at line 92 of file OgreGLSLProgramCommon.h.
|
protected |
Flag to indicate that uniform references have already been built.
Definition at line 86 of file OgreGLSLProgramCommon.h.
|
protected |
GL handle for the vertex array object.
Definition at line 83 of file OgreGLSLProgramCommon.h.
|
protected |
Linked vertex program.
Definition at line 71 of file OgreGLSLProgramCommon.h.