![]() |
OGRE
2.1.0unstable
Object-Oriented Graphics Rendering Engine
|
Ogre assumes that there are separate vertex and fragment programs to deal with but GLSL ES has one program object that represents the active vertex and fragment shader objects during a rendering state. More...
#include <OgreGLSLESLinkProgramManager.h>
Inheritance diagram for Ogre::GLSLESLinkProgramManager:Public Member Functions | |
| GLSLESLinkProgramManager (void) | |
| ~GLSLESLinkProgramManager (void) | |
| void | destroyAllByProgram (GLSLESGpuProgram *gpuProgram) |
| Destroy all linker programs which referencing this gpu program. More... | |
| bool | destroyLinkProgram (GLSLESLinkProgram *linkProgram) |
| Destroy and remove the linker program from the local cache. More... | |
| void | extractConstantDefs (const String &src, GpuNamedConstants &constantDefs, const String &filename) |
| Populate a list of uniforms based on GLSL ES source. More... | |
| void | extractUniforms (GLuint programObject, const GpuConstantDefinitionMap *vertexConstantDefs, const GpuConstantDefinitionMap *fragmentConstantDefs, GLUniformReferenceList &list, GLUniformBufferList &sharedList) |
| Populate a list of uniforms based on a program object. More... | |
| GLSLESLinkProgram * | getActiveLinkProgram (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. More... | |
| GLSLESLinkProgram * | getByProgram (GLSLESGpuProgram *gpuProgram) |
| Get the linker program by a gpu program. More... | |
| void | optimiseShaderSource (GLSLESGpuProgram *gpuProgram) |
| void | setActiveFragmentShader (GLSLESGpuProgram *fragmentGpuProgram) |
| Set the active fragment shader for the next rendering state. More... | |
| void | setActiveVertexShader (GLSLESGpuProgram *vertexGpuProgram) |
| Set the active vertex shader for the next rendering state. More... | |
Static Public Member Functions | |
| static GLSLESLinkProgramManager & | getSingleton (void) |
| static GLSLESLinkProgramManager * | getSingletonPtr (void) |
Ogre assumes that there are separate vertex and fragment programs to deal with but GLSL ES 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 ES Link Program Manager does the same. The GLSL ES 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::GLSLESLinkProgramManager::GLSLESLinkProgramManager | ( | void | ) |
| Ogre::GLSLESLinkProgramManager::~GLSLESLinkProgramManager | ( | void | ) |
| void Ogre::GLSLESLinkProgramManager::destroyAllByProgram | ( | GLSLESGpuProgram * | gpuProgram | ) |
Destroy all linker programs which referencing this gpu program.
| bool Ogre::GLSLESLinkProgramManager::destroyLinkProgram | ( | GLSLESLinkProgram * | linkProgram | ) |
Destroy and remove the linker program from the local cache.
|
inherited |
Populate a list of uniforms based on GLSL ES source.
| 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. |
|
inherited |
Populate a list of uniforms based on a program object.
| programObject | Handle to the program object to query |
| vertexConstantDefs | Definition of the constants 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 constants 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). |
| GLSLESLinkProgram* Ogre::GLSLESLinkProgramManager::getActiveLinkProgram | ( | 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.
| GLSLESLinkProgram* Ogre::GLSLESLinkProgramManager::getByProgram | ( | GLSLESGpuProgram * | gpuProgram | ) |
Get the linker program by a gpu program.
|
static |
|
static |
|
inherited |
| void Ogre::GLSLESLinkProgramManager::setActiveFragmentShader | ( | GLSLESGpuProgram * | fragmentGpuProgram | ) |
Set the active fragment shader for the next rendering state.
The active program object will be cleared. Normally called from the GLSLESGpuProgram::bindProgram and unbindProgram methods
| void Ogre::GLSLESLinkProgramManager::setActiveVertexShader | ( | GLSLESGpuProgram * | vertexGpuProgram | ) |
Set the active vertex shader for the next rendering state.
The active program object will be cleared. Normally called from the GLSLESGpuProgram::bindProgram and unbindProgram methods