Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

# osg::Shader Class Reference

osg::Shader is an application-level abstraction of an OpenGL glShader. More...

Inheritance diagram for osg::Shader:

[legend]
List of all members.

## 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 &copyop=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.
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
Shader * | readShaderFile (Type type, const std::string &fileName)
| Read shader source from file and then constructor shader of specified type.
void | deleteGlShader (unsigned int contextID, GLuint shader)
| Mark internal glShader for deletion.
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.
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

## Detailed Description

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.

## Member Typedef Documentation

typedef std::set< osg::Program* > osg::Shader::ProgramSet`[protected]`

| osg::Programs that this osg::Shader is attached to

## Member Enumeration Documentation

enum osg::Shader::Type

  | Enumeration values:
  VERTEX |
  FRAGMENT |
  UNDEFINED |

## Constructor & Destructor Documentation

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]`

## Member Function Documentation

bool osg::Shader::addProgramRef | ( | osg::Program * | program | ) | `[protected]`

void osg::Shader::attachShader | ( | unsigned int | contextID,
|  | GLuint | program
| ) | const

| For a given GL context, attach a glShader to a glProgram.

int osg::Shader::compare | ( | const Shader & | rhs | ) | const

void osg::Shader::compileShader | ( | unsigned int | contextID | ) | const

| If needed, compile the PCS's glShader.

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.

void osg::Shader::dirtyShader | ( |  | ) |

| Mark our PCSs as needing recompilation. Also mark Programs that depend on us as needing relink

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.

bool osg::Shader::getGlShaderInfoLog | ( | unsigned int | contextID,
|  | std::string & | log
| ) | const

| Query InfoLog from a glShader.

PerContextShader* osg::Shader::getPCS | ( | unsigned int | contextID | ) | const`[protected]`

const std::string& osg::Shader::getShaderSource | ( |  | ) | const`[inline]`

| Query the shader's source code text.

Type osg::Shader::getType | ( |  | ) | const`[inline]`

| Get the Shader type as an enum.

Shader::Type osg::Shader::getTypeId | ( | const std::string & | tname | ) | `[static]`

const char* osg::Shader::getTypename | ( |  | ) | const

| Get the Shader type as a descriptive string.

bool osg::Shader::loadShaderSourceFromFile | ( | const std::string & | fileName | ) |

| Load the Shader's source code text from a file.

osg::Shader::META_Object | ( | osg | ,
|  | Shader |
| ) |

Shader* osg::Shader::readShaderFile | ( | Type | type,
|  | const std::string & | fileName
| ) | `[static]`

| 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::removeProgramRef | ( | osg::Program * | program | ) | `[protected]`

void osg::Shader::setShaderSource | ( | const std::string & | sourceText | ) |

| Load the Shader's source code text from a string.

bool osg::Shader::setType | ( | Type | t | ) |

## Member Data Documentation

osg::buffered_value< osg::ref_ptr<PerContextShader> > osg::Shader::_pcsList`[mutable, protected]`

ProgramSet osg::Shader::_programSet`[protected]`

std::string osg::Shader::_shaderSource`[protected]`

Type osg::Shader::_type`[protected]`

The documentation for this class was generated from the following file:

- Shader