OpenSceneGraph
3.4.0
|
osg::Program is an application-level abstraction of an OpenGL glProgram. More...
Classes | |
struct | ActiveVarInfo |
class | PerContextProgram |
PerContextProgram (PCP) is an OSG-internal encapsulation of glPrograms per-GL context. More... | |
class | ProgramBinary |
Simple class for wrapping up the data used in glProgramBinary and glGetProgramBinary. More... | |
struct | ProgramObjects |
struct | UniformBlockInfo |
Public Types | |
typedef std::map< std::string, GLuint > | AttribBindingList |
typedef std::map< std::string, GLuint > | FragDataBindingList |
typedef std::map< std::string, GLuint > | UniformBlockBindingList |
typedef std::map< unsigned int, ActiveVarInfo > | ActiveUniformMap |
typedef std::map< std::string, ActiveVarInfo > | ActiveVarInfoMap |
typedef std::map< std::string, UniformBlockInfo > | UniformBlockMap |
Public Member Functions | |
Program () | |
Program (const Program &rhs, const osg::CopyOp ©op=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 | setThreadSafeRefUnref (bool threadSafe) |
Set whether to use a mutex to ensure ref() and unref() are thread safe. | |
virtual void | compileGLObjects (osg::State &state) const |
Compile program and associated shaders. | |
virtual void | resizeGLObjectBuffers (unsigned int maxSize) |
Resize any per context GLObject buffers to specified size. | |
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 | setParameter (GLenum pname, GLint value) |
Set/get GL program parameters. | |
GLint | getParameter (GLenum pname) const |
void | setComputeGroups (GLint numGroupsX, GLint numGroupsY, GLint numGroupsZ) |
Set/get compute shader work groups. | |
void | getComputeGroups (GLint &numGroupsX, GLint &numGroupsY, GLint &numGroupsZ) const |
void | addBindAttribLocation (const std::string &name, GLuint index) |
Add an attribute location binding. | |
void | removeBindAttribLocation (const std::string &name) |
Remove an attribute location binding. | |
void | addBindFragDataLocation (const std::string &name, GLuint index) |
Add an frag data location binding. | |
void | removeBindFragDataLocation (const std::string &name) |
Remove an frag data location binding. | |
void | addBindUniformBlock (const std::string &name, GLuint index) |
Add a uniform block binding to an index target. | |
void | removeBindUniformBlock (const std::string &name) |
Remove a uniform block binding. | |
void | removeTransformFeedBackVarying (const std::string &name) |
Remove a TransformFeedBackVarying. | |
void | addTransformFeedBackVarying (const std::string &outname) |
Add a TransformFeedBack Varying Name. | |
unsigned int | getNumTransformFeedBackVaryings () const |
Get number of TransformFeedBack Varyings. | |
const std::string & | getTransformFeedBackVarying (unsigned int i) const |
Get const TransformFeedBack Varying at index i. | |
void | setTransformFeedBackMode (GLenum e) |
Set TransformFeedBack Mode. | |
GLenum | getTransformFeedBackMode () const |
Get TransformFeedBack Mode. | |
void | setShaderDefines (const ShaderDefines &shaderDefs) |
Experimental. | |
ShaderDefines & | getShaderDefines () |
const ShaderDefines & | getShaderDefines () const |
void | setProgramBinary (ProgramBinary *programBinary) |
Set the Program using a ProgramBinary. | |
ProgramBinary * | getProgramBinary () |
Get the Program's ProgramBinary, return NULL if none is assigned. | |
const ProgramBinary * | getProgramBinary () const |
Get the const Program's ProgramBinary, return NULL if none is assigned. | |
const AttribBindingList & | getAttribBindingList () const |
const FragDataBindingList & | getFragDataBindingList () const |
const UniformBlockBindingList & | getUniformBlockBindingList () 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. | |
PerContextProgram * | getPCP (State &state) const |
Get the PCP for a particular GL context. | |
Static Public Member Functions | |
static void | deleteGlProgram (unsigned int contextID, GLuint program) |
Mark internal glProgram for deletion. | |
static 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. | |
static void | discardDeletedGlPrograms (unsigned int contextID) |
discard 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< ProgramObjects > > | _pcpList |
AttribBindingList | _attribBindingList |
FragDataBindingList | _fragDataBindingList |
UniformBlockBindingList | _uniformBlockBindingList |
ShaderList | _shaderList |
osg::ref_ptr< ProgramBinary > | _programBinary |
GLint | _geometryVerticesOut |
Parameters maintained with glProgramParameteriEXT. | |
GLint | _geometryInputType |
GLint | _geometryOutputType |
GLint | _numGroupsX |
Parameter maintained with glDispatchCompute. | |
GLint | _numGroupsY |
GLint | _numGroupsZ |
GLenum | _feedbackmode |
TransformFeedBack. | |
std::vector< std::string > | _feedbackout |
ShaderDefines | _shaderDefines |
Friends | |
class | PerContextProgram |
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.
typedef std::map< unsigned int, ActiveVarInfo > osg::Program::ActiveUniformMap |
typedef std::map< std::string, ActiveVarInfo > osg::Program::ActiveVarInfoMap |
typedef std::map<std::string,GLuint> osg::Program::AttribBindingList |
typedef std::map<std::string,GLuint> osg::Program::FragDataBindingList |
typedef std::vector< ref_ptr<Shader> > osg::Program::ShaderList [protected] |
typedef std::map<std::string,GLuint> osg::Program::UniformBlockBindingList |
typedef std::map<std::string, UniformBlockInfo> osg::Program::UniformBlockMap |
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] |
void osg::Program::addBindAttribLocation | ( | const std::string & | name, |
GLuint | index | ||
) |
Add 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::addBindUniformBlock | ( | const std::string & | name, |
GLuint | index | ||
) |
Add a uniform block binding to an index target.
XXX This should not be an attribute of the program. It should be a pseudo-uniform that can live in StateSet objects because it is cheap to set.
bool osg::Program::addShader | ( | Shader * | shader | ) |
Attach an osg::Shader to this osg::Program.
Mark Program as needing relink. Return true for success
void osg::Program::addTransformFeedBackVarying | ( | const std::string & | outname | ) | [inline] |
Add a TransformFeedBack Varying Name.
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 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::compileGLObjects | ( | osg::State & | state | ) | const [virtual] |
Compile program and associated shaders.
Reimplemented from osg::StateAttribute.
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.
Mark our PCSOs as needing relink.
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.
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.
const AttribBindingList& osg::Program::getAttribBindingList | ( | ) | const [inline] |
void osg::Program::getComputeGroups | ( | GLint & | numGroupsX, |
GLint & | numGroupsY, | ||
GLint & | numGroupsZ | ||
) | const |
const FragDataBindingList& osg::Program::getFragDataBindingList | ( | ) | 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] |
unsigned int osg::Program::getNumTransformFeedBackVaryings | ( | ) | const [inline] |
Get number of TransformFeedBack Varyings.
GLint osg::Program::getParameter | ( | GLenum | pname | ) | const |
PerContextProgram* osg::Program::getPCP | ( | State & | state | ) | const |
Get the PCP for a particular GL context.
ProgramBinary* osg::Program::getProgramBinary | ( | ) | [inline] |
Get the Program's ProgramBinary, return NULL if none is assigned.
const ProgramBinary* osg::Program::getProgramBinary | ( | ) | const [inline] |
Get the const Program's ProgramBinary, return NULL if none is assigned.
Shader* osg::Program::getShader | ( | unsigned int | i | ) | [inline] |
const Shader* osg::Program::getShader | ( | unsigned int | i | ) | const [inline] |
ShaderDefines& osg::Program::getShaderDefines | ( | ) | [inline] |
const ShaderDefines& osg::Program::getShaderDefines | ( | ) | const [inline] |
GLenum osg::Program::getTransformFeedBackMode | ( | ) | const [inline] |
Get TransformFeedBack Mode.
const std::string& osg::Program::getTransformFeedBackVarying | ( | unsigned int | i | ) | const [inline] |
Get const TransformFeedBack Varying at index i.
const UniformBlockBindingList& osg::Program::getUniformBlockBindingList | ( | ) | const [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 | ) |
Remove an attribute location binding.
void osg::Program::removeBindFragDataLocation | ( | const std::string & | name | ) |
Remove an frag data location binding.
void osg::Program::removeBindUniformBlock | ( | const std::string & | name | ) |
Remove a uniform block binding.
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::removeTransformFeedBackVarying | ( | const std::string & | name | ) | [inline] |
Remove a TransformFeedBackVarying.
virtual void osg::Program::resizeGLObjectBuffers | ( | unsigned int | maxSize | ) | [virtual] |
Resize any per context GLObject buffers to specified size.
Reimplemented from osg::StateAttribute.
void osg::Program::setComputeGroups | ( | GLint | numGroupsX, |
GLint | numGroupsY, | ||
GLint | numGroupsZ | ||
) |
Set/get compute shader work groups.
void osg::Program::setParameter | ( | GLenum | pname, |
GLint | value | ||
) |
Set/get GL program parameters.
void osg::Program::setProgramBinary | ( | ProgramBinary * | programBinary | ) | [inline] |
Set the Program using a ProgramBinary.
If a ProgramBinary is not yet available then setting an empty one signals that compileProgramBinary will be called later.
void osg::Program::setShaderDefines | ( | const ShaderDefines & | shaderDefs | ) | [inline] |
Experimental.
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::Object.
void osg::Program::setTransformFeedBackMode | ( | GLenum | e | ) | [inline] |
Set TransformFeedBack Mode.
friend class PerContextProgram [friend] |
AttribBindingList osg::Program::_attribBindingList [protected] |
GLenum osg::Program::_feedbackmode [protected] |
TransformFeedBack.
std::vector<std::string> osg::Program::_feedbackout [protected] |
GLint osg::Program::_geometryInputType [protected] |
GLint osg::Program::_geometryOutputType [protected] |
GLint osg::Program::_geometryVerticesOut [protected] |
Parameters maintained with glProgramParameteriEXT.
GLint osg::Program::_numGroupsX [protected] |
Parameter maintained with glDispatchCompute.
GLint osg::Program::_numGroupsY [protected] |
GLint osg::Program::_numGroupsZ [protected] |
osg::buffered_value< osg::ref_ptr<ProgramObjects> > osg::Program::_pcpList [mutable, protected] |
osg::ref_ptr<ProgramBinary> osg::Program::_programBinary [protected] |
ShaderDefines osg::Program::_shaderDefines [protected] |
ShaderList osg::Program::_shaderList [protected] |
![]() | Generated at Tue Dec 8 2015 00:14:25 for the OpenSceneGraph by doxygen 1.7.6.1. |