Sophie

Sophie

distrib > Mandriva > 10.2 > i586 > media > contrib > by-pkgid > 04e5d8c10ae76748689b4e7f48e0fa33 > files > 536

libogre5-devel-1.0.0-1mdk.i586.rpm

<html>
<head>
<title>OgreHardwareBufferManager.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link type="text/css" rel="stylesheet" href="style.css">
</head>

<body>
<!-- Generated by Doxygen 1.3.6 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>OgreHardwareBufferManager.h</h1><a href="OgreHardwareBufferManager_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
00002 <span class="comment">-----------------------------------------------------------------------------</span>
00003 <span class="comment">This source file is part of OGRE</span>
00004 <span class="comment">    (Object-oriented Graphics Rendering Engine)</span>
00005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span>
00006 <span class="comment"></span>
00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span>
00008 <span class="comment">Also see acknowledgements in Readme.html</span>
00009 <span class="comment"></span>
00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span>
00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span>
00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span>
00013 <span class="comment">version.</span>
00014 <span class="comment"></span>
00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span>
00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span>
00018 <span class="comment"></span>
00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span>
00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span>
00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span>
00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span>
00023 <span class="comment">-----------------------------------------------------------------------------</span>
00024 <span class="comment">*/</span>
00025 <span class="preprocessor">#ifndef __HardwareBufferManager__</span>
00026 <span class="preprocessor"></span><span class="preprocessor">#define __HardwareBufferManager__</span>
00027 <span class="preprocessor"></span>
00028 <span class="comment">// Precompiler options</span>
00029 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
00030 
00031 <span class="preprocessor">#include "<a class="code" href="OgreSingleton_8h.html">OgreSingleton.h</a>"</span>
00032 <span class="preprocessor">#include "<a class="code" href="OgreHardwareVertexBuffer_8h.html">OgreHardwareVertexBuffer.h</a>"</span>
00033 <span class="preprocessor">#include "<a class="code" href="OgreHardwareIndexBuffer_8h.html">OgreHardwareIndexBuffer.h</a>"</span>
00034 
00035 
00036 <span class="keyword">namespace </span>Ogre {
00037 
<a name="l00048"></a><a class="code" href="classOgre_1_1HardwareBufferLicensee.html">00048</a>     <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> HardwareBufferLicensee
00049     {
00050     <span class="keyword">public</span>:
<a name="l00051"></a><a class="code" href="classOgre_1_1HardwareBufferLicensee.html#Ogre_1_1HardwareBufferLicenseea0">00051</a>         <span class="keyword">virtual</span> ~HardwareBufferLicensee() { }
00054         <span class="keyword">virtual</span> <span class="keywordtype">void</span> licenseExpired(<a class="code" href="classOgre_1_1HardwareBuffer.html">HardwareBuffer</a>* buffer) = 0;
00055     };
00056 
<a name="l00058"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html">00058</a>     <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> TempBlendedBufferInfo : <span class="keyword">public</span> HardwareBufferLicensee
00059     {
00060     <span class="keyword">public</span>:
00061         <span class="comment">// Pre-blended </span>
<a name="l00062"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo0">00062</a>         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> srcPositionBuffer;
<a name="l00063"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo1">00063</a>         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> srcNormalBuffer;
00064         <span class="comment">// Post-blended </span>
<a name="l00065"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo2">00065</a>         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> destPositionBuffer;
<a name="l00066"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo3">00066</a>         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> destNormalBuffer;
<a name="l00068"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo4">00068</a>         <span class="keywordtype">bool</span> posNormalShareBuffer;
<a name="l00069"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo5">00069</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> posBindIndex;
<a name="l00070"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo6">00070</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> normBindIndex;
<a name="l00071"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo7">00071</a>         <span class="keywordtype">bool</span> bindPositions;
<a name="l00072"></a><a class="code" href="classOgre_1_1TempBlendedBufferInfo.html#Ogre_1_1TempBlendedBufferInfoo8">00072</a>         <span class="keywordtype">bool</span> bindNormals;
00073 
00075         <span class="keywordtype">void</span> checkoutTempCopies(<span class="keywordtype">bool</span> positions = <span class="keyword">true</span>, <span class="keywordtype">bool</span> normals = <span class="keyword">true</span>);
00077         <span class="keywordtype">void</span> bindTempCopies(<a class="code" href="classOgre_1_1VertexData.html">VertexData</a>* targetData, <span class="keywordtype">bool</span> suppressHardwareUpload);
00079         <span class="keywordtype">void</span> licenseExpired(<a class="code" href="classOgre_1_1HardwareBuffer.html">HardwareBuffer</a>* buffer);
00080     };
00081 
00082 
<a name="l00085"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html">00085</a>     <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> HardwareBufferManager : <span class="keyword">public</span> <a class="code" href="classOgre_1_1Singleton.html">Singleton</a>&lt;HardwareBufferManager&gt;
00086     {
<a name="l00087"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagern0">00087</a>         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>;
<a name="l00088"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagern1">00088</a>         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a>;
00089     <span class="keyword">protected</span>:
<a name="l00090"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx0">00090</a>         <span class="keyword">typedef</span> std::list&lt;VertexDeclaration*&gt; <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx0">VertexDeclarationList</a>;
<a name="l00091"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx1">00091</a>         <span class="keyword">typedef</span> std::list&lt;VertexBufferBinding*&gt; <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx1">VertexBufferBindingList</a>;
00092 
<a name="l00093"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerp0">00093</a>         <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx0">VertexDeclarationList</a> mVertexDeclarations;
<a name="l00094"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerp1">00094</a>         <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx1">VertexBufferBindingList</a> mVertexBufferBindings;
00095 
00096 
00097         <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyAllDeclarations(<span class="keywordtype">void</span>);
00098         <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyAllBindings(<span class="keywordtype">void</span>);
00099 
00100     <span class="keyword">public</span>:
00101 
<a name="l00102"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerw2">00102</a>         <span class="keyword">enum</span> BufferLicenseType
00103         {
00105             BLT_MANUAL_RELEASE,
00107             BLT_AUTOMATIC_RELEASE
00108         };
00109 
00110     <span class="keyword">protected</span>:
<a name="l00112"></a><a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html">00112</a>         <span class="keyword">class </span><a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html">VertexBufferLicense</a>
00113         {
00114         <span class="keyword">public</span>:
<a name="l00115"></a><a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html#Ogre_1_1HardwareBufferManager_1_1VertexBufferLicenseo0">00115</a>             <a class="code" href="classOgre_1_1HardwareVertexBuffer.html">HardwareVertexBuffer</a>* originalBufferPtr;
<a name="l00116"></a><a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html#Ogre_1_1HardwareBufferManager_1_1VertexBufferLicenseo1">00116</a>             BufferLicenseType licenseType;
<a name="l00117"></a><a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html#Ogre_1_1HardwareBufferManager_1_1VertexBufferLicenseo2">00117</a>             <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> buffer;
<a name="l00118"></a><a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html#Ogre_1_1HardwareBufferManager_1_1VertexBufferLicenseo3">00118</a>             HardwareBufferLicensee* licensee;
<a name="l00119"></a><a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html#Ogre_1_1HardwareBufferManager_1_1VertexBufferLicensea0">00119</a>             <a class="code" href="classOgre_1_1HardwareBufferManager_1_1VertexBufferLicense.html">VertexBufferLicense</a>(
00120                 <a class="code" href="classOgre_1_1HardwareVertexBuffer.html">HardwareVertexBuffer</a>* orig,
00121                 BufferLicenseType ltype, 
00122                 <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> buf, 
00123                 HardwareBufferLicensee* lic) 
00124                 : originalBufferPtr(orig), licenseType(ltype), buffer(buf), licensee(lic) {}
00125 
00126         };
00127 
<a name="l00129"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx2">00129</a>         <span class="keyword">typedef</span> std::vector&lt;HardwareVertexBufferSharedPtr&gt; <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx2">FreeTemporaryVertexBufferList</a>;
<a name="l00131"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx3">00131</a>         <span class="keyword">typedef</span> std::map&lt;HardwareVertexBuffer*, FreeTemporaryVertexBufferList*&gt; <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx3">FreeTemporaryVertexBufferMap</a>;
<a name="l00133"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerp2">00133</a>         <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx3">FreeTemporaryVertexBufferMap</a> mFreeTempVertexBufferMap;
<a name="l00135"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx4">00135</a>         <span class="keyword">typedef</span> std::vector&lt;VertexBufferLicense&gt; <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx4">TemporaryVertexBufferLicenseList</a>;
<a name="l00137"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerp3">00137</a>         <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx4">TemporaryVertexBufferLicenseList</a> mTempVertexBufferLicenses;
00138 
<a name="l00139"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx5">00139</a>         <span class="keyword">typedef</span> std::set&lt;HardwareVertexBuffer*&gt; <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx5">VertexBufferList</a>;
<a name="l00140"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx6">00140</a>         <span class="keyword">typedef</span> std::set&lt;HardwareIndexBuffer*&gt; <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx6">IndexBufferList</a>;
<a name="l00141"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerp4">00141</a>         <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx5">VertexBufferList</a> mVertexBuffers;
<a name="l00142"></a><a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerp5">00142</a>         <a class="code" href="classOgre_1_1HardwareBufferManager.html#Ogre_1_1HardwareBufferManagerx6">IndexBufferList</a> mIndexBuffers;
00143 
00144 
00146         <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> makeBufferCopy(
00147             <span class="keyword">const</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>&amp; source, 
00148             HardwareBuffer::Usage usage, <span class="keywordtype">bool</span> useShadowBuffer);
00149 
00150     <span class="keyword">public</span>:
00151         HardwareBufferManager();
00152         <span class="keyword">virtual</span> ~HardwareBufferManager();
00181         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> 
00182             createVertexBuffer(size_t vertexSize, size_t numVerts, HardwareBuffer::Usage usage, 
00183             <span class="keywordtype">bool</span> useShadowBuffer = <span class="keyword">false</span>) = 0;
00200         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a> 
00201             createIndexBuffer(HardwareIndexBuffer::IndexType itype, size_t numIndexes, 
00202             HardwareBuffer::Usage usage, <span class="keywordtype">bool</span> useShadowBuffer = <span class="keyword">false</span>) = 0;
00204         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1VertexDeclaration.html">VertexDeclaration</a>* createVertexDeclaration(<span class="keywordtype">void</span>);
00206         <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyVertexDeclaration(<a class="code" href="classOgre_1_1VertexDeclaration.html">VertexDeclaration</a>* decl);
00207 
00209         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1VertexBufferBinding.html">VertexBufferBinding</a>* createVertexBufferBinding(<span class="keywordtype">void</span>);
00211         <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyVertexBufferBinding(<a class="code" href="classOgre_1_1VertexBufferBinding.html">VertexBufferBinding</a>* binding);
00212 
00218         <span class="keyword">virtual</span> <span class="keywordtype">void</span> registerVertexBufferSourceAndCopy(
00219             <span class="keyword">const</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>&amp; sourceBuffer,
00220             <span class="keyword">const</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>&amp; copy);
00221 
00238         <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> allocateVertexBufferCopy(
00239             <span class="keyword">const</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>&amp; sourceBuffer, 
00240             BufferLicenseType licenseType,
00241             HardwareBufferLicensee* licensee,
00242             <span class="keywordtype">bool</span> copyData = <span class="keyword">false</span>);
00251         <span class="keyword">virtual</span> <span class="keywordtype">void</span> releaseVertexBufferCopy(
00252             <span class="keyword">const</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>&amp; bufferCopy); 
00253 
00256         <span class="keyword">virtual</span> <span class="keywordtype">void</span> _releaseBufferCopies(<span class="keywordtype">void</span>);
00257 
00265         <span class="keyword">virtual</span> <span class="keywordtype">void</span> _forceReleaseBufferCopies(
00266             <span class="keyword">const</span> <a class="code" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>&amp; sourceBuffer);
00267 
00269         <span class="keywordtype">void</span> _notifyVertexBufferDestroyed(<a class="code" href="classOgre_1_1HardwareVertexBuffer.html">HardwareVertexBuffer</a>* buf);
00271         <span class="keywordtype">void</span> _notifyIndexBufferDestroyed(<a class="code" href="classOgre_1_1HardwareIndexBuffer.html">HardwareIndexBuffer</a>* buf);
00272 
00288         <span class="keyword">static</span> HardwareBufferManager&amp; getSingleton(<span class="keywordtype">void</span>);
00304         <span class="keyword">static</span> HardwareBufferManager* getSingletonPtr(<span class="keywordtype">void</span>);
00305             
00306     };
00307 
00308 }
00309 
00310 <span class="preprocessor">#endif</span>
00311 <span class="preprocessor"></span>
</pre></div><p>
Copyright &copy; 2000-2005 by The OGRE Team<br />
Last modified Wed Feb 23 00:19:07 2005
</p>
</body>
</html>