osg::Shader Class Reference
List of all members.
Classes |
class | PerContextShader |
Public Types |
enum | Type { VERTEX = GL_VERTEX_SHADER,
FRAGMENT = GL_FRAGMENT_SHADER,
GEOMETRY = GL_GEOMETRY_SHADER_EXT,
UNDEFINED = -1
} |
Public Member Functions |
| Shader (Type type=UNDEFINED) |
| Shader (Type type, const std::string &source) |
| Shader (const Shader &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY) |
| META_Object (osg, Shader) |
int | compare (const Shader &rhs) const |
bool | setType (Type t) |
void | setShaderSource (const std::string &sourceText) |
bool | loadShaderSourceFromFile (const std::string &fileName) |
const std::string & | getShaderSource () const |
Type | getType () const |
const char * | getTypename () const |
void | setFileName (const std::string &fileName) |
const std::string & | getFileName () const |
virtual void | resizeGLObjectBuffers (unsigned int maxSize) |
void | releaseGLObjects (osg::State *state=0) const |
void | dirtyShader () |
void | compileShader (unsigned int contextID) const |
void | attachShader (unsigned int contextID, GLuint program) const |
void | detachShader (unsigned int contextID, GLuint program) const |
bool | getGlShaderInfoLog (unsigned int contextID, std::string &log) const |
Static Public Member Functions |
static Shader * | readShaderFile (Type type, const std::string &fileName) |
static void | deleteGlShader (unsigned int contextID, GLuint shader) |
static void | flushDeletedGlShaders (unsigned int contextID, double currentTime, double &availableTime) |
static void | discardDeletedGlShaders (unsigned int contextID) |
static Shader::Type | getTypeId (const std::string &tname) |
Protected Types |
typedef std::set< osg::Program * > | ProgramSet |
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 |
std::string | _shaderFileName |
ProgramSet | _programSet |
osg::buffered_value
< osg::ref_ptr
< PerContextShader > > | _pcsList |
Friends |
class | osg::Program |
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
Member Enumeration Documentation
- Enumerator:
VERTEX |
|
FRAGMENT |
|
GEOMETRY |
|
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
static void osg::Shader::deleteGlShader |
( |
unsigned int |
contextID, |
|
|
GLuint |
shader | |
|
) |
| | [static] |
Mark internal glShader for deletion. Deletion requests are queued until they can be executed in the proper GL context.
void osg::Shader::detachShader |
( |
unsigned int |
contextID, |
|
|
GLuint |
program | |
|
) |
| | const |
For a given GL context, detach a glShader to a glProgram
void osg::Shader::dirtyShader |
( |
|
) |
|
Mark our PCSs as needing recompilation. Also mark Programs that depend on us as needing relink
static void osg::Shader::discardDeletedGlShaders |
( |
unsigned int |
contextID |
) |
[static] |
discard all the cached glShaders 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::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.
const std::string& osg::Shader::getFileName |
( |
|
) |
const [inline] |
Get filename to which the shader source code belongs.
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.
static 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 |
| |
|
) |
| | |
static 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.
void osg::Shader::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::Object.
bool osg::Shader::removeProgramRef |
( |
osg::Program * |
program |
) |
[protected] |
virtual void osg::Shader::resizeGLObjectBuffers |
( |
unsigned int |
maxSize |
) |
[virtual] |
Resize any per context GLObject buffers to specified size.
Reimplemented from osg::Object.
void osg::Shader::setFileName |
( |
const std::string & |
fileName |
) |
[inline] |
Set file name for the shader source code.
void osg::Shader::setShaderSource |
( |
const std::string & |
sourceText |
) |
|
Load the Shader's source code text from a string.
bool osg::Shader::setType |
( |
Type |
t |
) |
|
Friends And Related Function Documentation
Member Data Documentation
The documentation for this class was generated from the following file: