Public Types | |
typedef std::map< std::string, GLuint > | AttribBindingList |
typedef std::map< std::string, GLuint > | FragDataBindingList |
typedef std::map< std::string, ActiveVarInfo > | ActiveVarInfoMap |
Public Member Functions | |
Program () | |
Program (const Program &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY) | |
META_StateAttribute (osg, Program, PROGRAM) | |
virtual int | compare (const osg::StateAttribute &sa) const |
virtual void | apply (osg::State &state) const |
virtual void | setThreadSafeRefUnref (bool threadSafe) |
virtual void | compileGLObjects (osg::State &state) const |
virtual void | resizeGLObjectBuffers (unsigned int maxSize) |
virtual void | releaseGLObjects (osg::State *state=0) const |
void | dirtyProgram () |
bool | addShader (Shader *shader) |
unsigned int | getNumShaders () const |
Shader * | getShader (unsigned int i) |
const Shader * | getShader (unsigned int i) const |
bool | removeShader (Shader *shader) |
void | setParameter (GLenum pname, GLint value) |
GLint | getParameter (GLenum pname) const |
void | addBindAttribLocation (const std::string &name, GLuint index) |
void | removeBindAttribLocation (const std::string &name) |
void | addBindFragDataLocation (const std::string &name, GLuint index) |
void | removeBindFragDataLocation (const std::string &name) |
const AttribBindingList & | getAttribBindingList () const |
const FragDataBindingList & | getFragDataBindingList () const |
bool | isFixedFunction () const |
bool | getGlProgramInfoLog (unsigned int contextID, std::string &log) const |
const ActiveVarInfoMap & | getActiveUniforms (unsigned int contextID) const |
const ActiveVarInfoMap & | getActiveAttribs (unsigned int contextID) const |
PerContextProgram * | getPCP (unsigned int contextID) const |
Static Public Member Functions | |
static void | deleteGlProgram (unsigned int contextID, GLuint program) |
static void | flushDeletedGlPrograms (unsigned int contextID, double currentTime, double &availableTime) |
static void | discardDeletedGlPrograms (unsigned int 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 |
FragDataBindingList | _fragDataBindingList |
ShaderList | _shaderList |
GLint | _geometryVerticesOut |
GLint | _geometryInputType |
GLint | _geometryOutputType |
Friends | |
class | PerContextProgram |
Classes | |
struct | ActiveVarInfo |
class | PerContextProgram |
typedef std::map<std::string,GLuint> osg::Program::AttribBindingList |
typedef std::map<std::string,GLuint> osg::Program::FragDataBindingList |
typedef std::map< std::string, ActiveVarInfo > osg::Program::ActiveVarInfoMap |
typedef std::vector< ref_ptr<Shader> > osg::Program::ShaderList [protected] |
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] |
osg::Program::META_StateAttribute | ( | osg | , | |
Program | , | |||
PROGRAM | ||||
) |
virtual int osg::Program::compare | ( | const osg::StateAttribute & | sa | ) | const [virtual] |
return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.
Implements osg::StateAttribute.
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.
Reimplemented from osg::StateAttribute.
virtual void osg::Program::setThreadSafeRefUnref | ( | bool | threadSafe | ) | [virtual] |
Set whether to use a mutex to ensure ref() and unref() are thread safe.
Reimplemented from osg::Referenced.
virtual void osg::Program::compileGLObjects | ( | osg::State & | state | ) | const [virtual] |
Compile program and associated shaders.
Reimplemented from osg::StateAttribute.
virtual void osg::Program::resizeGLObjectBuffers | ( | unsigned int | maxSize | ) | [virtual] |
Resize any per context GLObject buffers to specified size.
Reimplemented from osg::StateAttribute.
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::dirtyProgram | ( | ) |
Mark our PCSOs as needing relink
bool osg::Program::addShader | ( | Shader * | shader | ) |
Attach an osg::Shader to this osg::Program. Mark Program as needing relink. Return true for success
unsigned int osg::Program::getNumShaders | ( | ) | const [inline] |
Shader* osg::Program::getShader | ( | unsigned int | i | ) | [inline] |
const Shader* osg::Program::getShader | ( | unsigned int | i | ) | const [inline] |
bool osg::Program::removeShader | ( | Shader * | shader | ) |
Remove osg::Shader from this osg::Program. Mark Program as needing relink. Return true for success
void osg::Program::setParameter | ( | GLenum | pname, | |
GLint | value | |||
) |
Set/get GL program parameters
GLint osg::Program::getParameter | ( | GLenum | pname | ) | const |
void osg::Program::addBindAttribLocation | ( | const std::string & | name, | |
GLuint | index | |||
) |
Add an attribute location binding.
void osg::Program::removeBindAttribLocation | ( | const std::string & | name | ) |
Remove an attribute location binding.
void osg::Program::addBindFragDataLocation | ( | const std::string & | name, | |
GLuint | index | |||
) |
Add an frag data location binding. See EXT_gpu_shader4 for BindFragDataLocationEXT
void osg::Program::removeBindFragDataLocation | ( | const std::string & | name | ) |
Remove an frag data location binding.
const AttribBindingList& osg::Program::getAttribBindingList | ( | ) | const [inline] |
const FragDataBindingList& osg::Program::getFragDataBindingList | ( | ) | const [inline] |
bool osg::Program::isFixedFunction | ( | ) | const |
Return true if this Program represents "fixed-functionality" rendering
bool osg::Program::getGlProgramInfoLog | ( | unsigned int | contextID, | |
std::string & | log | |||
) | const |
Query InfoLog from a glProgram
static 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.
static 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.
static void osg::Program::discardDeletedGlPrograms | ( | unsigned int | contextID | ) | [static] |
discard all the cached glPrograms which need to be deleted in the OpenGL context related to contextID. Note, unlike flush no OpenGL calls are made, instead the handles are all removed. this call is useful for when an OpenGL context has been destroyed.
const ActiveVarInfoMap& osg::Program::getActiveUniforms | ( | unsigned int | contextID | ) | const |
const ActiveVarInfoMap& osg::Program::getActiveAttribs | ( | unsigned int | contextID | ) | const |
PerContextProgram* osg::Program::getPCP | ( | unsigned int | contextID | ) | const |
Get the PCP for a particular GL context
friend class PerContextProgram [friend] |
osg::buffered_value< osg::ref_ptr<PerContextProgram> > osg::Program::_pcpList [mutable, protected] |
AttribBindingList osg::Program::_attribBindingList [protected] |
ShaderList osg::Program::_shaderList [protected] |
GLint osg::Program::_geometryVerticesOut [protected] |
Parameters maintained with glProgramParameteriEXT
GLint osg::Program::_geometryInputType [protected] |
GLint osg::Program::_geometryOutputType [protected] |