Public Member Functions |
| Shader (Type type=UNDEFINED) |
| Shader (Type type, const std::string &source) |
| Shader (Type type, ShaderBinary *shaderBinary) |
| 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) |
| Set the Shader type as an enum.
|
Type | getType () const |
| Get the Shader type as an enum.
|
const char * | getTypename () const |
| Get the Shader type as a descriptive string.
|
void | setFileName (const std::string &fileName) |
| Set file name for the shader source code.
|
const std::string & | getFileName () const |
| Get filename to which the shader source code belongs.
|
void | setShaderSource (const std::string &sourceText) |
| Set the Shader's source code text from a string.
|
const std::string & | getShaderSource () const |
| Query the shader's source code text.
|
void | setShaderBinary (ShaderBinary *shaderBinary) |
| Set the Shader using a ShaderBinary.
|
ShaderBinary * | getShaderBinary () |
| Get the Shader's ShaderBinary, return NULL if none is assigned.
|
const ShaderBinary * | getShaderBinary () const |
| Get the const Shader's ShaderBinary, return NULL if none is assigned.
|
bool | loadShaderSourceFromFile (const std::string &fileName) |
| Load the Shader's source code text from a file.
|
void | addCodeInjection (float position, const std::string &code) |
| Add code injection that will be placed in the main shader to enable support for this shader.
|
CodeInjectionMap & | getCodeInjectionMap () |
| Get the code injection map.
|
const CodeInjectionMap & | getCodeInjectionMap () const |
| Get the const code injection map.
|
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 (osg::State &state) 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.
|
void | detachShader (unsigned int contextID, GLuint program) const |
| For a given GL context, detach a glShader to a glProgram.
|
bool | getGlShaderInfoLog (unsigned int contextID, std::string &log) const |
| Query InfoLog from a glShader.
|
PerContextShader * | getPCS (unsigned int contextID) const |
| Object () |
| Construct an object.
|
| Object (bool threadSafeRefUnref) |
| Object (const Object &, const CopyOp ©op=CopyOp::SHALLOW_COPY) |
| Copy constructor, optional CopyOp object can be used to control shallow vs deep copying of dynamic data.
|
virtual Object * | cloneType () const =0 |
| Clone the type of an object, with Object* return type.
|
virtual Object * | clone (const CopyOp &) const =0 |
| Clone an object, with Object* return type.
|
virtual bool | isSameKindAs (const Object *) const |
virtual const char * | libraryName () const =0 |
| return the name of the object's library.
|
virtual const char * | className () const =0 |
| return the name of the object's class type.
|
virtual void | setThreadSafeRefUnref (bool threadSafe) |
| Set whether to use a mutex to ensure ref() and unref() are thread safe.
|
virtual void | setName (const std::string &name) |
| Set the name of object using C++ style string.
|
void | setName (const char *name) |
| Set the name of object using a C style string.
|
const std::string & | getName () const |
| Get the name of object.
|
void | setDataVariance (DataVariance dv) |
| Set the data variance of this object.
|
DataVariance | getDataVariance () const |
| Get the data variance of this object.
|
virtual void | computeDataVariance () |
| Compute the DataVariance based on an assessment of callback etc.
|
void | setUserDataContainer (osg::UserDataContainer *udc) |
| set the UserDataContainer object.
|
osg::UserDataContainer * | getUserDataContainer () |
| get the UserDataContainer attached to this object.
|
const osg::UserDataContainer * | getUserDataContainer () const |
| get the const UserDataContainer attached to this object.
|
osg::UserDataContainer * | getOrCreateUserDataContainer () |
| Convinience method that returns the UserDataContainer, and if one doesn't already exist creates and assigns a DefaultUserDataContainer to the Object and then return this new UserDataContainer.
|
virtual void | setUserData (Referenced *obj) |
| Set user data, data must be subclassed from Referenced to allow automatic memory handling.
|
virtual Referenced * | getUserData () |
| Get user data.
|
virtual const Referenced * | getUserData () const |
| Get const user data.
|
template<typename T > |
bool | getUserValue (const std::string &name, T &value) const |
| Convinience method that casts the named UserObject to osg::TemplateValueObject<T> and gets the value.
|
template<typename T > |
void | setUserValue (const std::string &name, const T &value) |
| Convinience method that creates the osg::TemplateValueObject<T> to store the specified value and adds it as a named UserObject.
|
| Referenced () |
| Referenced (bool threadSafeRefUnref) |
| Referenced (const Referenced &) |
Referenced & | operator= (const Referenced &) |
bool | getThreadSafeRefUnref () const |
| Get whether a mutex is used to ensure ref() and unref() are thread safe.
|
OpenThreads::Mutex * | getRefMutex () const |
| Get the mutex used to ensure thread safety of ref()/unref().
|
int | ref () const |
| Increment the reference count by one, indicating that this object has another pointer which is referencing it.
|
int | unref () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it.
|
int | unref_nodelete () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it.
|
int | referenceCount () const |
| Return the number of pointers currently referencing this object.
|
ObserverSet * | getObserverSet () const |
| Get the ObserverSet if one is attached, otherwise return NULL.
|
ObserverSet * | getOrCreateObserverSet () const |
| Get the ObserverSet if one is attached, otherwise create an ObserverSet, attach it, then return this newly created ObserverSet.
|
void | addObserver (Observer *observer) const |
| Add a Observer that is observing this object, notify the Observer when this object gets deleted.
|
void | removeObserver (Observer *observer) const |
| Remove Observer that is observing this object.
|
osg::Shader is an application-level abstraction of an OpenGL glShader.
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.