
Public Types | |
| enum | Type { VERTEX = GL_VERTEX_SHADER, FRAGMENT = GL_FRAGMENT_SHADER, UNDEFINED = -1 } |
Public Member Functions | |
| Shader (Type type=UNDEFINED) | |
| Shader (Type type, const std::string &source) | |
| Shader (const Shader &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY) | |
| Copy constructor using CopyOp to manage deep vs shallow copy. | |
| META_Object (osg, Shader) | |
| int | compare (const Shader &rhs) const |
| bool | setType (Type t) |
| void | setShaderSource (const std::string &sourceText) |
| Load the Shader's source code text from a string. | |
| bool | loadShaderSourceFromFile (const std::string &fileName) |
| Load the Shader's source code text from a file. | |
| const std::string & | getShaderSource () const |
| Query the shader's source code text. | |
| Type | getType () const |
| Get the Shader type as an enum. | |
| const char * | getTypename () const |
| Get the Shader type as a descriptive string. | |
| virtual void | resizeGLObjectBuffers (unsigned int maxSize) |
| Resize any per context GLObject buffers to specified size. | |
| void | releaseGLObjects (osg::State *state=0) const |
| release OpenGL objects in specified graphics context if State object is passed, otherwise release OpenGL objects for all graphics context if State object pointer NULL. | |
| void | dirtyShader () |
| Mark our PCSs as needing recompilation. | |
| void | compileShader (unsigned int contextID) const |
| If needed, compile the PCS's glShader. | |
| void | attachShader (unsigned int contextID, GLuint program) const |
| For a given GL context, attach a glShader to a glProgram. | |
| bool | getGlShaderInfoLog (unsigned int contextID, std::string &log) const |
| Query InfoLog from a glShader. | |
Static Public Member Functions | |
| static Shader * | readShaderFile (Type type, const std::string &fileName) |
| Read shader source from file and then constructor shader of specified type. | |
| static void | deleteGlShader (unsigned int contextID, GLuint shader) |
| Mark internal glShader for deletion. | |
| static void | flushDeletedGlShaders (unsigned int contextID, double currentTime, double &availableTime) |
| flush all the cached glShaders which need to be deleted in the OpenGL context related to contextID. | |
| static Shader::Type | getTypeId (const std::string &tname) |
Protected Types | |
| typedef std::set < osg::Program * > | ProgramSet |
| osg::Programs that this osg::Shader is attached to | |
Protected Member Functions | |
| virtual | ~Shader () |
| PerContextShader * | getPCS (unsigned int contextID) const |
| bool | addProgramRef (osg::Program *program) |
| bool | removeProgramRef (osg::Program *program) |
Protected Attributes | |
| Type | _type |
| std::string | _shaderSource |
| ProgramSet | _programSet |
| osg::buffered_value < osg::ref_ptr < PerContextShader > > | _pcsList |
Friends | |
| class | osg::Program |
Classes | |
| class | PerContextShader |
| PerContextShader (PCS) is an OSG-internal encapsulation of glShader per-GL context. More... | |
It is a container to load the shader source code text and manage its compilation. An osg::Shader may be attached to more than one osg::Program. Shader will automatically manage per-context instancing of the internal objects, if that is necessary for a particular display configuration.
typedef std::set< osg::Program* > osg::Shader::ProgramSet [protected] |
osg::Programs that this osg::Shader is attached to
| enum osg::Shader::Type |
| osg::Shader::Shader | ( | Type | type = UNDEFINED |
) |
| osg::Shader::Shader | ( | Type | type, | |
| const std::string & | source | |||
| ) |
| osg::Shader::Shader | ( | const Shader & | rhs, | |
| const osg::CopyOp & | copyop = osg::CopyOp::SHALLOW_COPY | |||
| ) |
Copy constructor using CopyOp to manage deep vs shallow copy.
| virtual osg::Shader::~Shader | ( | ) | [protected, virtual] |
| osg::Shader::META_Object | ( | osg | , | |
| Shader | ||||
| ) |
| int osg::Shader::compare | ( | const Shader & | rhs | ) | const |
| bool osg::Shader::setType | ( | Type | t | ) |
| void osg::Shader::setShaderSource | ( | const std::string & | sourceText | ) |
Load the Shader's source code text from a string.
Read shader source from file and then constructor shader of specified type.
Return the resulting Shader or 0 if no valid shader source code be read.
| bool osg::Shader::loadShaderSourceFromFile | ( | const std::string & | fileName | ) |
Load the Shader's source code text from a file.
| const std::string& osg::Shader::getShaderSource | ( | ) | const [inline] |
Query the shader's source code text.
| const char* osg::Shader::getTypename | ( | ) | const |
Get the Shader type as a descriptive string.
| virtual void osg::Shader::resizeGLObjectBuffers | ( | unsigned int | maxSize | ) | [virtual] |
| void osg::Shader::releaseGLObjects | ( | osg::State * | state = 0 |
) | const [virtual] |
release OpenGL objects in specified graphics context if State object is passed, otherwise release OpenGL objects for all graphics context if State object pointer NULL.
Reimplemented from osg::Object.
| void osg::Shader::dirtyShader | ( | ) |
Mark our PCSs as needing recompilation.
Also mark Programs that depend on us as needing relink
| void osg::Shader::compileShader | ( | unsigned int | contextID | ) | const |
If needed, compile the PCS's glShader.
| void osg::Shader::attachShader | ( | unsigned int | contextID, | |
| GLuint | program | |||
| ) | const |
For a given GL context, attach a glShader to a glProgram.
| bool osg::Shader::getGlShaderInfoLog | ( | unsigned int | contextID, | |
| std::string & | log | |||
| ) | const |
Query InfoLog from a glShader.
| static void osg::Shader::deleteGlShader | ( | unsigned int | contextID, | |
| GLuint | shader | |||
| ) | [static] |
Mark internal glShader for deletion.
Deletion requests are queued tuntil they can be executed in the proper GL context.
| static void osg::Shader::flushDeletedGlShaders | ( | unsigned int | contextID, | |
| double | currentTime, | |||
| double & | availableTime | |||
| ) | [static] |
flush all the cached glShaders which need to be deleted in the OpenGL context related to contextID.
| static Shader::Type osg::Shader::getTypeId | ( | const std::string & | tname | ) | [static] |
| PerContextShader* osg::Shader::getPCS | ( | unsigned int | contextID | ) | const [protected] |
| bool osg::Shader::addProgramRef | ( | osg::Program * | program | ) | [protected] |
| bool osg::Shader::removeProgramRef | ( | osg::Program * | program | ) | [protected] |
friend class osg::Program [friend] |
Type osg::Shader::_type [protected] |
std::string osg::Shader::_shaderSource [protected] |
ProgramSet osg::Shader::_programSet [protected] |
osg::buffered_value< osg::ref_ptr<PerContextShader> > osg::Shader::_pcsList [mutable, protected] |