![]() |
OGRE
13.6
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 <OgreGLSLESProgramManager.h>
Public Member Functions | |
GLSLESProgramManager (void) | |
~GLSLESProgramManager (void) | |
GLSLESProgramCommon * | 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. More... | |
void | optimiseShaderSource (GLSLESGpuProgram *gpuProgram) |
![]() | |
GLSLProgramManagerCommon () | |
virtual | ~GLSLProgramManagerCommon () |
void | destroyAllByShader (GLSLShaderCommon *shader) |
Destroy all programs which referencing this shader. More... | |
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 | setActiveShader (GpuProgramType type, GLSLShaderCommon *shader) |
Set the shader for the next rendering state. More... | |
![]() | |
Singleton (void) | |
~Singleton (void) | |
Static Public Member Functions | |
static void | extractUniforms (GLuint programObject, const GpuConstantDefinitionMap *vertexConstantDefs, const GpuConstantDefinitionMap *fragmentConstantDefs, GLUniformReferenceList &list) |
Populate a list of uniforms based on a program object. More... | |
static GLSLESProgramManager & | getSingleton (void) |
static GLSLESProgramManager * | getSingletonPtr (void) |
![]() | |
static GLSLESProgramManager & | getSingleton (void) |
Get the singleton instance. More... | |
static GLSLESProgramManager * | getSingletonPtr (void) |
Get the singleton instance. More... | |
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::GLSLESProgramManager::GLSLESProgramManager | ( | void | ) |
Ogre::GLSLESProgramManager::~GLSLESProgramManager | ( | void | ) |
GLSLESProgramCommon* Ogre::GLSLESProgramManager::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::GLSLESProgramManager::optimiseShaderSource | ( | GLSLESGpuProgram * | gpuProgram | ) |
|
static |
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). |
|
static |
|
static |