Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > aa937981cccb78f06312e3cc380fe202 > files > 1245

OpenSceneGraph-devel-2.8.3-3.fc14.x86_64.rpm

<!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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;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&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;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> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00547.html">PerContextShader</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</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">&nbsp;</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">&nbsp;</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 &amp;source)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a208869fe62f91169f0768ffb15b992c8">Shader</a> (const <a class="el" href="a00703.html">Shader</a> &amp;rhs, const <a class="el" href="a00169.html">osg::CopyOp</a> &amp;copyop=osg::CopyOp::SHALLOW_COPY)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af5fde7614104d8229ddf5319e5329cba">compare</a> (const <a class="el" href="a00703.html">Shader</a> &amp;rhs) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#aa7ba149d93ac2ca79a8a140e4eb60c2c">setShaderSource</a> (const std::string &amp;sourceText)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a8d87c2fbbae3c5675a78a001388790e7">loadShaderSourceFromFile</a> (const std::string &amp;fileName)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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 &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a66b7e8b344a82981f631fd3363e7c26c">getShaderSource</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</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>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af38d5e952c9d5a0163f610f748f47c72">getType</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</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 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a687ba41d9f4f09eeb3b0b6358d9ebb45">getTypename</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a959aed92d8ddd8d389c718356dbb1bb3">setFileName</a> (const std::string &amp;fileName)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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 &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a2a4fb4e20493780e7e78132d8420689b">getFileName</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a6548ef0b542a9dc35044a2cc43879ff7">resizeGLObjectBuffers</a> (unsigned int maxSize)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af13a27e9f5ff4e322a11dc24ba74d12a">dirtyShader</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a3269ef9a1954defdd520bda18b7a48e0">getGlShaderInfoLog</a> (unsigned int contextID, std::string &amp;log) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</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> *&nbsp;</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 &amp;fileName)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a1f6d835785773465faa7754d0fd6a833">flushDeletedGlShaders</a> (unsigned int contextID, double currentTime, double &amp;availableTime)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a895045f8fa156b09c2835dc535f37f62">discardDeletedGlShaders</a> (unsigned int contextID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#af97a9f3fec4666e08b445f53f03ac17c">getTypeId</a> (const std::string &amp;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&lt; <a class="el" href="a00580.html">osg::Program</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00703.html#a82a5b7ae6d8119da0a9d5862dcb2e320">ProgramSet</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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> *&nbsp;</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&nbsp;</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&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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>&nbsp;</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"/>
&lt; <a class="el" href="a00624.html">osg::ref_ptr</a><br class="typebreak"/>
&lt; <a class="el" href="a00547.html">PerContextShader</a> &gt; &gt;&nbsp;</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&nbsp;</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&lt; <a class="el" href="a00580.html">osg::Program</a>* &gt; <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>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2a332cb9c5a38ea45069ddd8e34ca374ca"></a><!-- doxytag: member="FRAGMENT" ref="ac0b0ef461158a8e93ee8c41f51fa49a2a332cb9c5a38ea45069ddd8e34ca374ca" args="" -->FRAGMENT</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2a33d3826c69944c3ba00bf6dd6b14973c"></a><!-- doxytag: member="GEOMETRY" ref="ac0b0ef461158a8e93ee8c41f51fa49a2a33d3826c69944c3ba00bf6dd6b14973c" args="" -->GEOMETRY</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ac0b0ef461158a8e93ee8c41f51fa49a2a3d16bed19b7ec3b6bfd4f7f665a5eee2"></a><!-- doxytag: member="UNDEFINED" ref="ac0b0ef461158a8e93ee8c41f51fa49a2a3d16bed19b7ec3b6bfd4f7f665a5eee2" args="" -->UNDEFINED</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Constructor &amp; 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>&nbsp;</td>
          <td class="paramname"> <em>type</em> = <code>UNDEFINED</code></td>
          <td>&nbsp;)&nbsp;</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 &amp;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>&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>source</em></td><td>&nbsp;</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 &amp;rhs, const osg::CopyOp &amp;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> &amp;&nbsp;</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> &amp;&nbsp;</td>
          <td class="paramname"> <em>copyop</em> = <code>osg::CopyOp::SHALLOW_COPY</code></td><td>&nbsp;</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>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>program</em></td>
          <td>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>contextID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">GLuint&nbsp;</td>
          <td class="paramname"> <em>program</em></td><td>&nbsp;</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 &amp;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> &amp;&nbsp;</td>
          <td class="paramname"> <em>rhs</em></td>
          <td>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>contextID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">GLuint&nbsp;</td>
          <td class="paramname"> <em>shader</em></td><td>&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>contextID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">GLuint&nbsp;</td>
          <td class="paramname"> <em>program</em></td><td>&nbsp;</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>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</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 &amp;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&nbsp;</td>
          <td class="paramname"> <em>contextID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>currentTime</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>availableTime</em></td><td>&nbsp;</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&amp; osg::Shader::getFileName </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</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 &amp;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&nbsp;</td>
          <td class="paramname"> <em>contextID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>log</em></td><td>&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</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&amp; osg::Shader::getShaderSource </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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 &amp;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 &amp;&nbsp;</td>
          <td class="paramname"> <em>tname</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;)&nbsp;</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 &amp;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 &amp;&nbsp;</td>
          <td class="paramname"> <em>fileName</em></td>
          <td>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00703.html">Shader</a>&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</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 &amp;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>&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>fileName</em></td><td>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>state</em> = <code>0</code></td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>program</em></td>
          <td>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>maxSize</em></td>
          <td>&nbsp;)&nbsp;</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 &amp;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 &amp;&nbsp;</td>
          <td class="paramname"> <em>fileName</em></td>
          <td>&nbsp;)&nbsp;</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 &amp;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 &amp;&nbsp;</td>
          <td class="paramname"> <em>sourceText</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>t</em></td>
          <td>&nbsp;)&nbsp;</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>&lt; <a class="el" href="a00624.html">osg::ref_ptr</a>&lt;<a class="el" href="a00547.html">PerContextShader</a>&gt; &gt; <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>