OGRE
13.6
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 <OgreGLSLProgramManagerCommon.h>
Public Member Functions | |
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... | |
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::GLSLProgramManagerCommon::GLSLProgramManagerCommon | ( | ) |
|
virtual |
void Ogre::GLSLProgramManagerCommon::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::GLSLProgramManagerCommon::destroyAllByShader | ( | GLSLShaderCommon * | shader | ) |
Destroy all programs which referencing this shader.
void Ogre::GLSLProgramManagerCommon::setActiveShader | ( | GpuProgramType | type, |
GLSLShaderCommon * | shader | ||
) |
Set the shader for the next rendering state.
The active program object will be cleared.