Sophie

Sophie

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

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::BufferObject 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="a00080.html">osg::BufferObject</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</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>  </div>
  <div class="headertitle">
<h1>osg::BufferObject Class Reference</h1>  </div>
</div>
<div class="contents">
<!-- doxytag: class="osg::BufferObject" --><!-- doxytag: inherits="osg::Object" --><div class="dynheader">
Inheritance diagram for osg::BufferObject:</div>
<div class="dyncontent">
<div class="center"><img src="a01944.png" border="0" usemap="#osg_1_1BufferObject_inherit__map" alt="Inheritance graph"/></div>
<map name="osg_1_1BufferObject_inherit__map" id="osg_1_1BufferObject_inherit__map">
<area shape="rect" id="node7" href="a00241.html" title="osg::ElementBufferObject" alt="" coords="491,5,661,35"/><area shape="rect" id="node9" href="a00550.html" title="osg::PixelBufferObject" alt="" coords="500,59,652,88"/><area shape="rect" id="node11" href="a00553.html" title="This object represent a general class of pixel buffer objects, which are capable of allocating buffer..." alt="" coords="485,112,667,141"/><area shape="rect" id="node13" href="a01079.html" title="osg::VertexBufferObject" alt="" coords="495,165,657,195"/><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="175,85,263,115"/><area shape="rect" id="node4" href="a00627.html" title="Base class from providing referencing counted objects." alt="" coords="7,85,124,115"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="a01945.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">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html">BufferEntry</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00265.html">Extensions</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a00265.html" title="Extensions class which encapsulates the querying of extensions and associated function pointers...">Extensions</a> class which encapsulates the querying of extensions and associated function pointers, and provide convenience wrappers to check for the extensions or use the associated functions.  <a href="a00265.html#_details">More...</a><br/></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="a00080.html#afb073fa642f07b9efa264789a6dbe6b5">BufferObject</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a324eadd2bcf51e45a8431e04befc9d98">BufferObject</a> (const <a class="el" href="a00080.html">BufferObject</a> &amp;bo, const <a class="el" href="a00169.html">CopyOp</a> &amp;copyop=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="#a324eadd2bcf51e45a8431e04befc9d98"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a165450c3e12db8f133b1d702ce154a26">isSameKindAs</a> (const <a class="el" href="a00500.html">Object</a> *obj) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ab81b6b3f63e6a0954f8055cf2bf5ac82">libraryName</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the name of the object's library.  <a href="#ab81b6b3f63e6a0954f8055cf2bf5ac82"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a92e5ba322a9022a57c23ed3ff38af015">className</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the name of the object's class type.  <a href="#a92e5ba322a9022a57c23ed3ff38af015"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a17ece486a56a0486d1a8a1937d91481e">setUsage</a> (GLenum usage)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set what type of usage the buffer object will have.  <a href="#a17ece486a56a0486d1a8a1937d91481e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLenum&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a7e712a60a6fdc02cd22b8f573ee6af51">getUsage</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the type of usage the buffer object has been set up for.  <a href="#a7e712a60a6fdc02cd22b8f573ee6af51"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ad21644f3b739513273faa547d012936e">isBufferObjectSupported</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="a00080.html#a1b7790ec9f40268b7e4c51d7577f14f3">isPBOSupported</a> (unsigned int contextID) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLuint &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a177125d7a157c2c42ed07d9340935399">buffer</a> (unsigned int contextID) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a65d461f1b706cf86be79076e69e269ee">bindBuffer</a> (unsigned int contextID) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a9dd2a7849ba0f1311b076cdf384f805c">unbindBuffer</a> (unsigned int contextID) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a7380ca8006f4f946e263d4656a0581d4">dirty</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a59a8d9847302bc775a5a75f2ea67ac29">isDirty</a> (unsigned int contextID) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a55e0579b09e724b219bb4492ebaa3583">compileBuffer</a> (<a class="el" href="a00742.html">State</a> &amp;state) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ae1619e0f33db7ddc3d1c1474282b8f5c">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="#ae1619e0f33db7ddc3d1c1474282b8f5c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a2b97b33e0d46e9662125723e7c88566b">releaseGLObjects</a> (<a class="el" href="a00742.html">State</a> *state=0) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">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> is non-zero, this function releases OpenGL objects for the specified graphics context.  <a href="#a2b97b33e0d46e9662125723e7c88566b"></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 void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a6b20f991fd9fa60613fcbd48a022c6d4">deleteBufferObject</a> (unsigned int contextID, GLuint globj)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use deleteVertexBufferObject instead of glDeleteBuffers to allow OpenGL buffer objects to be cached until they can be deleted by the OpenGL context in which they were created, specified by contextID.  <a href="#a6b20f991fd9fa60613fcbd48a022c6d4"></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="a00080.html#a381e790cdd23b1b13cce575f73ec8a59">flushDeletedBufferObjects</a> (unsigned int contextID, double, double &amp;availableTime)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">flush all the cached display list which need to be deleted in the OpenGL context related to contextID.  <a href="#a381e790cdd23b1b13cce575f73ec8a59"></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="a00080.html#a26fd66d922243012bfced4d78b34e38b">discardDeletedBufferObjects</a> (unsigned int contextID)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">dicard all the cached display list which need to be deleted in the OpenGL context related to contextID.  <a href="#a26fd66d922243012bfced4d78b34e38b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a00265.html">Extensions</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a9f1cf0f16db34ca2b086c7ed55d7f9c7">getExtensions</a> (unsigned int contextID, bool createIfNotInitalized)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function to call to get the extension of a specified context.  <a href="#a9f1cf0f16db34ca2b086c7ed55d7f9c7"></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="a00080.html#a72095cac47b91852d14715c6176a9411">setExtensions</a> (unsigned int contextID, <a class="el" href="a00265.html">Extensions</a> *extensions)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">setExtensions allows users to override the extensions across graphics contexts.  <a href="#a72095cac47b91852d14715c6176a9411"></a><br/></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 <a class="el" href="a00078.html">osg::buffered_value</a><br class="typebreak"/>
&lt; GLuint &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#ab010bea2a24207680178a401a119c6cd">GLObjectList</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="a00078.html">osg::buffered_value</a><br class="typebreak"/>
&lt; unsigned int &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a28ec5aa7b81a1e9160ecb0e4cef5ecbb">CompiledList</a></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="a00080.html#a52f9c394771342cec51bdd4055874921">~BufferObject</a> ()</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="a00078.html">GLObjectList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a0b3d4d0458e6c0f3655f61d59cd7f3fd">_bufferObjectList</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00078.html">CompiledList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#aa0cb6e36e88b2ff75b235cf010371c1a">_compiledList</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLenum&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a68d29919aa9590f88b520ef03a41c9fe">_target</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLenum&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a2a4be1db929837a674f9f54e22dd98bc">_usage</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html#a99a423f02b76250742c3e721ed1f173c">_totalSize</a></td></tr>
</table>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a28ec5aa7b81a1e9160ecb0e4cef5ecbb"></a><!-- doxytag: member="osg::BufferObject::CompiledList" ref="a28ec5aa7b81a1e9160ecb0e4cef5ecbb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="a00078.html">osg::buffered_value</a>&lt;unsigned int&gt; <a class="el" href="a00078.html">osg::BufferObject::CompiledList</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ab010bea2a24207680178a401a119c6cd"></a><!-- doxytag: member="osg::BufferObject::GLObjectList" ref="ab010bea2a24207680178a401a119c6cd" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="a00078.html">osg::buffered_value</a>&lt;GLuint&gt; <a class="el" href="a00078.html">osg::BufferObject::GLObjectList</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="afb073fa642f07b9efa264789a6dbe6b5"></a><!-- doxytag: member="osg::BufferObject::BufferObject" ref="afb073fa642f07b9efa264789a6dbe6b5" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">osg::BufferObject::BufferObject </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a324eadd2bcf51e45a8431e04befc9d98"></a><!-- doxytag: member="osg::BufferObject::BufferObject" ref="a324eadd2bcf51e45a8431e04befc9d98" args="(const BufferObject &amp;bo, const CopyOp &amp;copyop=CopyOp::SHALLOW_COPY)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">osg::BufferObject::BufferObject </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00080.html">BufferObject</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00169.html">CopyOp</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>copyop</em> = <code>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="a52f9c394771342cec51bdd4055874921"></a><!-- doxytag: member="osg::BufferObject::~BufferObject" ref="a52f9c394771342cec51bdd4055874921" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual osg::BufferObject::~BufferObject </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="a65d461f1b706cf86be79076e69e269ee"></a><!-- doxytag: member="osg::BufferObject::bindBuffer" ref="a65d461f1b706cf86be79076e69e269ee" args="(unsigned int contextID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void osg::BufferObject::bindBuffer </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>References <a class="el" href="a00265.html#a6a97bbc254d02fa72896c0afb02ae6c6">osg::BufferObject::Extensions::glBindBuffer()</a>.</p>

</div>
</div>
<a class="anchor" id="a177125d7a157c2c42ed07d9340935399"></a><!-- doxytag: member="osg::BufferObject::buffer" ref="a177125d7a157c2c42ed07d9340935399" args="(unsigned int contextID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLuint&amp; osg::BufferObject::buffer </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Referenced by <a class="el" href="a00742.html#a7d99a527594cb8e004fa7e7ea81dda88">osg::State::bindElementBufferObject()</a>, <a class="el" href="a00742.html#a631d844358678b43a0a9279bcbaf0aa0">osg::State::bindPixelBufferObject()</a>, and <a class="el" href="a00742.html#a6d1e9af67eea4f252e78e7e1e3a40b68">osg::State::bindVertexBufferObject()</a>.</p>

</div>
</div>
<a class="anchor" id="a92e5ba322a9022a57c23ed3ff38af015"></a><!-- doxytag: member="osg::BufferObject::className" ref="a92e5ba322a9022a57c23ed3ff38af015" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* osg::BufferObject::className </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>return the name of the object's class type. </p>
<p>Must be defined by derived classes. </p>

<p>Implements <a class="el" href="a00500.html#a0a2c199f26fdd9ca9fc60d6c79827187">osg::Object</a>.</p>

</div>
</div>
<a class="anchor" id="a55e0579b09e724b219bb4492ebaa3583"></a><!-- doxytag: member="osg::BufferObject::compileBuffer" ref="a55e0579b09e724b219bb4492ebaa3583" args="(State &amp;state) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void osg::BufferObject::compileBuffer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00742.html">State</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>state</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="a01079.html#a3f97c968a209e96cc0eedd687bc2ad8e">osg::VertexBufferObject</a>, <a class="el" href="a00241.html#a0ba244bd18790cf7838afb07eb8e1055">osg::ElementBufferObject</a>, <a class="el" href="a00550.html#a15f54260bd1d56b4beb34f71bef97b6e">osg::PixelBufferObject</a>, and <a class="el" href="a00553.html#a44a59561e75d9451e9d1ad7a21f70047">osg::PixelDataBufferObject</a>.</p>

</div>
</div>
<a class="anchor" id="a6b20f991fd9fa60613fcbd48a022c6d4"></a><!-- doxytag: member="osg::BufferObject::deleteBufferObject" ref="a6b20f991fd9fa60613fcbd48a022c6d4" args="(unsigned int contextID, GLuint globj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void osg::BufferObject::deleteBufferObject </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>globj</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>Use deleteVertexBufferObject instead of glDeleteBuffers to allow OpenGL buffer objects to be cached until they can be deleted by the OpenGL context in which they were created, specified by contextID. </p>

</div>
</div>
<a class="anchor" id="a7380ca8006f4f946e263d4656a0581d4"></a><!-- doxytag: member="osg::BufferObject::dirty" ref="a7380ca8006f4f946e263d4656a0581d4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void osg::BufferObject::dirty </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a26fd66d922243012bfced4d78b34e38b"></a><!-- doxytag: member="osg::BufferObject::discardDeletedBufferObjects" ref="a26fd66d922243012bfced4d78b34e38b" args="(unsigned int contextID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void osg::BufferObject::discardDeletedBufferObjects </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>dicard all the cached display list 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="a381e790cdd23b1b13cce575f73ec8a59"></a><!-- doxytag: member="osg::BufferObject::flushDeletedBufferObjects" ref="a381e790cdd23b1b13cce575f73ec8a59" args="(unsigned int contextID, double, double &amp;availableTime)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void osg::BufferObject::flushDeletedBufferObjects </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">, </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 display list which need to be deleted in the OpenGL context related to contextID. </p>

</div>
</div>
<a class="anchor" id="a9f1cf0f16db34ca2b086c7ed55d7f9c7"></a><!-- doxytag: member="osg::BufferObject::getExtensions" ref="a9f1cf0f16db34ca2b086c7ed55d7f9c7" args="(unsigned int contextID, bool createIfNotInitalized)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="a00265.html">Extensions</a>* osg::BufferObject::getExtensions </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">bool&nbsp;</td>
          <td class="paramname"> <em>createIfNotInitalized</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>Function to call to get the extension of a specified context. </p>
<p>If the Extension object for that context has not yet been created and the 'createIfNotInitalized' flag been set to false then returns NULL. If 'createIfNotInitalized' is true then the <a class="el" href="a00265.html" title="Extensions class which encapsulates the querying of extensions and associated function pointers...">Extensions</a> object is automatically created. However, in this case the extension object is only created with the graphics context associated with ContextID.. </p>

</div>
</div>
<a class="anchor" id="a7e712a60a6fdc02cd22b8f573ee6af51"></a><!-- doxytag: member="osg::BufferObject::getUsage" ref="a7e712a60a6fdc02cd22b8f573ee6af51" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLenum osg::BufferObject::getUsage </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 type of usage the buffer object has been set up for. </p>

</div>
</div>
<a class="anchor" id="ad21644f3b739513273faa547d012936e"></a><!-- doxytag: member="osg::BufferObject::isBufferObjectSupported" ref="ad21644f3b739513273faa547d012936e" args="(unsigned int contextID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool osg::BufferObject::isBufferObjectSupported </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a59a8d9847302bc775a5a75f2ea67ac29"></a><!-- doxytag: member="osg::BufferObject::isDirty" ref="a59a8d9847302bc775a5a75f2ea67ac29" args="(unsigned int contextID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool osg::BufferObject::isDirty </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Referenced by <a class="el" href="a00742.html#a7d99a527594cb8e004fa7e7ea81dda88">osg::State::bindElementBufferObject()</a>, <a class="el" href="a00742.html#a631d844358678b43a0a9279bcbaf0aa0">osg::State::bindPixelBufferObject()</a>, and <a class="el" href="a00742.html#a6d1e9af67eea4f252e78e7e1e3a40b68">osg::State::bindVertexBufferObject()</a>.</p>

</div>
</div>
<a class="anchor" id="a1b7790ec9f40268b7e4c51d7577f14f3"></a><!-- doxytag: member="osg::BufferObject::isPBOSupported" ref="a1b7790ec9f40268b7e4c51d7577f14f3" args="(unsigned int contextID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool osg::BufferObject::isPBOSupported </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a165450c3e12db8f133b1d702ce154a26"></a><!-- doxytag: member="osg::BufferObject::isSameKindAs" ref="a165450c3e12db8f133b1d702ce154a26" args="(const Object *obj) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool osg::BufferObject::isSameKindAs </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00500.html">Object</a> *&nbsp;</td>
          <td class="paramname"> <em>obj</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented from <a class="el" href="a00500.html#ac3b05ac28940dda755014a821b699f3a">osg::Object</a>.</p>

<p>References <a class="el" href="a01157.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>

</div>
</div>
<a class="anchor" id="ab81b6b3f63e6a0954f8055cf2bf5ac82"></a><!-- doxytag: member="osg::BufferObject::libraryName" ref="ab81b6b3f63e6a0954f8055cf2bf5ac82" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* osg::BufferObject::libraryName </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>return the name of the object's library. </p>
<p>Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. </p>

<p>Implements <a class="el" href="a00500.html#adac3709b960df44030d682dd1336413e">osg::Object</a>.</p>

</div>
</div>
<a class="anchor" id="a2b97b33e0d46e9662125723e7c88566b"></a><!-- doxytag: member="osg::BufferObject::releaseGLObjects" ref="a2b97b33e0d46e9662125723e7c88566b" args="(State *state=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void osg::BufferObject::releaseGLObjects </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00742.html">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>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> is non-zero, this function releases OpenGL objects for the specified graphics context. </p>
<p>Otherwise, releases OpenGL objects for all graphics contexts. </p>

<p>Reimplemented from <a class="el" href="a00500.html#a9a372b2d2ccedae228f526d8409cda66">osg::Object</a>.</p>

</div>
</div>
<a class="anchor" id="ae1619e0f33db7ddc3d1c1474282b8f5c"></a><!-- doxytag: member="osg::BufferObject::resizeGLObjectBuffers" ref="ae1619e0f33db7ddc3d1c1474282b8f5c" args="(unsigned int maxSize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void osg::BufferObject::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>

<p>Reimplemented in <a class="el" href="a01079.html#a757727ccc4fb7c676033429009a3bdc2">osg::VertexBufferObject</a>, <a class="el" href="a00241.html#a786d8e76fe2dee6e1b5b8e7c768c123e">osg::ElementBufferObject</a>, <a class="el" href="a00550.html#a4c6307c2322fc4cbb7942556030c7520">osg::PixelBufferObject</a>, and <a class="el" href="a00553.html#a5db4db27e3cba936710cdf9cb14be90a">osg::PixelDataBufferObject</a>.</p>

</div>
</div>
<a class="anchor" id="a72095cac47b91852d14715c6176a9411"></a><!-- doxytag: member="osg::BufferObject::setExtensions" ref="a72095cac47b91852d14715c6176a9411" args="(unsigned int contextID, Extensions *extensions)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void osg::BufferObject::setExtensions </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"><a class="el" href="a00265.html">Extensions</a> *&nbsp;</td>
          <td class="paramname"> <em>extensions</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>setExtensions allows users to override the extensions across graphics contexts. </p>
<p>typically used when you have different extensions supported across graphics pipes but need to ensure that they all use the same low common denominator extensions. </p>

</div>
</div>
<a class="anchor" id="a17ece486a56a0486d1a8a1937d91481e"></a><!-- doxytag: member="osg::BufferObject::setUsage" ref="a17ece486a56a0486d1a8a1937d91481e" args="(GLenum usage)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void osg::BufferObject::setUsage </td>
          <td>(</td>
          <td class="paramtype">GLenum&nbsp;</td>
          <td class="paramname"> <em>usage</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set what type of usage the buffer object will have. </p>
<p>Options are: GL_STREAM_DRAW, GL_STREAM_READ, GL_STREAM_COPY, GL_STATIC_DRAW, GL_STATIC_READ, GL_STATIC_COPY, GL_DYNAMIC_DRAW, GL_DYNAMIC_READ, or GL_DYNAMIC_COPY. </p>

</div>
</div>
<a class="anchor" id="a9dd2a7849ba0f1311b076cdf384f805c"></a><!-- doxytag: member="osg::BufferObject::unbindBuffer" ref="a9dd2a7849ba0f1311b076cdf384f805c" args="(unsigned int contextID) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void osg::BufferObject::unbindBuffer </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>contextID</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented in <a class="el" href="a00553.html#a4c0e31eb47c626be6b0ae355e3998511">osg::PixelDataBufferObject</a>.</p>

<p>References <a class="el" href="a00265.html#a6a97bbc254d02fa72896c0afb02ae6c6">osg::BufferObject::Extensions::glBindBuffer()</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a0b3d4d0458e6c0f3655f61d59cd7f3fd"></a><!-- doxytag: member="osg::BufferObject::_bufferObjectList" ref="a0b3d4d0458e6c0f3655f61d59cd7f3fd" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00078.html">GLObjectList</a> <a class="el" href="a00080.html#a0b3d4d0458e6c0f3655f61d59cd7f3fd">osg::BufferObject::_bufferObjectList</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="aa0cb6e36e88b2ff75b235cf010371c1a"></a><!-- doxytag: member="osg::BufferObject::_compiledList" ref="aa0cb6e36e88b2ff75b235cf010371c1a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00078.html">CompiledList</a> <a class="el" href="a00080.html#aa0cb6e36e88b2ff75b235cf010371c1a">osg::BufferObject::_compiledList</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a68d29919aa9590f88b520ef03a41c9fe"></a><!-- doxytag: member="osg::BufferObject::_target" ref="a68d29919aa9590f88b520ef03a41c9fe" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLenum <a class="el" href="a00080.html#a68d29919aa9590f88b520ef03a41c9fe">osg::BufferObject::_target</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a99a423f02b76250742c3e721ed1f173c"></a><!-- doxytag: member="osg::BufferObject::_totalSize" ref="a99a423f02b76250742c3e721ed1f173c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="a00080.html#a99a423f02b76250742c3e721ed1f173c">osg::BufferObject::_totalSize</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a2a4be1db929837a674f9f54e22dd98bc"></a><!-- doxytag: member="osg::BufferObject::_usage" ref="a2a4be1db929837a674f9f54e22dd98bc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLenum <a class="el" href="a00080.html#a2a4be1db929837a674f9f54e22dd98bc">osg::BufferObject::_usage</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="a01130.html">BufferObject</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:42 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>