|
| GLSLSeparableProgramManager (const GL3PlusSupport &support) |
|
| ~GLSLSeparableProgramManager (void) |
|
void | extractUniformsFromGLSL (const String &src, GpuNamedConstants &constantDefs, const String &filename) |
| Populate a list of uniforms based on GLSL source and store them in GpuNamedConstants. More...
|
|
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. More...
|
|
GLSLSeparableProgram * | getCurrentSeparableProgram (void) |
| Get the program pipeline that combines the current program objects. More...
|
|
void | setActiveComputeShader (GLSLShader *computShader) |
|
void | setActiveFragmentShader (GLSLShader *fragmentShader) |
|
void | setActiveGeometryShader (GLSLShader *geometryShader) |
|
void | setActiveTessDomainShader (GLSLShader *domainShader) |
|
void | setActiveTessHullShader (GLSLShader *hullShader) |
|
void | setActiveVertexShader (GLSLShader *vertexShader) |
| Set the active link programs for the next rendering state. More...
|
|
Ogre assumes that there are separate vertex and fragment programs to deal with but GLSL has one program pipeline object that represents the active vertex and fragment program objects during a rendering state.
GLSL vertex and fragment program objects are compiled separately and then attached to a program object and then the program pipeline object is linked. Since Ogre can only handle one vertex program stage and one fragment program stage being active in a pass, the GLSL Program Pipeline Manager does the same. The GLSL Program Pipeline Manager acts as a state machine and activates a pipeline object based on the active vertex and fragment program. Previously created pipeline objects are stored along with a unique key in a hash map for quick retrieval the next time the pipeline object is required.