|  | OGRE 2.1
    Object-Oriented Graphics Rendering Engine | 
Ogre assumes that there are separate programs to deal with but GLSL has one program object that represents the active shader objects during a rendering state. More...
#include <OgreGLSLProgramManager.h>
 Inheritance diagram for Ogre::GLSLProgramManager:
 Inheritance diagram for Ogre::GLSLProgramManager:| Public Member Functions | |
| GLSLProgramManager (const GL3PlusSupport &support) | |
| void | extractUniformsFromGLSL (const String &src, GpuNamedConstants &constantDefs, const String &filename) | 
| Populate a list of uniforms based on GLSL source and store them in GpuNamedConstants. | |
| void | extractUniformsFromProgram (GLuint programObject, const GpuConstantDefinitionMap *vertexConstantDefs, const GpuConstantDefinitionMap *hullConstantDefs, const GpuConstantDefinitionMap *domainConstantDefs, const GpuConstantDefinitionMap *geometryConstantDefs, const GpuConstantDefinitionMap *fragmentConstantDefs, const GpuConstantDefinitionMap *computeConstantDefs, GLUniformReferenceList &uniformList, GLAtomicCounterReferenceList &counterList, GLUniformBufferList &uniformBufferList, SharedParamsBufferMap &sharedParamsBufferMap, GLCounterBufferList &counterBufferList) | 
| Populate a list of uniforms based on an OpenGL program object. | |
Ogre assumes that there are separate programs to deal with but GLSL has one program object that represents the active shader objects during a rendering state.
GLSL shader objects are compiled separately and then attached to a program object and then the program object is linked. Since Ogre can only handle one program being active in a pass, the GLSL Link Program Manager does the same. The GLSL Link program manager acts as a state machine and activates a program object based on the active programs. Previously created program objects are stored along with a unique key in a hash_map for quick retrieval the next time the program object is required.
| Ogre::GLSLProgramManager::GLSLProgramManager | ( | const GL3PlusSupport & | support | ) | 
| void Ogre::GLSLProgramManager::extractUniformsFromGLSL | ( | const String & | src, | 
| GpuNamedConstants & | constantDefs, | ||
| const String & | filename | ||
| ) | 
Populate a list of uniforms based on GLSL source and store them in GpuNamedConstants.
 
| src | Reference to the source code. | 
| constantDefs | The defs to populate (will not be cleared before adding, clear it yourself before calling this if that's what you want). | 
| filename | The file name this came from, for logging errors. | 
| void Ogre::GLSLProgramManager::extractUniformsFromProgram | ( | GLuint | programObject, | 
| const GpuConstantDefinitionMap * | vertexConstantDefs, | ||
| const GpuConstantDefinitionMap * | hullConstantDefs, | ||
| const GpuConstantDefinitionMap * | domainConstantDefs, | ||
| const GpuConstantDefinitionMap * | geometryConstantDefs, | ||
| const GpuConstantDefinitionMap * | fragmentConstantDefs, | ||
| const GpuConstantDefinitionMap * | computeConstantDefs, | ||
| GLUniformReferenceList & | uniformList, | ||
| GLAtomicCounterReferenceList & | counterList, | ||
| GLUniformBufferList & | uniformBufferList, | ||
| SharedParamsBufferMap & | sharedParamsBufferMap, | ||
| GLCounterBufferList & | counterBufferList | ||
| ) | 
Populate a list of uniforms based on an OpenGL program object.
| programObject | Handle to the program object to query. | 
| vertexConstantDefs | Definition of the uniforms extracted from the vertex program, used to match up physical buffer indexes with program uniforms. May be null if there is no vertex program. | 
| fragmentConstantDefs | Definition of the uniforms extracted from the fragment program, used to match up physical buffer indexes with program uniforms. May be null if there is no fragment program. | 
| list | The list to populate (will not be cleared before adding, clear it yourself before calling this if that's what you want). |