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

# osg::Program Class Reference

osg::Program is an application-level abstraction of an OpenGL glProgram. More...

Inheritance diagram for osg::Program:

[legend]
List of all members.

## Public Types
typedef std::map< std::string, GLuint > | AttribBindingList
typedef std::map< std::string, std::pair< GLint, GLenum > > | NameInfoMap
## Public Member Functions
| Program ()
| Program (const Program &rhs, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
| Copy constructor using CopyOp to manage deep vs shallow copy.
| META_StateAttribute (osg, Program, PROGRAM)
virtual int | compare (const osg::StateAttribute &sa) const
| return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.
virtual void | apply (osg::State &state) const
| If enabled, activate our program in the GL pipeline, performing any rebuild operations that might be pending.
virtual void | compileGLObjects (osg::State &state) const
| default to nothing to compile - all state is applied immediately.
virtual 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 | dirtyProgram ()
| Mark our PCSOs as needing relink.
bool | addShader (Shader *shader)
| Attach an osg::Shader to this osg::Program.
unsigned int | getNumShaders () const
Shader * | getShader (unsigned int i)
const Shader * | getShader (unsigned int i) const
bool | removeShader (Shader *shader)
| Remove osg::Shader from this osg::Program.
void | addBindAttribLocation (const std::string &name, GLuint index)
| Add an attribute location binding.
void | removeBindAttribLocation (const std::string &name)
| Add an attribute location binding.
const AttribBindingList & | getAttribBindingList () const
bool | isFixedFunction () const
| Return true if this Program represents "fixed-functionality" rendering.
bool | getGlProgramInfoLog (unsigned int contextID, std::string &log) const
| Query InfoLog from a glProgram.
const NameInfoMap & | getActiveUniforms (unsigned int contextID) const
const NameInfoMap & | getActiveAttribs (unsigned int contextID) const
PerContextProgram * | getPCP (unsigned int contextID) const
| Get the PCP for a particular GL context.
## Static Public Member Functions
void | deleteGlProgram (unsigned int contextID, GLuint program)
| Mark internal glProgram for deletion.
void | flushDeletedGlPrograms (unsigned int contextID, double currentTime, double &availableTime)
| flush all the cached glPrograms which need to be deleted in the OpenGL context related to contextID.
## Protected Types
typedef std::vector< ref_ptr< Shader > > | ShaderList
## Protected Member Functions
virtual | ~Program ()
## Protected Attributes
osg::buffered_value< osg::ref_ptr< PerContextProgram > > | _pcpList
AttribBindingList | _attribBindingList
ShaderList | _shaderList

## Detailed Description

osg::Program is an application-level abstraction of an OpenGL glProgram.

It is an osg::StateAttribute that, when applied, will activate a glProgram for subsequent rendering. osg::Shaders containing the actual shader source code are attached to a Program, which will then manage the compilation, linking, and activation of the GLSL program. osg::Program will automatically manage per-context instancing of the OpenGL glPrograms, if that is necessary for a particular display configuration.

## Member Typedef Documentation

typedef std::map<std::string,GLuint> osg::Program::AttribBindingList

typedef std::map< std::string, std::pair<GLint,GLenum> > osg::Program::NameInfoMap

typedef std::vector< ref_ptr<Shader> > osg::Program::ShaderList`[protected]`

## Constructor & Destructor Documentation

osg::Program::Program | ( |  | ) |

osg::Program::Program | ( | const Program & | rhs,
|  | const osg::CopyOp & | copyop = osg::CopyOp::SHALLOW_COPY
| ) |

| Copy constructor using CopyOp to manage deep vs shallow copy.

virtual osg::Program::~Program | ( |  | ) | `[protected, virtual]`

## Member Function Documentation

void osg::Program::addBindAttribLocation | ( | const std::string & | name,
|  | GLuint | index
| ) |

| Add an attribute location binding.

bool osg::Program::addShader | ( | Shader * | shader | ) |

| Attach an osg::Shader to this osg::Program. Mark Program as needing relink. Return true for success

virtual void osg::Program::apply | ( | osg::State & | state | ) | const`[virtual]`

| If enabled, activate our program in the GL pipeline, performing any rebuild operations that might be pending. Implements osg::StateAttribute.

virtual int osg::Program::compare | ( | const osg::StateAttribute & | sa | ) | const`[virtual]`

| return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.

virtual void osg::Program::compileGLObjects | ( | osg::State & | state | ) | const`[virtual]`

| default to nothing to compile - all state is applied immediately. Reimplemented from osg::StateAttribute.

void osg::Program::deleteGlProgram | ( | unsigned int | contextID,
|  | GLuint | program
| ) | `[static]`

| Mark internal glProgram for deletion. Deletion requests are queued until they can be executed in the proper GL context.

void osg::Program::dirtyProgram | ( |  | ) |

| Mark our PCSOs as needing relink.

void osg::Program::flushDeletedGlPrograms | ( | unsigned int | contextID,
|  | double | currentTime,
|  | double & | availableTime
| ) | `[static]`

| flush all the cached glPrograms which need to be deleted in the OpenGL context related to contextID.

const NameInfoMap& osg::Program::getActiveAttribs | ( | unsigned int | contextID | ) | const

const NameInfoMap& osg::Program::getActiveUniforms | ( | unsigned int | contextID | ) | const

const AttribBindingList& osg::Program::getAttribBindingList | ( |  | ) | const`[inline]`

bool osg::Program::getGlProgramInfoLog | ( | unsigned int | contextID,
|  | std::string & | log
| ) | const

| Query InfoLog from a glProgram.

unsigned int osg::Program::getNumShaders | ( |  | ) | const`[inline]`

PerContextProgram* osg::Program::getPCP | ( | unsigned int | contextID | ) | const

| Get the PCP for a particular GL context.

const Shader* osg::Program::getShader | ( | unsigned int | i | ) | const`[inline]`

Shader* osg::Program::getShader | ( | unsigned int | i | ) | `[inline]`

bool osg::Program::isFixedFunction | ( |  | ) | const

| Return true if this Program represents "fixed-functionality" rendering.

osg::Program::META_StateAttribute | ( | osg | ,
|  | Program | ,
|  | PROGRAM |
| ) |

virtual void osg::Program::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::StateAttribute.

void osg::Program::removeBindAttribLocation | ( | const std::string & | name | ) |

| Add an attribute location binding.

bool osg::Program::removeShader | ( | Shader * | shader | ) |

| Remove osg::Shader from this osg::Program. Mark Program as needing relink. Return true for success

## Member Data Documentation

AttribBindingList osg::Program::_attribBindingList`[protected]`

osg::buffered_value< osg::ref_ptr<PerContextProgram> > osg::Program::_pcpList`[mutable, protected]`

ShaderList osg::Program::_shaderList`[protected]`

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

- Program