<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>OpenSceneGraph: osg::Shader Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"> <ul> <li><a class="el" href="a01628.html">osg</a> </li> <li><a class="el" href="a00703.html">osg::Shader</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="#pro-types">Protected Types</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> | <a href="#friends">Friends</a> </div> <div class="headertitle"> <h1>osg::Shader Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="osg::Shader" --><!-- doxytag: inherits="osg::Object" --> <p><a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">osg::Shader</a> is an application-level abstraction of an OpenGL glShader. <a href="#_details">More...</a></p> <div class="dynheader"> Inheritance diagram for osg::Shader:</div> <div class="dyncontent"> <div class="center"><img src="a02228.png" border="0" usemap="#osg_1_1Shader_inherit__map" alt="Inheritance graph"/></div> <map name="osg_1_1Shader_inherit__map" id="osg_1_1Shader_inherit__map"> <area shape="rect" id="node2" href="a00500.html" title="Base class/standard interface for objects which require IO support, cloning and reference counting..." alt="" coords="20,83,108,112"/><area shape="rect" id="node4" href="a00627.html" title="Base class from providing referencing counted objects." alt="" coords="5,5,123,35"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="a02229.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00547.html">PerContextShader</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="a00547.html" title="PerContextShader (PCS) is an OSG-internal encapsulation of glShader per-GL context.">PerContextShader</a> (PCS) is an OSG-internal encapsulation of glShader per-GL context. <a href="a00547.html#_details">More...</a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> { <a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2ad92476c4711f980628348dd9359560bd">VERTEX</a> = GL_VERTEX_SHADER, <a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2a332cb9c5a38ea45069ddd8e34ca374ca">FRAGMENT</a> = GL_FRAGMENT_SHADER, <a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2a33d3826c69944c3ba00bf6dd6b14973c">GEOMETRY</a> = GL_GEOMETRY_SHADER_EXT, <a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2a3d16bed19b7ec3b6bfd4f7f665a5eee2">UNDEFINED</a> = -1 }</td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#ad12cc7ff2681818b723ab55623f98977">Shader</a> (<a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> type=UNDEFINED)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a39299738ed323e8689162cecbc1811e9">Shader</a> (<a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> type, const std::string &source)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a208869fe62f91169f0768ffb15b992c8">Shader</a> (const <a class="el" href="a00703.html">Shader</a> &rhs, const <a class="el" href="a00169.html">osg::CopyOp</a> &copyop=osg::CopyOp::SHALLOW_COPY)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor using <a class="el" href="a00169.html" title="Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...">CopyOp</a> to manage deep vs shallow copy. <a href="#a208869fe62f91169f0768ffb15b992c8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a4cca33a9e7ed96d817e515b003141df5">META_Object</a> (osg, <a class="el" href="a00703.html">Shader</a>)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af5fde7614104d8229ddf5319e5329cba">compare</a> (const <a class="el" href="a00703.html">Shader</a> &rhs) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a3ebbb81a96d527ef026cd3b78e870600">setType</a> (<a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#aa7ba149d93ac2ca79a8a140e4eb60c2c">setShaderSource</a> (const std::string &sourceText)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Load the Shader's source code text from a string. <a href="#aa7ba149d93ac2ca79a8a140e4eb60c2c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a8d87c2fbbae3c5675a78a001388790e7">loadShaderSourceFromFile</a> (const std::string &fileName)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Load the Shader's source code text from a file. <a href="#a8d87c2fbbae3c5675a78a001388790e7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a66b7e8b344a82981f631fd3363e7c26c">getShaderSource</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Query the shader's source code text. <a href="#a66b7e8b344a82981f631fd3363e7c26c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af38d5e952c9d5a0163f610f748f47c72">getType</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">Shader</a> type as an enum. <a href="#af38d5e952c9d5a0163f610f748f47c72"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a687ba41d9f4f09eeb3b0b6358d9ebb45">getTypename</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">Shader</a> type as a descriptive string. <a href="#a687ba41d9f4f09eeb3b0b6358d9ebb45"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a959aed92d8ddd8d389c718356dbb1bb3">setFileName</a> (const std::string &fileName)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set file name for the shader source code. <a href="#a959aed92d8ddd8d389c718356dbb1bb3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const std::string & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a2a4fb4e20493780e7e78132d8420689b">getFileName</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get filename to which the shader source code belongs. <a href="#a2a4fb4e20493780e7e78132d8420689b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a6548ef0b542a9dc35044a2cc43879ff7">resizeGLObjectBuffers</a> (unsigned int maxSize)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Resize any per context GLObject buffers to specified size. <a href="#a6548ef0b542a9dc35044a2cc43879ff7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#ae0711be6b04642c5eaffd1a63764bb5f">releaseGLObjects</a> (<a class="el" href="a00742.html">osg::State</a> *state=0) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">release OpenGL objects in specified graphics context if <a class="el" href="a00742.html" title="Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings, implements lazy state updating and provides accessors for querying the current state.">State</a> object is passed, otherwise release OpenGL objects for all graphics context if <a class="el" href="a00742.html" title="Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings, implements lazy state updating and provides accessors for querying the current state.">State</a> object pointer NULL. <a href="#ae0711be6b04642c5eaffd1a63764bb5f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af13a27e9f5ff4e322a11dc24ba74d12a">dirtyShader</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Mark our PCSs as needing recompilation. <a href="#af13a27e9f5ff4e322a11dc24ba74d12a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#ab546d25577a06a8951757408205b0960">compileShader</a> (unsigned int contextID) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">If needed, compile the PCS's glShader. <a href="#ab546d25577a06a8951757408205b0960"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a5f14aae1c1f100239744d820cdd1d08c">attachShader</a> (unsigned int contextID, GLuint program) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">For a given GL context, attach a glShader to a glProgram. <a href="#a5f14aae1c1f100239744d820cdd1d08c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#adce3ceeca978c9ee54c9a013b409b475">detachShader</a> (unsigned int contextID, GLuint program) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">For a given GL context, detach a glShader to a glProgram. <a href="#adce3ceeca978c9ee54c9a013b409b475"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a3269ef9a1954defdd520bda18b7a48e0">getGlShaderInfoLog</a> (unsigned int contextID, std::string &log) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Query InfoLog from a glShader. <a href="#a3269ef9a1954defdd520bda18b7a48e0"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a00703.html">Shader</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a16783f3d53fe729061f15c3a1632dd9e">readShaderFile</a> (<a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> type, const std::string &fileName)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Read shader source from file and then constructor shader of specified type. <a href="#a16783f3d53fe729061f15c3a1632dd9e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#ae88149e1dcc590ef4bc256421f19fa19">deleteGlShader</a> (unsigned int contextID, GLuint shader)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Mark internal glShader for deletion. <a href="#ae88149e1dcc590ef4bc256421f19fa19"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a1f6d835785773465faa7754d0fd6a833">flushDeletedGlShaders</a> (unsigned int contextID, double currentTime, double &availableTime)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">flush all the cached glShaders which need to be deleted in the OpenGL context related to contextID. <a href="#a1f6d835785773465faa7754d0fd6a833"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a895045f8fa156b09c2835dc535f37f62">discardDeletedGlShaders</a> (unsigned int contextID)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">discard all the cached glShaders which need to be deleted in the OpenGL context related to contextID. <a href="#a895045f8fa156b09c2835dc535f37f62"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Shader::Type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af97a9f3fec4666e08b445f53f03ac17c">getTypeId</a> (const std::string &tname)</td></tr> <tr><td colspan="2"><h2><a name="pro-types"></a> Protected Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::set< <a class="el" href="a00580.html">osg::Program</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a82a5b7ae6d8119da0a9d5862dcb2e320">ProgramSet</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">osg::Programs that this <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">osg::Shader</a> is attached to <a href="#a82a5b7ae6d8119da0a9d5862dcb2e320"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a7d0e9d8aaedceeae86a3ebb11036a932">~Shader</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00547.html">PerContextShader</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a24df8c0d72023143b8ca1255f37b4473">getPCS</a> (unsigned int contextID) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#aadb54dd3eed93433623daf6ce7b7df30">addProgramRef</a> (<a class="el" href="a00580.html">osg::Program</a> *program)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#acc86eab17b48b3bd0f20242403016c9a">removeProgramRef</a> (<a class="el" href="a00580.html">osg::Program</a> *program)</td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a0ec3d553f190834ab9a69eeca7000b9c">_type</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a6ec7b61be0b93ef156d4591cf4cb0846">_shaderSource</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a273d68c24ee3e4593c021a030033f593">_shaderFileName</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00703.html#a82a5b7ae6d8119da0a9d5862dcb2e320">ProgramSet</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#aa2ad1f7c1884810bd222fe99872342ac">_programSet</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00078.html">osg::buffered_value</a><br class="typebreak"/> < <a class="el" href="a00624.html">osg::ref_ptr</a><br class="typebreak"/> < <a class="el" href="a00547.html">PerContextShader</a> > > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#aa4da05b45bc4a320cd8fcc48b78d32bf">_pcsList</a></td></tr> <tr><td colspan="2"><h2><a name="friends"></a> Friends</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#aa6b5940fb04f08033953372af95f0f7c">osg::Program</a></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p><a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">osg::Shader</a> is an application-level abstraction of an OpenGL glShader. </p> <p>It is a container to load the shader source code text and manage its compilation. An <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">osg::Shader</a> may be attached to more than one <a class="el" href="a00580.html" title="osg::Program is an application-level abstraction of an OpenGL glProgram.">osg::Program</a>. <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">Shader</a> will automatically manage per-context instancing of the internal objects, if that is necessary for a particular display configuration. </p> <hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="a82a5b7ae6d8119da0a9d5862dcb2e320"></a><!-- doxytag: member="osg::Shader::ProgramSet" ref="a82a5b7ae6d8119da0a9d5862dcb2e320" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::set< <a class="el" href="a00580.html">osg::Program</a>* > <a class="el" href="a00703.html#a82a5b7ae6d8119da0a9d5862dcb2e320">osg::Shader::ProgramSet</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>osg::Programs that this <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">osg::Shader</a> is attached to </p> </div> </div> <hr/><h2>Member Enumeration Documentation</h2> <a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2"></a><!-- doxytag: member="osg::Shader::Type" ref="ac0b0ef461158a8e93ee8c41f51fa49a2" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">osg::Shader::Type</a></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2ad92476c4711f980628348dd9359560bd"></a><!-- doxytag: member="VERTEX" ref="ac0b0ef461158a8e93ee8c41f51fa49a2ad92476c4711f980628348dd9359560bd" args="" -->VERTEX</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2a332cb9c5a38ea45069ddd8e34ca374ca"></a><!-- doxytag: member="FRAGMENT" ref="ac0b0ef461158a8e93ee8c41f51fa49a2a332cb9c5a38ea45069ddd8e34ca374ca" args="" -->FRAGMENT</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2a33d3826c69944c3ba00bf6dd6b14973c"></a><!-- doxytag: member="GEOMETRY" ref="ac0b0ef461158a8e93ee8c41f51fa49a2a33d3826c69944c3ba00bf6dd6b14973c" args="" -->GEOMETRY</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2a3d16bed19b7ec3b6bfd4f7f665a5eee2"></a><!-- doxytag: member="UNDEFINED" ref="ac0b0ef461158a8e93ee8c41f51fa49a2a3d16bed19b7ec3b6bfd4f7f665a5eee2" args="" -->UNDEFINED</em> </td><td> </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="ad12cc7ff2681818b723ab55623f98977"></a><!-- doxytag: member="osg::Shader::Shader" ref="ad12cc7ff2681818b723ab55623f98977" args="(Type type=UNDEFINED)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osg::Shader::Shader </td> <td>(</td> <td class="paramtype"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> </td> <td class="paramname"> <em>type</em> = <code>UNDEFINED</code></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a39299738ed323e8689162cecbc1811e9"></a><!-- doxytag: member="osg::Shader::Shader" ref="a39299738ed323e8689162cecbc1811e9" args="(Type type, const std::string &source)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osg::Shader::Shader </td> <td>(</td> <td class="paramtype"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>source</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a208869fe62f91169f0768ffb15b992c8"></a><!-- doxytag: member="osg::Shader::Shader" ref="a208869fe62f91169f0768ffb15b992c8" args="(const Shader &rhs, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osg::Shader::Shader </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00703.html">Shader</a> & </td> <td class="paramname"> <em>rhs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00169.html">osg::CopyOp</a> & </td> <td class="paramname"> <em>copyop</em> = <code>osg::CopyOp::SHALLOW_COPY</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Copy constructor using <a class="el" href="a00169.html" title="Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...">CopyOp</a> to manage deep vs shallow copy. </p> </div> </div> <a class="anchor" id="a7d0e9d8aaedceeae86a3ebb11036a932"></a><!-- doxytag: member="osg::Shader::~Shader" ref="a7d0e9d8aaedceeae86a3ebb11036a932" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual osg::Shader::~Shader </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="aadb54dd3eed93433623daf6ce7b7df30"></a><!-- doxytag: member="osg::Shader::addProgramRef" ref="aadb54dd3eed93433623daf6ce7b7df30" args="(osg::Program *program)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osg::Shader::addProgramRef </td> <td>(</td> <td class="paramtype"><a class="el" href="a00580.html">osg::Program</a> * </td> <td class="paramname"> <em>program</em></td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a5f14aae1c1f100239744d820cdd1d08c"></a><!-- doxytag: member="osg::Shader::attachShader" ref="a5f14aae1c1f100239744d820cdd1d08c" args="(unsigned int contextID, GLuint program) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osg::Shader::attachShader </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GLuint </td> <td class="paramname"> <em>program</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>For a given GL context, attach a glShader to a glProgram. </p> </div> </div> <a class="anchor" id="af5fde7614104d8229ddf5319e5329cba"></a><!-- doxytag: member="osg::Shader::compare" ref="af5fde7614104d8229ddf5319e5329cba" args="(const Shader &rhs) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int osg::Shader::compare </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00703.html">Shader</a> & </td> <td class="paramname"> <em>rhs</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab546d25577a06a8951757408205b0960"></a><!-- doxytag: member="osg::Shader::compileShader" ref="ab546d25577a06a8951757408205b0960" args="(unsigned int contextID) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osg::Shader::compileShader </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>If needed, compile the PCS's glShader. </p> </div> </div> <a class="anchor" id="ae88149e1dcc590ef4bc256421f19fa19"></a><!-- doxytag: member="osg::Shader::deleteGlShader" ref="ae88149e1dcc590ef4bc256421f19fa19" args="(unsigned int contextID, GLuint shader)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void osg::Shader::deleteGlShader </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GLuint </td> <td class="paramname"> <em>shader</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Mark internal glShader for deletion. </p> <p>Deletion requests are queued until they can be executed in the proper GL context. </p> </div> </div> <a class="anchor" id="adce3ceeca978c9ee54c9a013b409b475"></a><!-- doxytag: member="osg::Shader::detachShader" ref="adce3ceeca978c9ee54c9a013b409b475" args="(unsigned int contextID, GLuint program) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osg::Shader::detachShader </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GLuint </td> <td class="paramname"> <em>program</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>For a given GL context, detach a glShader to a glProgram. </p> </div> </div> <a class="anchor" id="af13a27e9f5ff4e322a11dc24ba74d12a"></a><!-- doxytag: member="osg::Shader::dirtyShader" ref="af13a27e9f5ff4e322a11dc24ba74d12a" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osg::Shader::dirtyShader </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Mark our PCSs as needing recompilation. </p> <p>Also mark Programs that depend on us as needing relink </p> </div> </div> <a class="anchor" id="a895045f8fa156b09c2835dc535f37f62"></a><!-- doxytag: member="osg::Shader::discardDeletedGlShaders" ref="a895045f8fa156b09c2835dc535f37f62" args="(unsigned int contextID)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void osg::Shader::discardDeletedGlShaders </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>discard all the cached glShaders which need to be deleted in the OpenGL context related to contextID. </p> <p>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. </p> </div> </div> <a class="anchor" id="a1f6d835785773465faa7754d0fd6a833"></a><!-- doxytag: member="osg::Shader::flushDeletedGlShaders" ref="a1f6d835785773465faa7754d0fd6a833" args="(unsigned int contextID, double currentTime, double &availableTime)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void osg::Shader::flushDeletedGlShaders </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double </td> <td class="paramname"> <em>currentTime</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double & </td> <td class="paramname"> <em>availableTime</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>flush all the cached glShaders which need to be deleted in the OpenGL context related to contextID. </p> </div> </div> <a class="anchor" id="a2a4fb4e20493780e7e78132d8420689b"></a><!-- doxytag: member="osg::Shader::getFileName" ref="a2a4fb4e20493780e7e78132d8420689b" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const std::string& osg::Shader::getFileName </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get filename to which the shader source code belongs. </p> </div> </div> <a class="anchor" id="a3269ef9a1954defdd520bda18b7a48e0"></a><!-- doxytag: member="osg::Shader::getGlShaderInfoLog" ref="a3269ef9a1954defdd520bda18b7a48e0" args="(unsigned int contextID, std::string &log) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osg::Shader::getGlShaderInfoLog </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">std::string & </td> <td class="paramname"> <em>log</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Query InfoLog from a glShader. </p> </div> </div> <a class="anchor" id="a24df8c0d72023143b8ca1255f37b4473"></a><!-- doxytag: member="osg::Shader::getPCS" ref="a24df8c0d72023143b8ca1255f37b4473" args="(unsigned int contextID) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00547.html">PerContextShader</a>* osg::Shader::getPCS </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>contextID</em></td> <td> ) </td> <td> const<code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a66b7e8b344a82981f631fd3363e7c26c"></a><!-- doxytag: member="osg::Shader::getShaderSource" ref="a66b7e8b344a82981f631fd3363e7c26c" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const std::string& osg::Shader::getShaderSource </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Query the shader's source code text. </p> </div> </div> <a class="anchor" id="af38d5e952c9d5a0163f610f748f47c72"></a><!-- doxytag: member="osg::Shader::getType" ref="af38d5e952c9d5a0163f610f748f47c72" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> osg::Shader::getType </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">Shader</a> type as an enum. </p> </div> </div> <a class="anchor" id="af97a9f3fec4666e08b445f53f03ac17c"></a><!-- doxytag: member="osg::Shader::getTypeId" ref="af97a9f3fec4666e08b445f53f03ac17c" args="(const std::string &tname)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Shader::Type</a> osg::Shader::getTypeId </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>tname</em></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a687ba41d9f4f09eeb3b0b6358d9ebb45"></a><!-- doxytag: member="osg::Shader::getTypename" ref="a687ba41d9f4f09eeb3b0b6358d9ebb45" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* osg::Shader::getTypename </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Get the <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">Shader</a> type as a descriptive string. </p> </div> </div> <a class="anchor" id="a8d87c2fbbae3c5675a78a001388790e7"></a><!-- doxytag: member="osg::Shader::loadShaderSourceFromFile" ref="a8d87c2fbbae3c5675a78a001388790e7" args="(const std::string &fileName)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osg::Shader::loadShaderSourceFromFile </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>fileName</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Load the Shader's source code text from a file. </p> </div> </div> <a class="anchor" id="a4cca33a9e7ed96d817e515b003141df5"></a><!-- doxytag: member="osg::Shader::META_Object" ref="a4cca33a9e7ed96d817e515b003141df5" args="(osg, Shader)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osg::Shader::META_Object </td> <td>(</td> <td class="paramtype">osg </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00703.html">Shader</a> </td> <td class="paramname"></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a16783f3d53fe729061f15c3a1632dd9e"></a><!-- doxytag: member="osg::Shader::readShaderFile" ref="a16783f3d53fe729061f15c3a1632dd9e" args="(Type type, const std::string &fileName)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="a00703.html">Shader</a>* osg::Shader::readShaderFile </td> <td>(</td> <td class="paramtype"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>fileName</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Read shader source from file and then constructor shader of specified type. </p> <p>Return the resulting <a class="el" href="a00703.html" title="osg::Shader is an application-level abstraction of an OpenGL glShader.">Shader</a> or 0 if no valid shader source code be read. </p> </div> </div> <a class="anchor" id="ae0711be6b04642c5eaffd1a63764bb5f"></a><!-- doxytag: member="osg::Shader::releaseGLObjects" ref="ae0711be6b04642c5eaffd1a63764bb5f" args="(osg::State *state=0) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osg::Shader::releaseGLObjects </td> <td>(</td> <td class="paramtype"><a class="el" href="a00742.html">osg::State</a> * </td> <td class="paramname"> <em>state</em> = <code>0</code></td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>release OpenGL objects in specified graphics context if <a class="el" href="a00742.html" title="Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings, implements lazy state updating and provides accessors for querying the current state.">State</a> object is passed, otherwise release OpenGL objects for all graphics context if <a class="el" href="a00742.html" title="Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings, implements lazy state updating and provides accessors for querying the current state.">State</a> object pointer NULL. </p> <p>Reimplemented from <a class="el" href="a00500.html#a9a372b2d2ccedae228f526d8409cda66">osg::Object</a>.</p> </div> </div> <a class="anchor" id="acc86eab17b48b3bd0f20242403016c9a"></a><!-- doxytag: member="osg::Shader::removeProgramRef" ref="acc86eab17b48b3bd0f20242403016c9a" args="(osg::Program *program)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osg::Shader::removeProgramRef </td> <td>(</td> <td class="paramtype"><a class="el" href="a00580.html">osg::Program</a> * </td> <td class="paramname"> <em>program</em></td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a6548ef0b542a9dc35044a2cc43879ff7"></a><!-- doxytag: member="osg::Shader::resizeGLObjectBuffers" ref="a6548ef0b542a9dc35044a2cc43879ff7" args="(unsigned int maxSize)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void osg::Shader::resizeGLObjectBuffers </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>maxSize</em></td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Resize any per context GLObject buffers to specified size. </p> <p>Reimplemented from <a class="el" href="a00500.html#aad5292689187427551b90ae7ef40b9a8">osg::Object</a>.</p> </div> </div> <a class="anchor" id="a959aed92d8ddd8d389c718356dbb1bb3"></a><!-- doxytag: member="osg::Shader::setFileName" ref="a959aed92d8ddd8d389c718356dbb1bb3" args="(const std::string &fileName)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osg::Shader::setFileName </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>fileName</em></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Set file name for the shader source code. </p> </div> </div> <a class="anchor" id="aa7ba149d93ac2ca79a8a140e4eb60c2c"></a><!-- doxytag: member="osg::Shader::setShaderSource" ref="aa7ba149d93ac2ca79a8a140e4eb60c2c" args="(const std::string &sourceText)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osg::Shader::setShaderSource </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>sourceText</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Load the Shader's source code text from a string. </p> </div> </div> <a class="anchor" id="a3ebbb81a96d527ef026cd3b78e870600"></a><!-- doxytag: member="osg::Shader::setType" ref="a3ebbb81a96d527ef026cd3b78e870600" args="(Type t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osg::Shader::setType </td> <td>(</td> <td class="paramtype"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> </td> <td class="paramname"> <em>t</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Referenced by <a class="el" href="a01630.html#a5bb02ea25df79af292a4510ae4b615c9">osgDB::readShaderFile()</a>.</p> </div> </div> <hr/><h2>Friends And Related Function Documentation</h2> <a class="anchor" id="aa6b5940fb04f08033953372af95f0f7c"></a><!-- doxytag: member="osg::Shader::osg::Program" ref="aa6b5940fb04f08033953372af95f0f7c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">friend class <a class="el" href="a00580.html">osg::Program</a><code> [friend]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="aa4da05b45bc4a320cd8fcc48b78d32bf"></a><!-- doxytag: member="osg::Shader::_pcsList" ref="aa4da05b45bc4a320cd8fcc48b78d32bf" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00078.html">osg::buffered_value</a>< <a class="el" href="a00624.html">osg::ref_ptr</a><<a class="el" href="a00547.html">PerContextShader</a>> > <a class="el" href="a00703.html#aa4da05b45bc4a320cd8fcc48b78d32bf">osg::Shader::_pcsList</a><code> [mutable, protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="aa2ad1f7c1884810bd222fe99872342ac"></a><!-- doxytag: member="osg::Shader::_programSet" ref="aa2ad1f7c1884810bd222fe99872342ac" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00703.html#a82a5b7ae6d8119da0a9d5862dcb2e320">ProgramSet</a> <a class="el" href="a00703.html#aa2ad1f7c1884810bd222fe99872342ac">osg::Shader::_programSet</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a273d68c24ee3e4593c021a030033f593"></a><!-- doxytag: member="osg::Shader::_shaderFileName" ref="a273d68c24ee3e4593c021a030033f593" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::string <a class="el" href="a00703.html#a273d68c24ee3e4593c021a030033f593">osg::Shader::_shaderFileName</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a6ec7b61be0b93ef156d4591cf4cb0846"></a><!-- doxytag: member="osg::Shader::_shaderSource" ref="a6ec7b61be0b93ef156d4591cf4cb0846" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">std::string <a class="el" href="a00703.html#a6ec7b61be0b93ef156d4591cf4cb0846">osg::Shader::_shaderSource</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a0ec3d553f190834ab9a69eeca7000b9c"></a><!-- doxytag: member="osg::Shader::_type" ref="a0ec3d553f190834ab9a69eeca7000b9c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00703.html#ac0b0ef461158a8e93ee8c41f51fa49a2">Type</a> <a class="el" href="a00703.html#a0ec3d553f190834ab9a69eeca7000b9c">osg::Shader::_type</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>osg/<a class="el" href="a01243.html">Shader</a></li> </ul> </div> <hr> <table border="0"><tr><td> <img src="osg32-32.png" alt="osg logo" /> </td><td> <address><small>Generated at Thu Aug 19 2010 16:22:43 for the <a href="http://www.openscenegraph.org/">OpenSceneGraph</a> by <a href="http://www.doxygen.org">doxygen</a> 1.7.1.</small></address> <!-- Dimitri van Heesch's e-mail address removed, lest he get messages on the OpenSceneGraph --> </td></tr></table> </body> </html>