![]() |
OGRE 1.12.10
Object-Oriented Graphics Rendering Engine
|
Ogre assumes that there are separate vertex and fragment programs to deal with but GLSL has one program object that represents the active vertex and fragment shader objects during a rendering state. More...
#include <OgreGLSLProgramManager.h>
Inheritance diagram for Ogre::GLSLProgramManager:Static Public Member Functions | |
| static GLSLProgramManager & | getSingleton (void) |
| static GLSLProgramManager * | getSingletonPtr (void) |
Static Public Member Functions inherited from Ogre::Singleton< GLSLProgramManager > | |
| static GLSLProgramManager & | getSingleton (void) |
| Get the singleton instance. | |
| static GLSLProgramManager * | getSingletonPtr (void) |
| Get the singleton instance. | |
Ogre assumes that there are separate vertex and fragment programs to deal with but GLSL has one program object that represents the active vertex and fragment shader objects during a rendering state.
GLSL Vertex and fragment 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 vertex program and one fragment 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 vertex and fragment program. 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 | ( | GL3PlusRenderSystem * | renderSystem | ) |
| Ogre::GLSLProgramManager::~GLSLProgramManager | ( | ) |
| GLSLProgram * Ogre::GLSLProgramManager::getActiveProgram | ( | void | ) |
Get the program object that links the two active shader objects together if a program object was not already created and linked a new one is created and linked.
| void Ogre::GLSLProgramManager::setActiveShader | ( | GpuProgramType | type, |
| GLSLShader * | shader | ||
| ) |
Set the shader for the next rendering state.
The active program object will be cleared. Normally called from the GLRenderSystem::bindGpuProgram and unbindProgram methods
| void Ogre::GLSLProgramManager::extractUniformsFromProgram | ( | GLuint | programObject, |
| const GpuConstantDefinitionMap *(&) | constantDefs[6], | ||
| GLUniformReferenceList & | uniformList, | ||
| GLAtomicCounterReferenceList & | counterList, | ||
| GLCounterBufferList & | counterBufferList | ||
| ) |
Populate a list of uniforms based on an OpenGL program object.
| GL3PlusStateCacheManager * Ogre::GLSLProgramManager::getStateCacheManager | ( | ) |
|
static |
|
static |