diff options
author | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
---|---|---|
committer | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
commit | 0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch) | |
tree | 2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a02367.html | |
download | nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip |
Initial commit
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/a02367.html | 760 |
1 files changed, 760 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02367.html b/docs/doxygen/nel/a02367.html new file mode 100644 index 00000000..d08e6fa5 --- /dev/null +++ b/docs/doxygen/nel/a02367.html @@ -0,0 +1,760 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>NeL: NL3D::CCoarseMeshBuild class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.6 --> +<div class="qindex"> <form class="search" action="search.php" method="get"> +<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>NL3D::CCoarseMeshBuild Class Reference</h1><code>#include <<a class="el" href="a05568.html">coarse_mesh_build.h</a>></code> +<p> +<hr><a name="_details"></a><h2>Detailed Description</h2> +Class used to build the coarse meshes<p> +The build method take an array of <a class="el" href="a02878.html">CMeshGeom</a> an a bitmap. This class will compute a single texture used to map every coarse mesh passed in the array.<p> +Each mesh geom should be a coarse mesh.<p> +The uv texture coodinates of those coarse meshes will be adjusted to fit in a single texture.<p> +<dl compact><dt><b>Author:</b></dt><dd>Cyril 'Hulud' Corvazier <p> +Nevrax France </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl> + +<p> + +<p> +Definition at line <a class="el" href="a05568.html#l00062">62</a> of file <a class="el" href="a05568.html">coarse_mesh_build.h</a>.<table border=0 cellpadding=0 cellspacing=0> +<tr><td></td></tr> +<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuilda0">build</a> (const std::vector< <a class="el" href="a02369.html">CCoarseMeshDesc</a> > &coarseMeshes, std::vector< <a class="el" href="a02268.html">NLMISC::CBitmap</a> > &bitmaps, <a class="el" href="a02370.html">CStats</a> &stats, float mulArea)</td></tr> + +<tr><td colspan=2><br><h2>Private Types</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::map< std::string,<br> + <a class="el" href="a02368.html">CBitmapDesc</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildy0">MapBitmapDesc</a></td></tr> + +<tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildd0">buildBitmap</a> (const std::vector< <a class="el" href="a02369.html">CCoarseMeshDesc</a> > &coarseMeshes, std::vector< <a class="el" href="a02268.html">NLMISC::CBitmap</a> > &bitmaps, <a class="el" href="a02370.html">CStats</a> &stats, <a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildy0">MapBitmapDesc</a> &desc, float mulArea)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildd1">expand</a> (<a class="el" href="a02268.html">NLMISC::CBitmap</a> &bitmap)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildd2">remapCoordinates</a> (const std::vector< <a class="el" href="a02369.html">CCoarseMeshDesc</a> > &coarseMeshes, const <a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildy0">MapBitmapDesc</a> &desc, <a class="el" href="a04558.html#a15">uint</a> outputBitmapCount)</td></tr> + +</table> +<hr><h2>Member Typedef Documentation</h2> +<a class="anchor" name="NL3D_1_1CCoarseMeshBuildy0" doxytag="NL3D::CCoarseMeshBuild::MapBitmapDesc" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> typedef std::map<std::string, <a class="el" href="a02368.html">CBitmapDesc</a>> <a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildy0">NL3D::CCoarseMeshBuild::MapBitmapDesc</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05568.html#l00132">132</a> of file <a class="el" href="a05568.html">coarse_mesh_build.h</a>. +<p> +Referenced by <a class="el" href="a05567.html#l00039">build()</a>, <a class="el" href="a05567.html#l00070">buildBitmap()</a>, and <a class="el" href="a05567.html#l00430">remapCoordinates()</a>. </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="NL3D_1_1CCoarseMeshBuilda0" doxytag="NL3D::CCoarseMeshBuild::build" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CCoarseMeshBuild::build </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a02369.html">CCoarseMeshDesc</a> > & </td> + <td class="mdname" nowrap> <em>coarseMeshes</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>std::vector< <a class="el" href="a02268.html">NLMISC::CBitmap</a> > & </td> + <td class="mdname" nowrap> <em>bitmaps</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a02370.html">CStats</a> & </td> + <td class="mdname" nowrap> <em>stats</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>mulArea</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The build method. This method will build a single texture and adjuste the UV texture coordinates of each mesh geom.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>coarseMeshes</em> </td><td>is a vector of coarse mesh to compute. </td></tr> + <tr><td valign=top><em>bitmap</em> </td><td>will receive the final bitmap. </td></tr> + <tr><td valign=top><em>start</em> </td><td>will receive various statistics about the build process. </td></tr> + <tr><td valign=top><em>mulArea</em> </td><td>is the mul factor used to increase to theorical global texture size.</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a05567.html#l00039">39</a> of file <a class="el" href="a05567.html">coarse_mesh_build.cpp</a>. +<p> +References <a class="el" href="a05567.html#l00070">buildBitmap()</a>, <a class="el" href="a05568.html#l00132">MapBitmapDesc</a>, and <a class="el" href="a05567.html#l00430">remapCoordinates()</a>. +<p> +<div class="fragment"><pre>00040 { +00041 <span class="comment">// 1. build the bitmap</span> +00042 <a class="code" href="a02367.html#NL3D_1_1CCoarseMeshBuildy0">MapBitmapDesc</a> desc; +00043 <span class="keywordflow">if</span> (<a class="code" href="a02367.html#NL3D_1_1CCoarseMeshBuildd0">buildBitmap</a> (coarseMeshes, bitmaps, stats, desc, mulArea)==<span class="keyword">false</span>) +00044 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00045 +00046 <span class="comment">// 2. remap coordinates</span> +00047 <a class="code" href="a02367.html#NL3D_1_1CCoarseMeshBuildd2">remapCoordinates</a> (coarseMeshes, desc, bitmaps.size ()); +00048 +00049 <span class="comment">// 3. ok</span> +00050 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00051 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CCoarseMeshBuildd0" doxytag="NL3D::CCoarseMeshBuild::buildBitmap" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CCoarseMeshBuild::buildBitmap </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a02369.html">CCoarseMeshDesc</a> > & </td> + <td class="mdname" nowrap> <em>coarseMeshes</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>std::vector< <a class="el" href="a02268.html">NLMISC::CBitmap</a> > & </td> + <td class="mdname" nowrap> <em>bitmaps</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a02370.html">CStats</a> & </td> + <td class="mdname" nowrap> <em>stats</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildy0">MapBitmapDesc</a> & </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>mulArea</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05567.html#l00070">70</a> of file <a class="el" href="a05567.html">coarse_mesh_build.cpp</a>. +<p> +References <a class="el" href="a05568.html#l00126">NL3D::CCoarseMeshBuild::CBitmapDesc::Bitmaps</a>, <a class="el" href="a05486.html#l00926">NLMISC::CBitmap::convertToType()</a>, <a class="el" href="a05567.html#l00367">expand()</a>, <a class="el" href="a05568.html#l00122">NL3D::CCoarseMeshBuild::CBitmapDesc::FactorU</a>, <a class="el" href="a05568.html#l00123">NL3D::CCoarseMeshBuild::CBitmapDesc::FactorV</a>, <a class="el" href="a06506.html#l00309">NL3D::ITexture::generate()</a>, <a class="el" href="a05486.html#l01388">NLMISC::CBitmap::getHeight()</a>, <a class="el" href="a05992.html#l00179">NL3D::CMeshBase::getMaterial()</a>, <a class="el" href="a05990.html#l00393">NL3D::CMeshGeom::getNbMatrixBlock()</a>, <a class="el" href="a05990.html#l00398">NL3D::CMeshGeom::getNbRdrPass()</a>, <a class="el" href="a05586.html#l00358">NLMISC::getPowerOf2()</a>, <a class="el" href="a05990.html#l00413">NL3D::CMeshGeom::getRdrPassMaterial()</a>, <a class="el" href="a06506.html#l00338">NL3D::ITexture::getShareName()</a>, <a class="el" href="a05641.html#l00046">NL3D::CMaterial::getTexture()</a>, <a class="el" href="a05486.html#l01363">NLMISC::CBitmap::getWidth()</a>, <a class="el" href="a05567.html#l00061">NL3D::CInsertedBitmap::Height</a>, <a class="el" href="a05646.html#l01013">height</a>, <a class="el" href="a05568.html#l00132">MapBitmapDesc</a>, <a class="el" href="a05568.html#l00129">NL3D::CCoarseMeshBuild::CBitmapDesc::Name</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05586.html#l00349">NLMISC::raiseToNextPowerOf2()</a>, <a class="el" href="a05486.html#l01508">NLMISC::CBitmap::resample()</a>, <a class="el" href="a06506.html#l00360">NL3D::ITexture::selectTexture()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05586.html#l00536">NLMISC::strlwr()</a>, <a class="el" href="a06506.html#l00332">NL3D::ITexture::supportSharing()</a>, <a class="el" href="a05568.html#l00098">NL3D::CCoarseMeshBuild::CStats::TextureUsed</a>, <a class="el" href="a06229.html#l02652">NLMISC::toString()</a>, <a class="el" href="a05567.html#l00064">NL3D::CInsertedBitmap::U</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05567.html#l00065">NL3D::CInsertedBitmap::V</a>, <a class="el" href="a05646.html#l00237">v</a>, <a class="el" href="a05567.html#l00060">NL3D::CInsertedBitmap::Width</a>, and <a class="el" href="a05646.html#l01013">width</a>. +<p> +Referenced by <a class="el" href="a05567.html#l00039">build()</a>. +<p> +<div class="fragment"><pre>00071 { +00072 <span class="comment">// Total area used by texture</span> +00073 <a class="code" href="a04558.html#a15">uint</a> totalArea=0; +00074 +00075 <span class="comment">// ***************************************************************************</span> +00076 +00077 <span class="comment">// 1. scan each bitmap: calc the area of the bitmap and it its name in the maps sorted by area</span> +00078 <span class="keyword">typedef</span> std::multimap<uint, CBitmapDesc*> MapAreaBitmap; +00079 MapAreaBitmap mapArea; +00080 <a class="code" href="a04558.html#a15">uint</a> mesh; +00081 <span class="keywordflow">for</span> (mesh=0; mesh<coarseMeshes.size(); mesh++) +00082 { +00083 <span class="comment">// Geom mesh pointer</span> +00084 CMeshGeom *meshGeom=coarseMeshes[mesh].MeshGeom; +00085 +00086 <span class="comment">// Base mesh pointer</span> +00087 <span class="keyword">const</span> CMeshBase *meshBase=coarseMeshes[mesh].MeshBase; +00088 +00089 <span class="comment">// For each matrix block</span> +00090 <a class="code" href="a04558.html#a15">uint</a> matrixBlock; +00091 <a class="code" href="a04558.html#a15">uint</a> nbMatrixBlock=meshGeom->getNbMatrixBlock(); +00092 <span class="keywordflow">for</span> (matrixBlock=0; matrixBlock<nbMatrixBlock; matrixBlock++) +00093 { +00094 <span class="comment">// For each render pass</span> +00095 <a class="code" href="a04558.html#a15">uint</a> renderPass; +00096 <a class="code" href="a04558.html#a15">uint</a> numRenderPass=meshGeom->getNbRdrPass(matrixBlock); +00097 <span class="keywordflow">for</span> (renderPass=0; renderPass<numRenderPass; renderPass++) +00098 { +00099 <span class="comment">// Render pass material</span> +00100 <a class="code" href="a04558.html#a11">uint32</a> matId=meshGeom->getRdrPassMaterial(matrixBlock, renderPass); +00101 +00102 <span class="comment">// Checks</span> +00103 <a class="code" href="a04199.html#a6">nlassert</a> (matId<meshBase->getNbMaterial()); +00104 +00105 <span class="comment">// Get the material</span> +00106 <span class="keyword">const</span> CMaterial &material=meshBase->getMaterial(matId); +00107 +00108 <span class="comment">// Get the texture</span> +00109 ITexture *texture=material.getTexture(0); +00110 <span class="keywordflow">if</span> (texture) +00111 { +00112 <span class="comment">// For each bitmaps</span> +00113 <a class="code" href="a04558.html#a15">uint</a> i; +00114 std::string name; +00115 <span class="keywordflow">for</span> (i=0; i<bitmaps.size (); i++) +00116 { +00117 <span class="comment">// Select the good slot</span> +00118 texture->selectTexture (i); +00119 +00120 <span class="comment">// Get its name</span> +00121 <span class="keywordflow">if</span> (texture->supportSharing()) +00122 { +00123 <span class="comment">// Get sharing name</span> +00124 name+=<a class="code" href="a05378.html#a273">strlwr</a>(texture->getShareName()); +00125 } +00126 <span class="keywordflow">else</span> +00127 { +00128 <span class="comment">// Build a name</span> +00129 name+=<a class="code" href="a05378.html#a244">toString</a> ((<a class="code" href="a04558.html#a15">uint</a>)texture); +00130 } +00131 } +00132 +00133 <span class="comment">// Already added ?</span> +00134 <span class="keywordflow">if</span> (desc.find (name)==desc.end()) +00135 { +00136 <span class="comment">// Add it..</span> +00137 +00138 <span class="comment">// Insert it in the maps</span> +00139 MapBitmapDesc::iterator ite = desc.insert (MapBitmapDesc::value_type (name, CBitmapDesc ())).first; +00140 +00141 <span class="comment">// Descriptor for this texture</span> +00142 CBitmapDesc &descBitmap = ite->second; +00143 +00144 <span class="comment">// Backup original size</span> +00145 <a class="code" href="a04558.html#a15">uint</a> originalWidth; +00146 <a class="code" href="a04558.html#a15">uint</a> originalHeight; +00147 +00148 <span class="comment">// For each bitmaps</span> +00149 <a class="code" href="a04558.html#a15">uint</a> i; +00150 descBitmap.Bitmaps.resize (bitmaps.size ()); +00151 <span class="keywordflow">for</span> (i=0; i<bitmaps.size (); i++) +00152 { +00153 <span class="comment">// Select the good slot</span> +00154 texture->selectTexture (i); +00155 +00156 <span class="comment">// Generate the texture</span> +00157 texture->generate(); +00158 +00159 <span class="comment">// Convert to RGBA</span> +00160 texture->convertToType (CBitmap::RGBA); +00161 +00162 <span class="comment">// First texture ?</span> +00163 <span class="keywordflow">if</span> (i == 0) +00164 { +00165 <span class="comment">// Backup original size</span> +00166 originalWidth = texture->getWidth(); +00167 originalHeight = texture->getHeight(); +00168 } +00169 +00170 <span class="comment">// Resample, if needed</span> +00171 <span class="keywordflow">if</span> (i != 0) +00172 { +00173 <span class="comment">// New size</span> +00174 <span class="keywordflow">if</span> ( ( originalWidth != texture->getWidth () ) || originalHeight != texture->getHeight () ) +00175 { +00176 texture->resample (originalWidth, originalHeight); +00177 } +00178 } +00179 +00180 <span class="comment">// Copy the texture</span> +00181 descBitmap.Bitmaps[i] = *texture; +00182 +00183 <span class="comment">// Expand the texture</span> +00184 <a class="code" href="a02367.html#NL3D_1_1CCoarseMeshBuildd1">expand</a> (descBitmap.Bitmaps[i]); +00185 } +00186 +00187 <span class="comment">// Texture area</span> +00188 <a class="code" href="a04558.html#a15">uint</a> area = descBitmap.Bitmaps[0].getWidth() * descBitmap.Bitmaps[0].getHeight(); +00189 descBitmap.Name = name; +00190 descBitmap.FactorU = (<span class="keywordtype">float</span>)originalWidth; +00191 descBitmap.FactorV = (<span class="keywordtype">float</span>)originalHeight; +00192 +00193 <span class="comment">// Insert in the map area</span> +00194 mapArea.insert (MapAreaBitmap::value_type(area, &(ite->second))); +00195 +00196 <span class="comment">// Sum area if added</span> +00197 totalArea+=area; +00198 } +00199 } +00200 } +00201 } +00202 } +00203 +00204 <span class="comment">// ***************************************************************************</span> +00205 +00206 <span class="comment">// 2. Calc the best area for the dest texture and resize the bitmap</span> +00207 +00208 <span class="comment">// Total area used by the textures + a little more</span> +00209 <a class="code" href="a04558.html#a15">uint</a> newArea=<a class="code" href="a05378.html#a263">getPowerOf2</a> (raiseToNextPowerOf2 (totalArea)); +00210 <span class="keywordflow">while</span> ((1<<newArea)<(<a class="code" href="a04558.html#a14">sint</a>)(mulArea*(<span class="keywordtype">float</span>)totalArea)) +00211 { +00212 newArea++; +00213 } +00214 +00215 <span class="comment">// Calc width and height with HEIGHT==WIDTH or HEIGHT=2*WIDTH</span> +00216 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a632">width</a>=1<<(newArea/2); +00217 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a633">height</a>=1<<(newArea/2 + (newArea&1)); +00218 +00219 <span class="comment">// Resize the bitmap and set the pixel format</span> +00220 <a class="code" href="a04558.html#a15">uint</a> i; +00221 <span class="keywordflow">for</span> (i=0; i<bitmaps.size (); i++) +00222 bitmaps[i].resize (width, height, CBitmap::RGBA); +00223 +00224 <span class="comment">// Checks</span> +00225 <span class="keywordflow">if</span> (totalArea==0) +00226 { +00227 <span class="comment">// No texture, ok computed.</span> +00228 stats.TextureUsed=1; +00229 +00230 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00231 } +00232 +00233 <span class="comment">// ***************************************************************************</span> +00234 +00235 <span class="comment">// 3. Place each texture in the bitmap in uncreasing order</span> +00236 <span class="keyword">typedef</span> std::multimap<sint, CInsertedBitmap> mapInsertedBitmap; +00237 +00238 <span class="comment">// For each texture</span> +00239 MapAreaBitmap::iterator ite=mapArea.end(); +00240 +00241 <span class="comment">// Inserted bitmap desc</span> +00242 mapInsertedBitmap inserted; +00243 +00244 <span class="comment">// Max texture height</span> +00245 <a class="code" href="a04558.html#a15">uint</a> maxTexHeight=0; +00246 +00247 <span class="keywordflow">do</span> +00248 { +00249 ite--; +00250 <a class="code" href="a04199.html#a6">nlassert</a> (ite!=mapArea.end()); +00251 +00252 <span class="comment">// Size of the texture</span> +00253 <a class="code" href="a04558.html#a15">uint</a> widthTex=ite->second->Bitmaps[0].getWidth(); +00254 <a class="code" href="a04558.html#a15">uint</a> heightTex=ite->second->Bitmaps[0].getHeight(); +00255 +00256 <span class="comment">// Some checks</span> +00257 <a class="code" href="a04199.html#a6">nlassert</a> (bitmaps.size () == ite->second->Bitmaps.size ()); +00258 +00259 <span class="comment">// Width and height max</span> +00260 <a class="code" href="a04558.html#a15">uint</a> widthMax=<a class="code" href="a04223.html#a632">width</a>-widthTex; +00261 <a class="code" href="a04558.html#a15">uint</a> heightMax=<a class="code" href="a04223.html#a633">height</a>-heightTex; +00262 +00263 <span class="comment">// Test against others..</span> +00264 <span class="keywordtype">bool</span> enter=<span class="keyword">false</span>; +00265 +00266 <span class="comment">// For each row and each column</span> +00267 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a576">v</a>=0; <a class="code" href="a04223.html#a576">v</a><heightMax; <a class="code" href="a04223.html#a576">v</a>++) +00268 { +00269 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> u=0; u<widthMax; u++) +00270 { +00271 <span class="comment">// Test against others..</span> +00272 enter=<span class="keyword">true</span>; +00273 +00274 <span class="comment">// Get the first to test</span> +00275 mapInsertedBitmap::iterator toTest=inserted.lower_bound ((<a class="code" href="a04558.html#a14">sint</a>)v-(<a class="code" href="a04558.html#a14">sint</a>)maxTexHeight); +00276 <span class="keywordflow">while</span> (toTest!=inserted.end()) +00277 { +00278 <span class="comment">// Make a test ?</span> +00279 <span class="keywordflow">if</span> ((<a class="code" href="a04558.html#a14">sint</a>)(<a class="code" href="a04223.html#a576">v</a>+heightTex)<=(toTest->first)) +00280 { +00281 <span class="comment">// Ok, end test</span> +00282 <span class="keywordflow">break</span>; +00283 } +00284 +00285 <span class="comment">// Test it</span> +00286 <a class="code" href="a04558.html#a15">uint</a> otherU=toTest->second.U; +00287 <a class="code" href="a04558.html#a15">uint</a> otherV=toTest->second.V; +00288 <a class="code" href="a04558.html#a15">uint</a> otherWidth=toTest->second.Width; +00289 <a class="code" href="a04558.html#a15">uint</a> otherHeight=toTest->second.Height; +00290 <span class="keywordflow">if</span> ((<a class="code" href="a04223.html#a576">v<otherV+otherHeight) && (v+heightTex></a>otherV) && +00291 (u<otherU+otherWidth) && (u+widthTex>otherU)) +00292 { +00293 <span class="comment">// Collision</span> +00294 enter=<span class="keyword">false</span>; +00295 u=toTest->second.U+otherWidth-1; +00296 <span class="keywordflow">break</span>; +00297 } +00298 +00299 <span class="comment">// Next to test</span> +00300 toTest++; +00301 } +00302 +00303 <span class="comment">// Enter ?</span> +00304 <span class="keywordflow">if</span> (enter) +00305 { +00306 <span class="comment">// Ok, enter</span> +00307 +00308 <span class="comment">// Insert an inserted descriptor</span> +00309 CInsertedBitmap descInserted; +00310 descInserted.Width=widthTex; +00311 descInserted.Height=heightTex; +00312 descInserted.U=u; +00313 descInserted.V=<a class="code" href="a04223.html#a576">v</a>; +00314 inserted.insert (mapInsertedBitmap::value_type (v, descInserted)); +00315 +00316 <span class="comment">// Max height</span> +00317 <span class="keywordflow">if</span> (heightTex>maxTexHeight) +00318 maxTexHeight=heightTex; +00319 +00320 <span class="comment">// Blit in the texture</span> +00321 <a class="code" href="a04558.html#a15">uint</a> i; +00322 <span class="keywordflow">for</span> (i=0; i<bitmaps.size (); i++) +00323 { +00324 <span class="comment">// Check..</span> +00325 <a class="code" href="a04199.html#a6">nlassert</a> ( (ite->second->Bitmaps[0].getWidth () == ite->second->Bitmaps[i].getWidth ()) && +00326 (ite->second->Bitmaps[0].getHeight () == ite->second->Bitmaps[i].getHeight ()) ); +00327 +00328 <span class="comment">// Blit it</span> +00329 bitmaps[i].blit (&(ite->second->Bitmaps[i]), u, v); +00330 } +00331 +00332 <span class="comment">// Set the U and V texture coordinates</span> +00333 ite->second->U=(<span class="keywordtype">float</span>)(u+1)/(<span class="keywordtype">float</span>)<a class="code" href="a04223.html#a632">width</a>; +00334 ite->second->V=(<span class="keywordtype">float</span>)(<a class="code" href="a04223.html#a576">v</a>+1)/(<span class="keywordtype">float</span>)<a class="code" href="a04223.html#a633">height</a>; +00335 +00336 <span class="comment">// Set ratio</span> +00337 ite->second->FactorU /= (<span class="keywordtype">float</span>)<a class="code" href="a04223.html#a632">width</a>; +00338 ite->second->FactorV /= (<span class="keywordtype">float</span>)<a class="code" href="a04223.html#a633">height</a>; +00339 +00340 <span class="comment">// End</span> +00341 <span class="keywordflow">break</span>; +00342 } +00343 +00344 <span class="comment">// next..</span> +00345 } +00346 +00347 <span class="comment">// Enter ?</span> +00348 <span class="keywordflow">if</span> (enter) +00349 <span class="keywordflow">break</span>; +00350 } +00351 +00352 <span class="comment">// Not enter ?</span> +00353 <span class="keywordflow">if</span> (!enter) +00354 <span class="comment">// Texture too small..</span> +00355 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00356 } +00357 <span class="keywordflow">while</span> (ite!=mapArea.begin()); +00358 +00359 <span class="comment">// Some stats</span> +00360 stats.TextureUsed=(<span class="keywordtype">float</span>)totalArea/(<span class="keywordtype">float</span>)(<a class="code" href="a04223.html#a632">width</a>*<a class="code" href="a04223.html#a633">height</a>); +00361 +00362 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00363 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CCoarseMeshBuildd1" doxytag="NL3D::CCoarseMeshBuild::expand" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CCoarseMeshBuild::expand </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02268.html">NLMISC::CBitmap</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>bitmap</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05567.html#l00367">367</a> of file <a class="el" href="a05567.html">coarse_mesh_build.cpp</a>. +<p> +References <a class="el" href="a05486.html#l02332">NLMISC::CBitmap::blit()</a>, <a class="el" href="a05486.html#l01388">NLMISC::CBitmap::getHeight()</a>, <a class="el" href="a05487.html#l00308">NLMISC::CBitmap::getPixels()</a>, <a class="el" href="a05486.html#l01363">NLMISC::CBitmap::getWidth()</a>, <a class="el" href="a05646.html#l01013">height</a>, <a class="el" href="a05486.html#l01545">NLMISC::CBitmap::resize()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a05646.html#l01013">width</a>. +<p> +Referenced by <a class="el" href="a05567.html#l00070">buildBitmap()</a>. +<p> +<div class="fragment"><pre>00368 { +00369 <span class="comment">// Get size</span> +00370 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a632">width</a>=bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturea20">getWidth</a>(); +00371 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a633">height</a>=bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturea12">getHeight</a>(); +00372 +00373 <span class="comment">// Valid size ?</span> +00374 <span class="keywordflow">if</span> ((<a class="code" href="a04223.html#a632">width</a>!=0) && (<a class="code" href="a04223.html#a633">height</a>!=0)) +00375 { +00376 <span class="comment">// Copy the bitmap</span> +00377 <a class="code" href="a02268.html">CBitmap</a> copy=bitmap; +00378 +00379 <span class="comment">// Resize the bitmap</span> +00380 bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturea33">resize</a> (width+2, height+2); +00381 +00382 <span class="comment">// Copy old bitmap</span> +00383 bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturea2">blit</a> (&copy, 1, 1); +00384 +00385 <span class="comment">// Make a top and bottom border</span> +00386 <a class="code" href="a04558.html#a11">uint32</a> *topSrc=(<a class="code" href="a04558.html#a11">uint32</a>*)&(copy.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]); +00387 <a class="code" href="a04558.html#a11">uint32</a> *topDest=((<a class="code" href="a04558.html#a11">uint32</a>*)&(bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+1; +00388 memcpy (topDest, topSrc, 4*width); +00389 <a class="code" href="a04558.html#a11">uint32</a> *bottomSrc=topSrc+<a class="code" href="a04223.html#a632">width</a>*(<a class="code" href="a04223.html#a633">height</a>-1); +00390 <a class="code" href="a04558.html#a11">uint32</a> *bottomDest=((<a class="code" href="a04558.html#a11">uint32</a>*)&(bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+(<a class="code" href="a04223.html#a632">width</a>+2)*(<a class="code" href="a04223.html#a633">height</a>+1)+1; +00391 memcpy (bottomDest, bottomSrc, 4*width); +00392 +00393 <span class="comment">// Make a left and right border</span> +00394 <a class="code" href="a04558.html#a11">uint32</a> *leftSrc=(<a class="code" href="a04558.html#a11">uint32</a>*)&(copy.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]); +00395 <a class="code" href="a04558.html#a11">uint32</a> *leftDest=((<a class="code" href="a04558.html#a11">uint32</a>*)&(bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+<a class="code" href="a04223.html#a632">width</a>+2; +00396 <a class="code" href="a04558.html#a11">uint32</a> *rightSrc=leftSrc+<a class="code" href="a04223.html#a632">width</a>-1; +00397 <a class="code" href="a04558.html#a11">uint32</a> *rightDest=leftDest+<a class="code" href="a04223.html#a632">width</a>+1; +00398 <a class="code" href="a04558.html#a15">uint</a> i; +00399 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a04223.html#a633">height</a>; i++) +00400 { +00401 <span class="comment">// Copy the borders</span> +00402 *leftDest=*leftSrc; +00403 *rightDest=*rightSrc; +00404 +00405 <span class="comment">// Move pointers</span> +00406 leftDest+=<a class="code" href="a04223.html#a632">width</a>+2; +00407 rightDest+=<a class="code" href="a04223.html#a632">width</a>+2; +00408 leftSrc+=<a class="code" href="a04223.html#a632">width</a>; +00409 rightSrc+=<a class="code" href="a04223.html#a632">width</a>; +00410 } +00411 +00412 <span class="comment">// Make corners</span> +00413 +00414 <span class="comment">// Left top</span> +00415 *(<a class="code" href="a04558.html#a11">uint32</a>*)&(bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0])=*(<a class="code" href="a04558.html#a11">uint32</a>*)&(copy.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]); +00416 +00417 <span class="comment">// Rigth top</span> +00418 *(((<a class="code" href="a04558.html#a11">uint32</a>*)&(bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+<a class="code" href="a04223.html#a632">width</a>+1)=*(((<a class="code" href="a04558.html#a11">uint32</a>*)&(copy.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+<a class="code" href="a04223.html#a632">width</a>-1); +00419 +00420 <span class="comment">// Rigth bottom</span> +00421 *(((<a class="code" href="a04558.html#a11">uint32</a>*)&(bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+(<a class="code" href="a04223.html#a632">width</a>+2)*(<a class="code" href="a04223.html#a633">height</a>+2)-1)=*(((<a class="code" href="a04558.html#a11">uint32</a>*)&(copy.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+<a class="code" href="a04223.html#a632">width</a>*<a class="code" href="a04223.html#a633">height</a>-1); +00422 +00423 <span class="comment">// Left bottom</span> +00424 *(((<a class="code" href="a04558.html#a11">uint32</a>*)&(bitmap.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+(<a class="code" href="a04223.html#a632">width</a>+2)*(<a class="code" href="a04223.html#a633">height</a>+1))=*(((<a class="code" href="a04558.html#a11">uint32</a>*)&(copy.<a class="code" href="a02268.html#NL3D_1_1ITexturez1927_1">getPixels</a>()[0]))+<a class="code" href="a04223.html#a632">width</a>*(<a class="code" href="a04223.html#a633">height</a>-1)); +00425 } +00426 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CCoarseMeshBuildd2" doxytag="NL3D::CCoarseMeshBuild::remapCoordinates" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CCoarseMeshBuild::remapCoordinates </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a02369.html">CCoarseMeshDesc</a> > & </td> + <td class="mdname" nowrap> <em>coarseMeshes</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a02367.html#NL3D_1_1CCoarseMeshBuildy0">MapBitmapDesc</a> & </td> + <td class="mdname" nowrap> <em>desc</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname" nowrap> <em>outputBitmapCount</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05567.html#l00430">430</a> of file <a class="el" href="a05567.html">coarse_mesh_build.cpp</a>. +<p> +References <a class="el" href="a05568.html#l00122">NL3D::CCoarseMeshBuild::CBitmapDesc::FactorU</a>, <a class="el" href="a05568.html#l00123">NL3D::CCoarseMeshBuild::CBitmapDesc::FactorV</a>, <a class="el" href="a05992.html#l00179">NL3D::CMeshBase::getMaterial()</a>, <a class="el" href="a05990.html#l00393">NL3D::CMeshGeom::getNbMatrixBlock()</a>, <a class="el" href="a05990.html#l00398">NL3D::CMeshGeom::getNbRdrPass()</a>, <a class="el" href="a06198.html#l00141">NL3D::CPrimitiveBlock::getNumQuad()</a>, <a class="el" href="a06198.html#l00108">NL3D::CPrimitiveBlock::getNumTri()</a>, <a class="el" href="a06197.html#l00149">NL3D::CPrimitiveBlock::getQuadPointer()</a>, <a class="el" href="a05990.html#l00413">NL3D::CMeshGeom::getRdrPassMaterial()</a>, <a class="el" href="a05990.html#l00404">NL3D::CMeshGeom::getRdrPassPrimitiveBlock()</a>, <a class="el" href="a06506.html#l00338">NL3D::ITexture::getShareName()</a>, <a class="el" href="a06710.html#l00497">NL3D::CVertexBuffer::getTexCoordPointer()</a>, <a class="el" href="a05641.html#l00046">NL3D::CMaterial::getTexture()</a>, <a class="el" href="a06197.html#l00091">NL3D::CPrimitiveBlock::getTriPointer()</a>, <a class="el" href="a05990.html#l00390">NL3D::CMeshGeom::getVertexBuffer()</a>, <a class="el" href="a05646.html#l00225">index</a>, <a class="el" href="a05568.html#l00132">MapBitmapDesc</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06506.html#l00360">NL3D::ITexture::selectTexture()</a>, <a class="el" href="a05586.html#l00536">NLMISC::strlwr()</a>, <a class="el" href="a06506.html#l00332">NL3D::ITexture::supportSharing()</a>, <a class="el" href="a06229.html#l02652">NLMISC::toString()</a>, <a class="el" href="a05568.html#l00118">NL3D::CCoarseMeshBuild::CBitmapDesc::U</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a05568.html#l00119">NL3D::CCoarseMeshBuild::CBitmapDesc::V</a>. +<p> +Referenced by <a class="el" href="a05567.html#l00039">build()</a>. +<p> +<div class="fragment"><pre>00431 { +00432 <span class="comment">// 1. scan each bitmap: calc the area of the bitmap and it its name in the maps sorted by area</span> +00433 <span class="keyword">typedef</span> std::multimap<float, CBitmapDesc> MapAreaBitmap; +00434 MapAreaBitmap mapArea; +00435 <a class="code" href="a04558.html#a15">uint</a> mesh; +00436 <span class="keywordflow">for</span> (mesh=0; mesh<coarseMeshes.size(); mesh++) +00437 { +00438 <span class="comment">// Geom mesh pointer</span> +00439 CMeshGeom *meshGeom=coarseMeshes[mesh].MeshGeom; +00440 +00441 <span class="comment">// Base mesh pointer</span> +00442 <span class="keyword">const</span> CMeshBase *meshBase=coarseMeshes[mesh].MeshBase; +00443 +00444 <span class="comment">// The vertex buffer</span> +00445 CVertexBuffer &vertexBuffer=const_cast<CVertexBuffer&> (meshGeom->getVertexBuffer()); +00446 +00447 <span class="comment">// For each matrix block</span> +00448 <a class="code" href="a04558.html#a15">uint</a> matrixBlock; +00449 <a class="code" href="a04558.html#a15">uint</a> nbMatrixBlock=meshGeom->getNbMatrixBlock(); +00450 <span class="keywordflow">for</span> (matrixBlock=0; matrixBlock<nbMatrixBlock; matrixBlock++) +00451 { +00452 <span class="comment">// For each render pass</span> +00453 <a class="code" href="a04558.html#a15">uint</a> renderPass; +00454 <a class="code" href="a04558.html#a15">uint</a> numRenderPass=meshGeom->getNbRdrPass(matrixBlock); +00455 <span class="keywordflow">for</span> (renderPass=0; renderPass<numRenderPass; renderPass++) +00456 { +00457 <span class="comment">// Render pass material</span> +00458 <a class="code" href="a04558.html#a11">uint32</a> matId=meshGeom->getRdrPassMaterial(matrixBlock, renderPass); +00459 +00460 <span class="comment">// Checks</span> +00461 <a class="code" href="a04199.html#a6">nlassert</a> (matId<meshBase->getNbMaterial()); +00462 +00463 <span class="comment">// Get the material</span> +00464 <span class="keyword">const</span> CMaterial &material=meshBase->getMaterial(matId); +00465 +00466 <span class="comment">// Get the texture</span> +00467 ITexture *texture=material.getTexture(0); +00468 <span class="keywordflow">if</span> (texture) +00469 { +00470 <span class="comment">// Get its name</span> +00471 std::string name; +00472 <a class="code" href="a04558.html#a15">uint</a> i; +00473 <span class="keywordflow">for</span> (i=0; i<outputBitmapCount; i++) +00474 { +00475 <span class="comment">// Select the good slot</span> +00476 texture->selectTexture (i); +00477 +00478 <span class="comment">// Get its name</span> +00479 <span class="keywordflow">if</span> (texture->supportSharing()) +00480 { +00481 <span class="comment">// Get sharing name</span> +00482 name+=<a class="code" href="a05378.html#a273">strlwr</a>(texture->getShareName()); +00483 } +00484 <span class="keywordflow">else</span> +00485 { +00486 <span class="comment">// Build a name</span> +00487 name+=<a class="code" href="a05378.html#a244">toString</a> ((<a class="code" href="a04558.html#a15">uint</a>)texture); +00488 } +00489 } +00490 +00491 <span class="comment">// Find the texture</span> +00492 MapBitmapDesc::const_iterator ite=desc.find (name); +00493 <a class="code" href="a04199.html#a6">nlassert</a> (ite!=desc.end()); +00494 +00495 <span class="comment">// Descriptor ref</span> +00496 <span class="keyword">const</span> CBitmapDesc& descBitmap=ite->second; +00497 +00498 <span class="comment">// Get primitives</span> +00499 <span class="keyword">const</span> CPrimitiveBlock &primitiveBlock=meshGeom->getRdrPassPrimitiveBlock(matrixBlock,renderPass); +00500 +00501 <span class="comment">// Set of vertex to remap</span> +00502 std::set<uint> vertexToRemap; +00503 +00504 <span class="comment">// Remap triangles</span> +00505 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a566">index</a>; +00506 <span class="keyword">const</span> <a class="code" href="a04558.html#a11">uint32</a> *indexPtr=primitiveBlock.getTriPointer(); +00507 <a class="code" href="a04558.html#a11">uint32</a> numIndex=3*primitiveBlock.getNumTri(); +00508 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a566">index</a>=0; <a class="code" href="a04223.html#a566">index</a><numIndex; <a class="code" href="a04223.html#a566">index</a>++) +00509 vertexToRemap.insert (indexPtr[index]); +00510 +00511 <span class="comment">// Remap quad</span> +00512 indexPtr=primitiveBlock.getQuadPointer(); +00513 numIndex=4*primitiveBlock.getNumQuad(); +00514 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a566">index</a>=0; <a class="code" href="a04223.html#a566">index</a><numIndex; <a class="code" href="a04223.html#a566">index</a>++) +00515 vertexToRemap.insert (indexPtr[index]); +00516 +00517 <span class="comment">// Remap the vertex</span> +00518 std::set<uint>::iterator iteRemap=vertexToRemap.begin(); +00519 <span class="keywordflow">while</span> (iteRemap!=vertexToRemap.end()) +00520 { +00521 <span class="comment">// Remap the vertex</span> +00522 <span class="keywordtype">float</span> *UVCoordinate=(<span class="keywordtype">float</span>*)vertexBuffer.getTexCoordPointer(*iteRemap); +00523 UVCoordinate[0]=UVCoordinate[0]*descBitmap.FactorU+descBitmap.U; +00524 UVCoordinate[1]=UVCoordinate[1]*descBitmap.FactorV+descBitmap.V; +00525 +00526 <span class="comment">// Next vertex</span> +00527 iteRemap++; +00528 } +00529 } +00530 } +00531 } +00532 } +00533 } +</pre></div> </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following files:<ul> +<li><a class="el" href="a05568.html">coarse_mesh_build.h</a><li><a class="el" href="a05567.html">coarse_mesh_build.cpp</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:45:23 2004 for NeL by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 > +</a>1.3.6 </small></address> +</body> +</html> |