\hypertarget{a00815}{\section{A\+C\+G\+:\+:Mesh\+Compiler Class Reference}
\label{a00815}\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a00281}{Adjacency\+List}
\item 
struct \hyperlink{a01263}{Subset}
\item 
struct \hyperlink{a01423}{Vertex\+Element\+Input}
\item 
struct \hyperlink{a01436}{Vertex\+Splitter}
\item 
struct \hyperlink{a01478}{Weld\+List}
\item 
struct \hyperlink{a01480}{Weld\+List\+Entry}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00815_afb3f33edc5989888639af47f772f80a7}{{\bfseries Mesh\+Compiler} (const \hyperlink{a01417}{Vertex\+Declaration} \&\+\_\+decl)}\label{a00815_afb3f33edc5989888639af47f772f80a7}

\item 
void \hyperlink{a00815_a923647a607f246c186c002bfb356e921}{get\+Index\+Adj\+Buffer\+\_\+\+M\+T} (void $\ast$\+\_\+dst, const int \+\_\+border\+Index=-\/1)
\begin{DoxyCompactList}\small\item\em Multi-\/threaded version of get\+Index\+Adj\+Buffer. \end{DoxyCompactList}\item 
\hypertarget{a00815_a0b5a24d02f23b7a33f51008614c8bdd1}{void \hyperlink{a00815_a0b5a24d02f23b7a33f51008614c8bdd1}{dbgdump} (const char $\ast$\+\_\+filename) const }\label{a00815_a0b5a24d02f23b7a33f51008614c8bdd1}

\begin{DoxyCompactList}\small\item\em dump mesh info to text file \end{DoxyCompactList}\item 
\hypertarget{a00815_a7a6b68b3efbb4638d97d908fb4603459}{void \hyperlink{a00815_a7a6b68b3efbb4638d97d908fb4603459}{dbgdump\+Obj} (const char $\ast$\+\_\+filename) const }\label{a00815_a7a6b68b3efbb4638d97d908fb4603459}

\begin{DoxyCompactList}\small\item\em dump mesh in wavefront obj format \end{DoxyCompactList}\item 
\hypertarget{a00815_a81ef576f5268dd518b460f5398718b7e}{void \hyperlink{a00815_a81ef576f5268dd518b460f5398718b7e}{dbgdump\+Input\+Bin} (const char $\ast$\+\_\+filename, bool \+\_\+seperate\+Files=false) const }\label{a00815_a81ef576f5268dd518b460f5398718b7e}

\begin{DoxyCompactList}\small\item\em dump input mesh to binary file format \end{DoxyCompactList}\item 
\hypertarget{a00815_a3c9e9f8e6e94f1c629da06532441d4f1}{void \hyperlink{a00815_a3c9e9f8e6e94f1c629da06532441d4f1}{dbgdump\+Input\+Obj} (const char $\ast$\+\_\+filename) const }\label{a00815_a3c9e9f8e6e94f1c629da06532441d4f1}

\begin{DoxyCompactList}\small\item\em dump input mesh to wavefront obj format \end{DoxyCompactList}\item 
\hypertarget{a00815_a83eb6684f170a75992fc6ab662d46315}{void \hyperlink{a00815_a83eb6684f170a75992fc6ab662d46315}{dbgdump\+Adj\+List} (const char $\ast$\+\_\+filename) const }\label{a00815_a83eb6684f170a75992fc6ab662d46315}

\begin{DoxyCompactList}\small\item\em dump adjacency list to text file \end{DoxyCompactList}\item 
\hypertarget{a00815_af3712c3a4c4f48fb689e914b3a8c6495}{bool \hyperlink{a00815_af3712c3a4c4f48fb689e914b3a8c6495}{dbg\+Verify} (const char $\ast$\+\_\+filename) const }\label{a00815_af3712c3a4c4f48fb689e914b3a8c6495}

\begin{DoxyCompactList}\small\item\em test correctness of input $<$-\/$>$ output id mappings, unshared per face vertex.. logs errors in file \end{DoxyCompactList}\item 
\hypertarget{a00815_ae6a1bdca73e0cfda5836345e6ae9d835}{std\+::string \hyperlink{a00815_ae6a1bdca73e0cfda5836345e6ae9d835}{vertex\+To\+String} (const void $\ast$v) const }\label{a00815_ae6a1bdca73e0cfda5836345e6ae9d835}

\begin{DoxyCompactList}\small\item\em interpret vertex data according declaration and write to string \end{DoxyCompactList}\item 
size\+\_\+t \hyperlink{a00815_ad0672908f8922230a7c3e6ca669862f8}{get\+Memory\+Usage} (bool \+\_\+print\+Console=true) const 
\item 
\hypertarget{a00815_af7768eaf5bdd84b64a2f63e18433178a}{std\+::string \hyperlink{a00815_af7768eaf5bdd84b64a2f63e18433178a}{check\+Input\+Data} () const }\label{a00815_af7768eaf5bdd84b64a2f63e18433178a}

\begin{DoxyCompactList}\small\item\em check for errors in input data \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}{\bf Vertex Data Input}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a00815_ac90ec94f53c7796e59fb463da9b77158}{set\+Vertices} (int \+\_\+num, const void $\ast$\+\_\+data, int \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{a00815_a0b990ba59cef3b696ae43ad43c288a86}{set\+Normals} (int \+\_\+num, const void $\ast$\+\_\+data, int \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{a00815_a6950e6081977ee532da7ac8fd8c89e42}{set\+Tex\+Coords} (int \+\_\+num, const void $\ast$\+\_\+data, int \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{a00815_a363f68490ef812f56173862cfd8a7db5}{set\+Attrib\+Vec} (int \+\_\+attr\+Idx, int \+\_\+num, const void $\ast$\+\_\+data, int \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{a00815_ae3ecd67df4f8c8b9be4d45bdede86e1e}{set\+Attrib} (int \+\_\+attr\+Idx, int \+\_\+v, const void $\ast$\+\_\+data)
\item 
int \hyperlink{a00815_adf8bdd335e8d8955038974e1a1772f99}{get\+Num\+Input\+Attributes} (int \+\_\+attr\+Idx) const 
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Flexible Face Data Input}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a00815_a4dd0a9c4b7ef707c16adb67d07124464}{set\+Face\+Input} (\hyperlink{a00820}{Mesh\+Compiler\+Face\+Input} $\ast$\+\_\+face\+Input)
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Default Face Data Input}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a00815_abf1cc276e43a44a8770c01a8e1c1bd05}{set\+Num\+Faces} (const int \+\_\+num\+Faces, const int \+\_\+num\+Indices)
\begin{DoxyCompactList}\small\item\em Set number of faces and indices if known by user. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a5e0360be261dac148d70bf10d0a05185}{set\+Index\+Buffer\+Interleaved} (int \+\_\+num\+Tris, int \+\_\+index\+Size, const void $\ast$\+\_\+indices)
\begin{DoxyCompactList}\small\item\em Set index buffer for a triangle mesh. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a76478052dd3603614b040c24f80a26ef}{set\+Face\+Verts} (int \+\_\+i, int \+\_\+v0, int \+\_\+v1, int \+\_\+v2)
\begin{DoxyCompactList}\small\item\em Set vertex ids per triangle. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a5eb36ea1e6f941acf0c454858a66bc8c}{set\+Face\+Verts} (int \+\_\+i, int \+\_\+face\+Size, int $\ast$\+\_\+v)
\begin{DoxyCompactList}\small\item\em Set vertex ids per face. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a98e2e73d7c9bcd2bfaaf970e745f2d6e}{set\+Face\+Normals} (int \+\_\+i, int \+\_\+v0, int \+\_\+v1, int \+\_\+v2)
\begin{DoxyCompactList}\small\item\em Set normal ids per triangle. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a419351cd1226ba757c36b2bd208ba96e}{set\+Face\+Normals} (int \+\_\+i, int \+\_\+face\+Size, int $\ast$\+\_\+v)
\begin{DoxyCompactList}\small\item\em Set normal ids per face. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a4cab29f5592daa00852ce8a10b946dec}{set\+Face\+Tex\+Coords} (int \+\_\+i, int \+\_\+v0, int \+\_\+v1, int \+\_\+v2)
\begin{DoxyCompactList}\small\item\em Set texcoord ids per triangle. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a391448dc21df2bfc68787ccedf5e4a6b}{set\+Face\+Tex\+Coords} (int \+\_\+i, int \+\_\+face\+Size, int $\ast$\+\_\+v)
\begin{DoxyCompactList}\small\item\em Set texcoord ids per face. \end{DoxyCompactList}\item 
void \hyperlink{a00815_ad5f6f5fb1cee6d97f0092c4405973ca3}{set\+Face\+Attrib} (int \+\_\+i, int \+\_\+v0, int \+\_\+v1, int \+\_\+v2, int \+\_\+attr\+I\+D)
\begin{DoxyCompactList}\small\item\em Set attribute ids per triangle. \end{DoxyCompactList}\item 
void \hyperlink{a00815_afc2c2f0b8055be2afb2f8c021e5bc644}{set\+Face\+Attrib} (int \+\_\+i, int \+\_\+face\+Size, int $\ast$\+\_\+v, int \+\_\+attr\+I\+D)
\begin{DoxyCompactList}\small\item\em Set attribute ids per face. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Face Grouping and Subsets}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a00815_a1910b3b2d47a502fa6a728722969f506}{set\+Face\+Group} (int \+\_\+i, short \+\_\+group\+I\+D)
\begin{DoxyCompactList}\small\item\em Specify face groups. \end{DoxyCompactList}\item 
int \hyperlink{a00815_a52a9420e23c711b40e9395e0c40ba1fb}{find\+Group\+Subset} (int \+\_\+group\+I\+D)
\begin{DoxyCompactList}\small\item\em get subset I\+D of a group \end{DoxyCompactList}\item 
int \hyperlink{a00815_a6387c60c973446ab5d4d11934ee779a3}{get\+Face\+Group} (int \+\_\+face\+I\+D) const 
\begin{DoxyCompactList}\small\item\em Get Face Group of the given face. \end{DoxyCompactList}\item 
int \hyperlink{a00815_ab23f5caf4455d6bf1cf55cf0fa3f8821}{get\+Tri\+Group} (int \+\_\+tri\+I\+D) const 
\begin{DoxyCompactList}\small\item\em Get Group Id of the triangle. \end{DoxyCompactList}\item 
int \hyperlink{a00815_aa6f93ed8be39552c32f612431ed7a385}{get\+Num\+Subsets} () const 
\begin{DoxyCompactList}\small\item\em Get the number of subsets. \end{DoxyCompactList}\item 
const \hyperlink{a01263}{Subset} $\ast$ \hyperlink{a00815_aa2a1ab37e4bc21a9e84d24da2bc1f46d}{get\+Subset} (int \+\_\+i) const 
\begin{DoxyCompactList}\small\item\em get a specific subset \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Mesh Compilation}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a00815_a9ccef4e10e89c0f02640c11b2497c4fa}{build} (bool \+\_\+weld\+Vertices=false, bool \+\_\+optimize\+V\+Cache=true, bool \+\_\+need\+Per\+Face\+Attribute=false, bool \+\_\+keep\+Isolated\+Vertices=false)
\begin{DoxyCompactList}\small\item\em Build vertex + index buffer. \end{DoxyCompactList}\item 
int \hyperlink{a00815_a828b22f97d142ad887c4b010d1a30f96}{get\+Num\+Vertices} () const 
\item 
void \hyperlink{a00815_a364ede2f503870c1ab33a6d13d286ee8}{set\+Provoking\+Vertex} (int \+\_\+v)
\item 
int \hyperlink{a00815_acb90eac7ee3cbe7fd5b7c9b0031e2081}{get\+Provoking\+Vertex} () const 
\item 
void \hyperlink{a00815_a87186ca21b5a3ef6952581bedd579286}{get\+Vertex\+Buffer} (void $\ast$\+\_\+dst, const int \+\_\+offset=0, const int \+\_\+range=-\/1)
\begin{DoxyCompactList}\small\item\em Get vertex buffer ready for rendering. \end{DoxyCompactList}\item 
const int $\ast$ \hyperlink{a00815_a32640b6563877f85d7d4beffba7a9765}{get\+Index\+Buffer} () const 
\item 
void \hyperlink{a00815_a84816d9e407bbb5384f4fd3b2c943493}{get\+Index\+Adj\+Buffer} (void $\ast$\+\_\+dst, const int \+\_\+border\+Index=-\/1)
\begin{DoxyCompactList}\small\item\em Get index buffer with adjacency information ready for rendering. \end{DoxyCompactList}\item 
void \hyperlink{a00815_a5d738a119a02b0469be28b87ed71fdf9}{get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force} (void $\ast$\+\_\+dst, const int \+\_\+border\+Index=-\/1)
\begin{DoxyCompactList}\small\item\em Slow brute-\/force version of get\+Index\+Adj\+Buffer. \end{DoxyCompactList}\item 
int \hyperlink{a00815_af03c51eeff1e92ddb7d6c20e5a6312a0}{get\+Num\+Triangles} () const 
\item 
int \hyperlink{a00815_a92c5b1ee3e8a5acb192406757a95b86e}{get\+Num\+Faces} () const 
\item 
int \hyperlink{a00815_ad5bedb289cebb76a15aa3840afbb0e22}{get\+Face\+Size} (const int \+\_\+i) const 
\begin{DoxyCompactList}\small\item\em Get size of input face. \end{DoxyCompactList}\item 
const \hyperlink{a01417}{Vertex\+Declaration} $\ast$ \hyperlink{a00815_af55b759593a7e60b7a94bfdcfef360a7}{get\+Vertex\+Declaration} () const 
\item 
void \hyperlink{a00815_aa27c760d823899e7a07bc28795976127}{get\+Vertex} (int \+\_\+id, void $\ast$\+\_\+out) const 
\item 
int \hyperlink{a00815_a49aaa7a9fda01721fb71c4711ee40118}{get\+Index} (int \+\_\+i) const 
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Input/\+Output I\+D mapping}\par
\begin{DoxyCompactItemize}
\item 
int \hyperlink{a00815_a4b1f4f5be85c0be01563e25b99ec790b}{map\+To\+Original\+Vertex\+I\+D} (const int \+\_\+i, int \&\+\_\+face\+I\+D, int \&\+\_\+corner\+I\+D) const 
\item 
int \hyperlink{a00815_ac09ebb6d82fba1fe48dbb8c6877d1d44}{map\+To\+Original\+Face\+I\+D} (const int \+\_\+tri\+I\+D) const 
\item 
const int $\ast$ \hyperlink{a00815_a3e66da25ae543ddcadbf11bf510e8165}{map\+To\+Original\+Face\+I\+D\+Ptr} () const 
\item 
int \hyperlink{a00815_a8c3f0f3c172da409f060d210133ee010}{map\+To\+Draw\+Vertex\+I\+D} (const int \+\_\+face\+I\+D, const int \+\_\+corner\+I\+D) const 
\item 
int \hyperlink{a00815_acc8b0313fca811f31e372c3838e7ab69}{map\+To\+Draw\+Tri\+I\+D} (const int \+\_\+face\+I\+D, const int \+\_\+k=0, int $\ast$\+\_\+num\+Tris\+Out=0) const 
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Triangulation properties}\par
\begin{DoxyCompactItemize}
\item 
bool \hyperlink{a00815_a290e699448b02500cc07890420a0071a}{is\+Triangle\+Mesh} () const 
\item 
bool \hyperlink{a00815_a6e2a7c0aea95dcedf927638554bf33c1}{is\+Face\+Edge} (const int \+\_\+tri\+I\+D, const int \+\_\+edge) const 
\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00815_a7f0e1bfd3f5b80ec3445fcfdbc99ac23}{void {\bfseries compute\+Adjacency} ()}\label{a00815_a7f0e1bfd3f5b80ec3445fcfdbc99ac23}

\item 
\hypertarget{a00815_a1805849258dbb50a1612d4d669982046}{void {\bfseries split\+Vertices} ()}\label{a00815_a1805849258dbb50a1612d4d669982046}

\item 
void \hyperlink{a00815_a24f3fce6b2bd90f840e45152774b53e9}{get\+Input\+Face\+Vertex} (const int \+\_\+face, const int \+\_\+corner, int $\ast$\+\_\+out) const 
\item 
void \hyperlink{a00815_a8a62e985325c0f102137a90ec3c02493}{get\+Input\+Face\+Vertex\+\_\+\+Welded} (const int \+\_\+face, const int \+\_\+corner, int $\ast$\+\_\+out) const 
\item 
void \hyperlink{a00815_a8a7f912f706b89c2827f270afd214147}{get\+Input\+Face\+Vertex\+Data} (const int \+\_\+face, const int \+\_\+corner, void $\ast$\+\_\+out) const 
\item 
\hypertarget{a00815_ad1b125912d511df9b01ff8e02a929824}{int {\bfseries get\+Input\+Index} (const int \&\+\_\+face, const int \&\+\_\+corner, const int \&\+\_\+attr\+Id) const }\label{a00815_ad1b125912d511df9b01ff8e02a929824}

\item 
\hypertarget{a00815_a5358b32c3c637e81a91a71006053300a}{int {\bfseries get\+Adj\+Vertex\+Face\+Count} (int \+\_\+vertex\+I\+D) const }\label{a00815_a5358b32c3c637e81a91a71006053300a}

\item 
\hypertarget{a00815_a1733ae056ea813bc552bec852b261909}{int {\bfseries get\+Adj\+Vertex\+Face} (int \+\_\+vertex\+I\+D, int \+\_\+k) const }\label{a00815_a1733ae056ea813bc552bec852b261909}

\item 
\hypertarget{a00815_a0b1f018eaa182528e26ea80d9fffbf0d}{int {\bfseries get\+Input\+Index\+Split} (const int \+\_\+face, const int \+\_\+corner) const }\label{a00815_a0b1f018eaa182528e26ea80d9fffbf0d}

\item 
\hypertarget{a00815_ae8cf994ae3da1a925397d624d1e077f1}{void {\bfseries set\+Input\+Index\+Split} (const int \+\_\+face, const int \+\_\+corner, const int \+\_\+val)}\label{a00815_ae8cf994ae3da1a925397d624d1e077f1}

\item 
\hypertarget{a00815_a256da466a4600a0d519e9eb026c9260f}{int {\bfseries map\+Tri\+To\+Input\+Face} (const int \+\_\+tri) const }\label{a00815_a256da466a4600a0d519e9eb026c9260f}

\item 
\hypertarget{a00815_a1f0462badf4b82b0847c6d785046d12e}{int {\bfseries get\+Input\+Index\+Offset} (const int \+\_\+face, const int \+\_\+corner) const }\label{a00815_a1f0462badf4b82b0847c6d785046d12e}

\item 
\hypertarget{a00815_a9c03ba014a8884df26f68788fdd82390}{int {\bfseries get\+Input\+Face\+Offset} (const int \+\_\+face) const }\label{a00815_a9c03ba014a8884df26f68788fdd82390}

\item 
\hypertarget{a00815_a29c063e6af0111770eae41ea0f498a62}{void \hyperlink{a00815_a29c063e6af0111770eae41ea0f498a62}{prepare\+Data} ()}\label{a00815_a29c063e6af0111770eae41ea0f498a62}

\begin{DoxyCompactList}\small\item\em \hyperlink{a00815_a9ccef4e10e89c0f02640c11b2497c4fa}{build()} preparation \end{DoxyCompactList}\item 
\hypertarget{a00815_ab5efefdb00e10e41027c52ee9ad37402}{void {\bfseries find\+Isolated\+Vertices} ()}\label{a00815_ab5efefdb00e10e41027c52ee9ad37402}

\item 
\hypertarget{a00815_afe88339d5c4520f2604b43ca76237c19}{void {\bfseries force\+Unshared\+Face\+Vertex} ()}\label{a00815_afe88339d5c4520f2604b43ca76237c19}

\item 
\hypertarget{a00815_a856f61497a37d35fe654320aa3903f96}{void {\bfseries weld\+Vertices} ()}\label{a00815_a856f61497a37d35fe654320aa3903f96}

\item 
\hypertarget{a00815_a730c54d502f888f0aec919f5d514b4f4}{void {\bfseries fix\+Weld\+Map} ()}\label{a00815_a730c54d502f888f0aec919f5d514b4f4}

\item 
\hypertarget{a00815_a2635ce68766299d936c61a3866e686eb}{void {\bfseries triangulate} ()}\label{a00815_a2635ce68766299d936c61a3866e686eb}

\item 
\hypertarget{a00815_a3f97b37bd174b9a43d991d82e6f0b013}{void {\bfseries resolve\+Triangulation} ()}\label{a00815_a3f97b37bd174b9a43d991d82e6f0b013}

\item 
\hypertarget{a00815_a975fe9579ca0dc355ab6761ab14dfb51}{void {\bfseries sort\+Faces\+By\+Group} ()}\label{a00815_a975fe9579ca0dc355ab6761ab14dfb51}

\item 
\hypertarget{a00815_a347eeab73881bd5e0e406ce7fc0e1c3c}{void {\bfseries optimize} ()}\label{a00815_a347eeab73881bd5e0e406ce7fc0e1c3c}

\item 
\hypertarget{a00815_ae4ff88f5b252247e792844648bae050d}{void {\bfseries create\+Vertex\+Map} (bool \+\_\+keep\+Isolated\+Verts)}\label{a00815_ae4ff88f5b252247e792844648bae050d}

\item 
\hypertarget{a00815_ac396aa3410cf8ee80ac1038c10a4e931}{void {\bfseries create\+Face\+Map} ()}\label{a00815_ac396aa3410cf8ee80ac1038c10a4e931}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00815_a945e41e05888cb8bbfba900a6d047e0e}{\hyperlink{a01423}{Vertex\+Element\+Input} {\bfseries input\+\_\+} \mbox{[}16\mbox{]}}\label{a00815_a945e41e05888cb8bbfba900a6d047e0e}

\item 
\hypertarget{a00815_a2fa91199f73ffa9409c2d001f9fbd895}{int {\bfseries input\+I\+D\+Pos\+\_\+}}\label{a00815_a2fa91199f73ffa9409c2d001f9fbd895}

\item 
\hypertarget{a00815_acfc808bdbb057733a6aee3322bb0f58e}{int {\bfseries input\+I\+D\+Norm\+\_\+}}\label{a00815_acfc808bdbb057733a6aee3322bb0f58e}

\item 
\hypertarget{a00815_a81ed72333d7c5e13c597b77df240dbd6}{int {\bfseries input\+I\+D\+Tex\+C\+\_\+}}\label{a00815_a81ed72333d7c5e13c597b77df240dbd6}

\item 
\hypertarget{a00815_a17b2c9986d17aa5483c0c4955af3de3a}{int {\bfseries num\+Attributes\+\_\+}}\label{a00815_a17b2c9986d17aa5483c0c4955af3de3a}

\item 
\hypertarget{a00815_ae1d1bdbbfa1342915e1a81ce27065de2}{\hyperlink{a01417}{Vertex\+Declaration} {\bfseries decl\+\_\+}}\label{a00815_ae1d1bdbbfa1342915e1a81ce27065de2}

\item 
\hypertarget{a00815_a6e899cad50c8479d3a1482431b7eb454}{int {\bfseries num\+Faces\+\_\+}}\label{a00815_a6e899cad50c8479d3a1482431b7eb454}

\item 
\hypertarget{a00815_a7a600dff1eadda6c62aec5a7a37c84f9}{int {\bfseries num\+Indices\+\_\+}}\label{a00815_a7a600dff1eadda6c62aec5a7a37c84f9}

\item 
\hypertarget{a00815_afaafe6bf5b52a139c3ef45dd0cd83f2b}{std\+::vector$<$ int $>$ {\bfseries face\+Start\+\_\+}}\label{a00815_afaafe6bf5b52a139c3ef45dd0cd83f2b}

\item 
\hypertarget{a00815_a4b9deb254f1e19d3326dff3fde662198}{std\+::vector$<$ int $>$ {\bfseries face\+Size\+\_\+}}\label{a00815_a4b9deb254f1e19d3326dff3fde662198}

\item 
\hypertarget{a00815_a533b8f2fd42fdd2fe472fae86ff20303}{std\+::vector$<$ int $>$ {\bfseries face\+Data\+\_\+}}\label{a00815_a533b8f2fd42fdd2fe472fae86ff20303}

\item 
\hypertarget{a00815_a974cda701b0872673ecf544e85a777ad}{size\+\_\+t {\bfseries max\+Face\+Size\+\_\+}}\label{a00815_a974cda701b0872673ecf544e85a777ad}

\item 
\hypertarget{a00815_a210c4be80b5a2f90e96a6bd002fc4f64}{bool {\bfseries constant\+Face\+Size\+\_\+}}\label{a00815_a210c4be80b5a2f90e96a6bd002fc4f64}

\item 
\hypertarget{a00815_a6fead713277d03d6ca0f6e03a746ce74}{std\+::vector$<$ short $>$ {\bfseries face\+Group\+I\+Ds\+\_\+}}\label{a00815_a6fead713277d03d6ca0f6e03a746ce74}

\item 
\hypertarget{a00815_a8a25385546dd003fc3da301aeb361bee}{int {\bfseries cur\+Face\+Input\+Pos\+\_\+}}\label{a00815_a8a25385546dd003fc3da301aeb361bee}

\item 
\hypertarget{a00815_afeedd223f2ece49e0f6346cd22a8cba9}{\hyperlink{a00820}{Mesh\+Compiler\+Face\+Input} $\ast$ {\bfseries face\+Input\+\_\+}}\label{a00815_afeedd223f2ece49e0f6346cd22a8cba9}

\item 
\hypertarget{a00815_ad9f2ddfa0c61b0f65184fac5bea2f183}{bool {\bfseries delete\+Face\+Inpute\+Data\+\_\+}}\label{a00815_ad9f2ddfa0c61b0f65184fac5bea2f183}

\item 
\hypertarget{a00815_adbb335304fa31ba2366192fc0476fdbc}{std\+::vector$<$ int $>$ {\bfseries face\+Buf\+Split\+\_\+}}\label{a00815_adbb335304fa31ba2366192fc0476fdbc}

\item 
\hypertarget{a00815_a8b9cb08a0030baee4e1b839a9daf9642}{std\+::vector$<$ int $>$ {\bfseries face\+Sort\+Map\+\_\+}}\label{a00815_a8b9cb08a0030baee4e1b839a9daf9642}

\item 
\hypertarget{a00815_aea72960338211806a85f43bd85d98d36}{int {\bfseries provoking\+Vertex\+\_\+}}\label{a00815_aea72960338211806a85f43bd85d98d36}

\item 
\hypertarget{a00815_a3ab1412610be95f9c63449c295c5aacf}{bool {\bfseries provoking\+Vertex\+Set\+By\+User\+\_\+}}\label{a00815_a3ab1412610be95f9c63449c295c5aacf}

\item 
\hypertarget{a00815_a7da1e3b5d253d022820c0aecd4803f00}{int {\bfseries num\+Tris\+\_\+}}\label{a00815_a7da1e3b5d253d022820c0aecd4803f00}

\item 
\hypertarget{a00815_aa0f33832c8688f4037fb5b8af609ed7b}{std\+::vector$<$ int $>$ {\bfseries tri\+Index\+Buffer\+\_\+}}\label{a00815_aa0f33832c8688f4037fb5b8af609ed7b}

\item 
\hypertarget{a00815_ac19794d68e2c3f4c51945dc82b31cb97}{std\+::vector$<$ int $>$ {\bfseries isolated\+Vertices\+\_\+}}\label{a00815_ac19794d68e2c3f4c51945dc82b31cb97}

\item 
\hypertarget{a00815_a9f38c38a4f93021fee1c79e0612fb58f}{int {\bfseries num\+Subsets\+\_\+}}\label{a00815_a9f38c38a4f93021fee1c79e0612fb58f}

\item 
\hypertarget{a00815_ab1a8fca2f84a4dd10d8abe5e8cd61744}{std\+::vector$<$ \hyperlink{a01263}{Subset} $>$ {\bfseries subsets\+\_\+}}\label{a00815_ab1a8fca2f84a4dd10d8abe5e8cd61744}

\item 
\hypertarget{a00815_a4eb8787b9a04d831aae8d21683420726}{std\+::map$<$ int, int $>$ {\bfseries subset\+I\+D\+Map\+\_\+}}\label{a00815_a4eb8787b9a04d831aae8d21683420726}

\item 
\hypertarget{a00815_a66bcd6d905e9746d590e9501f24d9528}{\hyperlink{a00281}{Adjacency\+List} {\bfseries adjacency\+Vert\+\_\+}}\label{a00815_a66bcd6d905e9746d590e9501f24d9528}

\item 
\hypertarget{a00815_aedf9f168ea5c8fa9c5541269d864044e}{\hyperlink{a00823}{Mesh\+Compiler\+Vertex\+Compare} $\ast$ {\bfseries vertex\+Compare\+\_\+}}\label{a00815_aedf9f168ea5c8fa9c5541269d864044e}

\item 
\hypertarget{a00815_a978da0a2f93db39e6165ecb8e867dfff}{std\+::vector$<$ int $>$ {\bfseries vertex\+Weld\+Map\+Face\+\_\+}}\label{a00815_a978da0a2f93db39e6165ecb8e867dfff}

\item 
\hypertarget{a00815_af47c9c9f007b58f5b287a32b4a9cf737}{std\+::vector$<$ int $>$ {\bfseries vertex\+Weld\+Map\+Corner\+\_\+}}\label{a00815_af47c9c9f007b58f5b287a32b4a9cf737}

\item 
\hypertarget{a00815_a7c98847b304a0ea4d2142058755a8be0}{\hyperlink{a01436}{Vertex\+Splitter} $\ast$ {\bfseries splitter\+\_\+}}\label{a00815_a7c98847b304a0ea4d2142058755a8be0}

\item 
\hypertarget{a00815_a51855527c6c589d61e7b839251bd3643}{std\+::vector$<$ int $>$ \hyperlink{a00815_a51855527c6c589d61e7b839251bd3643}{tri\+To\+Sort\+Face\+Map\+\_\+}}\label{a00815_a51855527c6c589d61e7b839251bd3643}

\begin{DoxyCompactList}\small\item\em maps from triangle I\+D to sorted face I\+D \end{DoxyCompactList}\item 
\hypertarget{a00815_a6a5b938fe21137d8109fb5fe093b5555}{std\+::vector$<$ int $>$ \hyperlink{a00815_a6a5b938fe21137d8109fb5fe093b5555}{tri\+Opt\+Map\+\_\+}}\label{a00815_a6a5b938fe21137d8109fb5fe093b5555}

\begin{DoxyCompactList}\small\item\em maps from optimized tri I\+D to unoptimized tri I\+D \end{DoxyCompactList}\item 
\hypertarget{a00815_abae5cfde3cf341a51bd19386c4054729}{std\+::vector$<$ int $>$ \hyperlink{a00815_abae5cfde3cf341a51bd19386c4054729}{vertex\+Map\+Face\+\_\+}}\label{a00815_abae5cfde3cf341a51bd19386c4054729}

\begin{DoxyCompactList}\small\item\em vertex index in vbo -\/$>$ input (face id, corner id) pair , also inverse of face\+Buf\+Split\+\_\+ \end{DoxyCompactList}\item 
\hypertarget{a00815_a9dc8bdfde14413731fce882cbe0a5327}{std\+::vector$<$ int $>$ {\bfseries vertex\+Map\+Corner\+\_\+}}\label{a00815_a9dc8bdfde14413731fce882cbe0a5327}

\item 
\hypertarget{a00815_a755bb750ed95d845403dfb1545dc6a45}{std\+::vector$<$ int $>$ \hyperlink{a00815_a755bb750ed95d845403dfb1545dc6a45}{face\+To\+Tri\+Map\+\_\+}}\label{a00815_a755bb750ed95d845403dfb1545dc6a45}

\begin{DoxyCompactList}\small\item\em input face index -\/$>$ output tri index \end{DoxyCompactList}\item 
\hypertarget{a00815_a2ceee16e6befb87103727bb8cccd438d}{std\+::vector$<$ int $>$ {\bfseries face\+To\+Tri\+Map\+Offset\+\_\+}}\label{a00815_a2ceee16e6befb87103727bb8cccd438d}

\item 
\hypertarget{a00815_a63e3c373463a66295a58ddc589b2970a}{std\+::vector$<$ int $>$ \hyperlink{a00815_a63e3c373463a66295a58ddc589b2970a}{tri\+To\+Face\+Map\+\_\+}}\label{a00815_a63e3c373463a66295a58ddc589b2970a}

\begin{DoxyCompactList}\small\item\em output tri index -\/$>$ input face index \end{DoxyCompactList}\item 
\hypertarget{a00815_a6bb0a9342b1794adefb437a2efb47f40}{int \hyperlink{a00815_a6bb0a9342b1794adefb437a2efb47f40}{num\+Draw\+Verts\+\_\+}}\label{a00815_a6bb0a9342b1794adefb437a2efb47f40}

\begin{DoxyCompactList}\small\item\em \subsection*{vertices in vbo}\end{DoxyCompactList}\item 
\hypertarget{a00815_aa5387fa192dfeaac48d68b2da6ac3c43}{int \hyperlink{a00815_aa5387fa192dfeaac48d68b2da6ac3c43}{num\+Isolated\+Verts\+\_\+}}\label{a00815_aa5387fa192dfeaac48d68b2da6ac3c43}

\begin{DoxyCompactList}\small\item\em \subsection*{isolated vertices}\end{DoxyCompactList}\item 
\hypertarget{a00815_acf43ff0f6387c335ae455bb854da4e10}{std\+::vector$<$ int $>$ \hyperlink{a00815_acf43ff0f6387c335ae455bb854da4e10}{indices\+\_\+}}\label{a00815_acf43ff0f6387c335ae455bb854da4e10}

\begin{DoxyCompactList}\small\item\em index buffer \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00815_aec426ea1514afbd45b2c13807c53d45e}{static \hyperlink{a00823}{Mesh\+Compiler\+Vertex\+Compare} {\bfseries default\+Vertex\+Compare}}\label{a00815_aec426ea1514afbd45b2c13807c53d45e}

\end{DoxyCompactItemize}


\subsection{Detailed Description}


Definition at line 246 of file Mesh\+Compiler.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00815_a9ccef4e10e89c0f02640c11b2497c4fa}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!build@{build}}
\index{build@{build}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{build}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::build (
\begin{DoxyParamCaption}
\item[{bool}]{\+\_\+weld\+Vertices = {\ttfamily false}, }
\item[{bool}]{\+\_\+optimize\+V\+Cache = {\ttfamily true}, }
\item[{bool}]{\+\_\+need\+Per\+Face\+Attribute = {\ttfamily false}, }
\item[{bool}]{\+\_\+keep\+Isolated\+Vertices = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{a00815_a9ccef4e10e89c0f02640c11b2497c4fa}


Build vertex + index buffer. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+weld\+Vertices} & Compare vertices and attempt to eliminate duplicates. High computation cost \\
\hline
{\em \+\_\+optimize\+V\+Cache} & Reorder faces for optimized vcache usage. High computation cost \\
\hline
{\em \+\_\+need\+Per\+Face\+Attribute} & User wants to set per-\/face attributes in draw vertex buffer. Per-\/face data can be stored in the provoking vertex of each face. Low computation cost \\
\hline
{\em \+\_\+keep\+Isolated\+Vertices} & Isolated vertices should not be discarded in the output vertex buffer \\
\hline
\end{DoxyParams}


Definition at line 1663 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a52a9420e23c711b40e9395e0c40ba1fb}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!find\+Group\+Subset@{find\+Group\+Subset}}
\index{find\+Group\+Subset@{find\+Group\+Subset}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{find\+Group\+Subset}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::find\+Group\+Subset (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+group\+I\+D}
\end{DoxyParamCaption}
)}}\label{a00815_a52a9420e23c711b40e9395e0c40ba1fb}


get subset I\+D of a group 


\begin{DoxyParams}{Parameters}
{\em \+\_\+group\+I\+D} & Id of the group \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{a01263}{Subset} Id 
\end{DoxyReturn}


Definition at line 1906 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a6387c60c973446ab5d4d11934ee779a3}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Face\+Group@{get\+Face\+Group}}
\index{get\+Face\+Group@{get\+Face\+Group}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Face\+Group}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Face\+Group (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+face\+I\+D}
\end{DoxyParamCaption}
) const}}\label{a00815_a6387c60c973446ab5d4d11934ee779a3}


Get Face Group of the given face. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+face\+I\+D} & Id of the face \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Group Id 
\end{DoxyReturn}


Definition at line 1898 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_ad5bedb289cebb76a15aa3840afbb0e22}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Face\+Size@{get\+Face\+Size}}
\index{get\+Face\+Size@{get\+Face\+Size}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Face\+Size}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Face\+Size (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+i}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00815_ad5bedb289cebb76a15aa3840afbb0e22}


Get size of input face. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Index \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Size 
\end{DoxyReturn}


Definition at line 604 of file Mesh\+Compiler.\+hh.

\hypertarget{a00815_a49aaa7a9fda01721fb71c4711ee40118}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Index@{get\+Index}}
\index{get\+Index@{get\+Index}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Index}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i}
\end{DoxyParamCaption}
) const}}\label{a00815_a49aaa7a9fda01721fb71c4711ee40118}
Get index in final draw index buffer. 

Definition at line 2999 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a84816d9e407bbb5384f4fd3b2c943493}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Index\+Adj\+Buffer@{get\+Index\+Adj\+Buffer}}
\index{get\+Index\+Adj\+Buffer@{get\+Index\+Adj\+Buffer}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Index\+Adj\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index\+Adj\+Buffer (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{\+\_\+dst, }
\item[{const int}]{\+\_\+border\+Index = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_a84816d9e407bbb5384f4fd3b2c943493}


Get index buffer with adjacency information ready for rendering. 

This index buffer can be used to render in G\+L\+\_\+\+T\+R\+I\+A\+N\+G\+L\+E\+S\+\_\+\+A\+D\+J\+A\+C\+E\+N\+C\+Y mode. For each triangle, it contains the 3 neighboring triangles with a shared edge in addition to the triangle vertices. Each triangle stores 6 indices\+: 0 -\/ first vertex of triangle 1 -\/ opposite vertex to first edge of adjacent triangle 2 -\/ second vertex of triangle 3 -\/ opposite vertex to second edge of adjacent triangle 4 -\/ third vertex of triangle 5 -\/ opposite vertex to third edge of adjacent triangle

5\+\_\+\+\_\+\+\_\+4\+\_\+\+\_\+\+\_\+3 \textbackslash{} /\textbackslash{} / \textbackslash{}/\+\_\+\+\_\+\textbackslash{}/ 0\textbackslash{} /2 \textbackslash{}/ 1


\begin{DoxyParams}{Parameters}
{\em \+\_\+dst} & \mbox{[}out\mbox{]} Pointer to memory address where the 32bit index buffer should be copied to. Must have size of at least 6 $\ast$ num\+Tris $\ast$ 4 bytes \\
\hline
{\em \+\_\+border\+Index} & index to use for border edges (missing adjacent triangles) \\
\hline
\end{DoxyParams}


Definition at line 3233 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a5d738a119a02b0469be28b87ed71fdf9}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force@{get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force}}
\index{get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force@{get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{\+\_\+dst, }
\item[{const int}]{\+\_\+border\+Index = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_a5d738a119a02b0469be28b87ed71fdf9}


Slow brute-\/force version of get\+Index\+Adj\+Buffer. 

Computes index buffer with adjacency information, but uses a much simpler algorithm. Runtime = O(n$^\wedge$2), but this can be used to verify the result of get\+Index\+Adj\+Buffer. Results from brute-\/force and optimized algorithm must be equal for meshes where no edge is shared by more than two triangles.


\begin{DoxyParams}{Parameters}
{\em \+\_\+dst} & \mbox{[}out\mbox{]} Pointer to memory address where the 32bit index buffer should be copied to. Must have size of at least 6 $\ast$ num\+Tris $\ast$ 4 bytes \\
\hline
{\em \+\_\+border\+Index} & index to use for border edges (missing adjacent triangles) \\
\hline
\end{DoxyParams}


Definition at line 3554 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a923647a607f246c186c002bfb356e921}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Index\+Adj\+Buffer\+\_\+\+M\+T@{get\+Index\+Adj\+Buffer\+\_\+\+M\+T}}
\index{get\+Index\+Adj\+Buffer\+\_\+\+M\+T@{get\+Index\+Adj\+Buffer\+\_\+\+M\+T}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Index\+Adj\+Buffer\+\_\+\+M\+T}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index\+Adj\+Buffer\+\_\+\+M\+T (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{\+\_\+dst, }
\item[{const int}]{\+\_\+border\+Index = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_a923647a607f246c186c002bfb356e921}


Multi-\/threaded version of get\+Index\+Adj\+Buffer. 

Uses a multi-\/threaded method based on the vertex-\/triangle adjacency list to compute the index buffer with adjacency.


\begin{DoxyParams}{Parameters}
{\em \+\_\+dst} & \mbox{[}out\mbox{]} Pointer to memory address where the 32bit index buffer should be copied to. Must have size of at least 6 $\ast$ num\+Tris $\ast$ 4 bytes \\
\hline
{\em \+\_\+border\+Index} & index to use for border edges (missing adjacent triangles) \\
\hline
\end{DoxyParams}


Definition at line 3418 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a32640b6563877f85d7d4beffba7a9765}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Index\+Buffer@{get\+Index\+Buffer}}
\index{get\+Index\+Buffer@{get\+Index\+Buffer}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Index\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}const int$\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00815_a32640b6563877f85d7d4beffba7a9765}
Get index buffer ready for rendering. 

Definition at line 551 of file Mesh\+Compiler.\+hh.

\hypertarget{a00815_a24f3fce6b2bd90f840e45152774b53e9}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Input\+Face\+Vertex@{get\+Input\+Face\+Vertex}}
\index{get\+Input\+Face\+Vertex@{get\+Input\+Face\+Vertex}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Input\+Face\+Vertex}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Input\+Face\+Vertex (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+face, }
\item[{const int}]{\+\_\+corner, }
\item[{int $\ast$}]{\+\_\+out}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [private]}}}\label{a00815_a24f3fce6b2bd90f840e45152774b53e9}
i\+: face index j\+: corner index \+\_\+out\+: output vertex (index for each attribute) 

Definition at line 1032 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a8a62e985325c0f102137a90ec3c02493}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Input\+Face\+Vertex\+\_\+\+Welded@{get\+Input\+Face\+Vertex\+\_\+\+Welded}}
\index{get\+Input\+Face\+Vertex\+\_\+\+Welded@{get\+Input\+Face\+Vertex\+\_\+\+Welded}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Input\+Face\+Vertex\+\_\+\+Welded}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Input\+Face\+Vertex\+\_\+\+Welded (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+face, }
\item[{const int}]{\+\_\+corner, }
\item[{int $\ast$}]{\+\_\+out}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [private]}}}\label{a00815_a8a62e985325c0f102137a90ec3c02493}
i\+: face index j\+: corner index \+\_\+out\+: output vertex (index for each attribute) post welding operation 

Definition at line 1038 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a8a7f912f706b89c2827f270afd214147}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Input\+Face\+Vertex\+Data@{get\+Input\+Face\+Vertex\+Data}}
\index{get\+Input\+Face\+Vertex\+Data@{get\+Input\+Face\+Vertex\+Data}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Input\+Face\+Vertex\+Data}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Input\+Face\+Vertex\+Data (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+face, }
\item[{const int}]{\+\_\+corner, }
\item[{void $\ast$}]{\+\_\+out}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [private]}}}\label{a00815_a8a7f912f706b89c2827f270afd214147}
i\+: face index j\+: corner index \+\_\+out\+: output vertex address (vertex data) 

Definition at line 1056 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_ad0672908f8922230a7c3e6ca669862f8}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Memory\+Usage@{get\+Memory\+Usage}}
\index{get\+Memory\+Usage@{get\+Memory\+Usage}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Memory\+Usage}]{\setlength{\rightskip}{0pt plus 5cm}size\+\_\+t A\+C\+G\+::\+Mesh\+Compiler\+::get\+Memory\+Usage (
\begin{DoxyParamCaption}
\item[{bool}]{\+\_\+print\+Console = {\ttfamily true}}
\end{DoxyParamCaption}
) const}}\label{a00815_ad0672908f8922230a7c3e6ca669862f8}
return memory consumption in bytes 
\begin{DoxyParams}{Parameters}
{\em \+\_\+print\+Console} & print detailed memory costs to command console \\
\hline
\end{DoxyParams}


Definition at line 3693 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a92c5b1ee3e8a5acb192406757a95b86e}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Num\+Faces@{get\+Num\+Faces}}
\index{get\+Num\+Faces@{get\+Num\+Faces}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Num\+Faces}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Faces (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}\label{a00815_a92c5b1ee3e8a5acb192406757a95b86e}
Get number of input faces. 

Definition at line 3980 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_adf8bdd335e8d8955038974e1a1772f99}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Num\+Input\+Attributes@{get\+Num\+Input\+Attributes}}
\index{get\+Num\+Input\+Attributes@{get\+Num\+Input\+Attributes}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Num\+Input\+Attributes}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Input\+Attributes (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+attr\+Idx}
\end{DoxyParamCaption}
) const}}\label{a00815_adf8bdd335e8d8955038974e1a1772f99}
Get number of attributes in an input buffer


\begin{DoxyParams}{Parameters}
{\em \+\_\+attr\+Idx} & Attribute id from \hyperlink{a01417}{Vertex\+Declaration} \\
\hline
\end{DoxyParams}


Definition at line 1873 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_aa6f93ed8be39552c32f612431ed7a385}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Num\+Subsets@{get\+Num\+Subsets}}
\index{get\+Num\+Subsets@{get\+Num\+Subsets}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Num\+Subsets}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Subsets (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00815_aa6f93ed8be39552c32f612431ed7a385}


Get the number of subsets. 

\begin{DoxyReturn}{Returns}
Number of subsets 
\end{DoxyReturn}


Definition at line 489 of file Mesh\+Compiler.\+hh.

\hypertarget{a00815_af03c51eeff1e92ddb7d6c20e5a6312a0}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Num\+Triangles@{get\+Num\+Triangles}}
\index{get\+Num\+Triangles@{get\+Num\+Triangles}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Num\+Triangles}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Triangles (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00815_af03c51eeff1e92ddb7d6c20e5a6312a0}
Get number of triangles in final buffer. 

Definition at line 593 of file Mesh\+Compiler.\+hh.

\hypertarget{a00815_a828b22f97d142ad887c4b010d1a30f96}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Num\+Vertices@{get\+Num\+Vertices}}
\index{get\+Num\+Vertices@{get\+Num\+Vertices}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Num\+Vertices}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Vertices (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00815_a828b22f97d142ad887c4b010d1a30f96}
Get number of vertices in final buffer. 

Definition at line 518 of file Mesh\+Compiler.\+hh.

\hypertarget{a00815_acb90eac7ee3cbe7fd5b7c9b0031e2081}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Provoking\+Vertex@{get\+Provoking\+Vertex}}
\index{get\+Provoking\+Vertex@{get\+Provoking\+Vertex}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Provoking\+Vertex}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Provoking\+Vertex (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00815_acb90eac7ee3cbe7fd5b7c9b0031e2081}
See gl\+Provoking\+Vertex()

\begin{DoxyReturn}{Returns}
provoking vertex id 
\end{DoxyReturn}


Definition at line 536 of file Mesh\+Compiler.\+hh.

\hypertarget{a00815_aa2a1ab37e4bc21a9e84d24da2bc1f46d}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Subset@{get\+Subset}}
\index{get\+Subset@{get\+Subset}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Subset}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Mesh\+Compiler\+::\+Subset} $\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::get\+Subset (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i}
\end{DoxyParamCaption}
) const}}\label{a00815_aa2a1ab37e4bc21a9e84d24da2bc1f46d}


get a specific subset 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Id of the subset \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The subset 
\end{DoxyReturn}


Definition at line 1911 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_ab23f5caf4455d6bf1cf55cf0fa3f8821}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Tri\+Group@{get\+Tri\+Group}}
\index{get\+Tri\+Group@{get\+Tri\+Group}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Tri\+Group}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Tri\+Group (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+tri\+I\+D}
\end{DoxyParamCaption}
) const}}\label{a00815_ab23f5caf4455d6bf1cf55cf0fa3f8821}


Get Group Id of the triangle. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+tri\+I\+D} & Id of the triangle \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Group of the triangle 
\end{DoxyReturn}
\hypertarget{a00815_aa27c760d823899e7a07bc28795976127}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Vertex@{get\+Vertex}}
\index{get\+Vertex@{get\+Vertex}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Vertex}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Vertex (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+id, }
\item[{void $\ast$}]{\+\_\+out}
\end{DoxyParamCaption}
) const}}\label{a00815_aa27c760d823899e7a07bc28795976127}
Get vertex in final draw vertex buffer. 

Definition at line 2970 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a87186ca21b5a3ef6952581bedd579286}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Vertex\+Buffer@{get\+Vertex\+Buffer}}
\index{get\+Vertex\+Buffer@{get\+Vertex\+Buffer}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Vertex\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Vertex\+Buffer (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{\+\_\+dst, }
\item[{const int}]{\+\_\+offset = {\ttfamily 0}, }
\item[{const int}]{\+\_\+range = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_a87186ca21b5a3ef6952581bedd579286}


Get vertex buffer ready for rendering. 

Query final vertex buffer data. Support vertex buffer batch uploads. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+dst} & \mbox{[}out\mbox{]} Pointer to memory address where the vertex buffer should be copied to \\
\hline
{\em \+\_\+offset} & Begin of vertex buffer batch \\
\hline
{\em \+\_\+range} & Size of vertex buffer batch. Copies rest of buffer if \+\_\+range $<$ 0. \\
\hline
\end{DoxyParams}


Definition at line 3171 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_af55b759593a7e60b7a94bfdcfef360a7}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Vertex\+Declaration@{get\+Vertex\+Declaration}}
\index{get\+Vertex\+Declaration@{get\+Vertex\+Declaration}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{get\+Vertex\+Declaration}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Vertex\+Declaration}$\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::get\+Vertex\+Declaration (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00815_af55b759593a7e60b7a94bfdcfef360a7}
Get Vertex declaration. 

Definition at line 611 of file Mesh\+Compiler.\+hh.

\hypertarget{a00815_a6e2a7c0aea95dcedf927638554bf33c1}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!is\+Face\+Edge@{is\+Face\+Edge}}
\index{is\+Face\+Edge@{is\+Face\+Edge}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{is\+Face\+Edge}]{\setlength{\rightskip}{0pt plus 5cm}bool A\+C\+G\+::\+Mesh\+Compiler\+::is\+Face\+Edge (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+tri\+I\+D, }
\item[{const int}]{\+\_\+edge}
\end{DoxyParamCaption}
) const}}\label{a00815_a6e2a7c0aea95dcedf927638554bf33c1}
Test if a triangle edge is a face edge from the input buffer.

When a convex n-\/poly is subdivided into (n-\/2) triangles, new edges are created which do not exist in the input mesh. This function identifies if an edge was already existant in the input mesh or added during triangulation. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+tri\+I\+D} & triangle I\+D in draw buffer \\
\hline
{\em \+\_\+edge} & edge of triangle, edge ordering\+: v0-\/v1, v1-\/v2, v2-\/v0 \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if the edge is an edge from an input face, false otherwise 
\end{DoxyReturn}


Definition at line 4006 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a290e699448b02500cc07890420a0071a}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!is\+Triangle\+Mesh@{is\+Triangle\+Mesh}}
\index{is\+Triangle\+Mesh@{is\+Triangle\+Mesh}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{is\+Triangle\+Mesh}]{\setlength{\rightskip}{0pt plus 5cm}bool A\+C\+G\+::\+Mesh\+Compiler\+::is\+Triangle\+Mesh (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}\label{a00815_a290e699448b02500cc07890420a0071a}
Test if the input mesh consists of triangles only. 

Definition at line 4001 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_acc8b0313fca811f31e372c3838e7ab69}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Draw\+Tri\+I\+D@{map\+To\+Draw\+Tri\+I\+D}}
\index{map\+To\+Draw\+Tri\+I\+D@{map\+To\+Draw\+Tri\+I\+D}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{map\+To\+Draw\+Tri\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Draw\+Tri\+I\+D (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+face\+I\+D, }
\item[{const int}]{\+\_\+k = {\ttfamily 0}, }
\item[{int $\ast$}]{\+\_\+num\+Tris\+Out = {\ttfamily 0}}
\end{DoxyParamCaption}
) const}}\label{a00815_acc8b0313fca811f31e372c3838e7ab69}
Mapping from input Face id -\/$>$ draw triangle id


\begin{DoxyParams}{Parameters}
{\em \+\_\+face\+I\+D} & Face I\+D in input data \\
\hline
{\em \+\_\+k} & triangle no. associated to face, offset 0 \\
\hline
{\em \+\_\+num\+Tris\+Out} & \mbox{[}out\mbox{]} Number of triangles associated to face (if input face was n-\/poly) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Draw Triangle I\+D in output vertex buffer 
\end{DoxyReturn}


Definition at line 3680 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a8c3f0f3c172da409f060d210133ee010}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Draw\+Vertex\+I\+D@{map\+To\+Draw\+Vertex\+I\+D}}
\index{map\+To\+Draw\+Vertex\+I\+D@{map\+To\+Draw\+Vertex\+I\+D}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{map\+To\+Draw\+Vertex\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Draw\+Vertex\+I\+D (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+face\+I\+D, }
\item[{const int}]{\+\_\+corner\+I\+D}
\end{DoxyParamCaption}
) const}}\label{a00815_a8c3f0f3c172da409f060d210133ee010}
Mapping from input vertex id -\/$>$ draw vertex id


\begin{DoxyParams}{Parameters}
{\em \+\_\+face\+I\+D} & Face I\+D in input data \\
\hline
{\em \+\_\+corner\+I\+D} & Corner of face \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Draw Vertex I\+D in output vertex buffer 
\end{DoxyReturn}


Definition at line 3675 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_ac09ebb6d82fba1fe48dbb8c6877d1d44}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Original\+Face\+I\+D@{map\+To\+Original\+Face\+I\+D}}
\index{map\+To\+Original\+Face\+I\+D@{map\+To\+Original\+Face\+I\+D}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{map\+To\+Original\+Face\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Original\+Face\+I\+D (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+tri\+I\+D}
\end{DoxyParamCaption}
) const}}\label{a00815_ac09ebb6d82fba1fe48dbb8c6877d1d44}
Mapping from draw tri id -\/$>$ input face id


\begin{DoxyParams}{Parameters}
{\em \+\_\+tri\+I\+D} & Triangle I\+D in draw index buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Input Face I\+D 
\end{DoxyReturn}


Definition at line 3624 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a3e66da25ae543ddcadbf11bf510e8165}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Original\+Face\+I\+D\+Ptr@{map\+To\+Original\+Face\+I\+D\+Ptr}}
\index{map\+To\+Original\+Face\+I\+D\+Ptr@{map\+To\+Original\+Face\+I\+D\+Ptr}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{map\+To\+Original\+Face\+I\+D\+Ptr}]{\setlength{\rightskip}{0pt plus 5cm}const int $\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Original\+Face\+I\+D\+Ptr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}\label{a00815_a3e66da25ae543ddcadbf11bf510e8165}
Get pointer to the lookup table mapping from tri id -\/$>$ input face id

\begin{DoxyReturn}{Returns}
ptr to address of lookup table with size \hyperlink{a00815_af03c51eeff1e92ddb7d6c20e5a6312a0}{get\+Num\+Triangles()} 
\end{DoxyReturn}


Definition at line 3641 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a4b1f4f5be85c0be01563e25b99ec790b}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Original\+Vertex\+I\+D@{map\+To\+Original\+Vertex\+I\+D}}
\index{map\+To\+Original\+Vertex\+I\+D@{map\+To\+Original\+Vertex\+I\+D}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{map\+To\+Original\+Vertex\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Original\+Vertex\+I\+D (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+i, }
\item[{int \&}]{\+\_\+face\+I\+D, }
\item[{int \&}]{\+\_\+corner\+I\+D}
\end{DoxyParamCaption}
) const}}\label{a00815_a4b1f4f5be85c0be01563e25b99ec790b}
Mapping from draw vertex id -\/$>$ input vertex id


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Vertex I\+D in draw buffer \\
\hline
{\em \+\_\+face\+I\+D} & \mbox{[}out\mbox{]} Face I\+D in face input buffer \\
\hline
{\em \+\_\+corner\+I\+D} & \mbox{[}out\mbox{]} Corner of face corresponding to vertex. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Position I\+D in input buffer 
\end{DoxyReturn}


Definition at line 3651 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_ae3ecd67df4f8c8b9be4d45bdede86e1e}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Attrib@{set\+Attrib}}
\index{set\+Attrib@{set\+Attrib}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Attrib}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Attrib (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+attr\+Idx, }
\item[{int}]{\+\_\+v, }
\item[{const void $\ast$}]{\+\_\+data}
\end{DoxyParamCaption}
)}}\label{a00815_ae3ecd67df4f8c8b9be4d45bdede86e1e}
Set single custom input attributes.

An internal buffer for the requested attribute must be allocated before using this function. See \hyperlink{a00815_a363f68490ef812f56173862cfd8a7db5}{set\+Attrib\+Vec()} 
\begin{DoxyParams}{Parameters}
{\em \+\_\+attr\+Idx} & Attribute id from \hyperlink{a01417}{Vertex\+Declaration} \\
\hline
{\em \+\_\+v} & Buffer id of the single attribute \\
\hline
{\em \+\_\+data} & attribute data \\
\hline
\end{DoxyParams}


Definition at line 1858 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a363f68490ef812f56173862cfd8a7db5}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Attrib\+Vec@{set\+Attrib\+Vec}}
\index{set\+Attrib\+Vec@{set\+Attrib\+Vec}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Attrib\+Vec}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Attrib\+Vec (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+attr\+Idx, }
\item[{int}]{\+\_\+num, }
\item[{const void $\ast$}]{\+\_\+data, }
\item[{int}]{\+\_\+stride = {\ttfamily 0}, }
\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false}, }
\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0}, }
\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_a363f68490ef812f56173862cfd8a7db5}
Set custom input attribute.

Alternatively allocates an internal buffer only, such that data can be provided via \hyperlink{a00815_ae3ecd67df4f8c8b9be4d45bdede86e1e}{set\+Attrib()}. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+attr\+Idx} & Attribute id from \hyperlink{a01417}{Vertex\+Declaration} \\
\hline
{\em \+\_\+num} & Number of attributes \\
\hline
{\em \+\_\+data} & Input data buffer, may be null to only allocate an internal buffer \\
\hline
{\em \+\_\+stride} & Offset difference in bytes to the next attribute in \+\_\+data. Default value 0 indicates no data alignment/memory packing. \\
\hline
{\em \+\_\+internal\+Copy} & Create an internal buffer and make a copy \+\_\+data \\
\hline
{\em \+\_\+fmt} & data format of one element (must be set if input data does not match vertex declaration) \\
\hline
{\em \+\_\+element\+Size} & number of elements per attribute (i.\+e. 3 for vec3 .., -\/1 if unknown) \\
\hline
\end{DoxyParams}


Definition at line 275 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_ad5f6f5fb1cee6d97f0092c4405973ca3}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Attrib@{set\+Face\+Attrib}}
\index{set\+Face\+Attrib@{set\+Face\+Attrib}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Attrib}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Attrib (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+v0, }
\item[{int}]{\+\_\+v1, }
\item[{int}]{\+\_\+v2, }
\item[{int}]{\+\_\+attr\+I\+D}
\end{DoxyParamCaption}
)}}\label{a00815_ad5f6f5fb1cee6d97f0092c4405973ca3}


Set attribute ids per triangle. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face id \\
\hline
{\em \+\_\+v0} & 1st element id \\
\hline
{\em \+\_\+v1} & 2nd element id \\
\hline
{\em \+\_\+v2} & 3rd element id \\
\hline
{\em \+\_\+attr\+I\+D} & Which attribute\+: index of \hyperlink{a01417}{Vertex\+Declaration} element array \\
\hline
\end{DoxyParams}


Definition at line 1195 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_afc2c2f0b8055be2afb2f8c021e5bc644}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Attrib@{set\+Face\+Attrib}}
\index{set\+Face\+Attrib@{set\+Face\+Attrib}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Attrib}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Attrib (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+face\+Size, }
\item[{int $\ast$}]{\+\_\+v, }
\item[{int}]{\+\_\+attr\+I\+D}
\end{DoxyParamCaption}
)}}\label{a00815_afc2c2f0b8055be2afb2f8c021e5bc644}


Set attribute ids per face. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face id \\
\hline
{\em \+\_\+face\+Size} & Size of face, ie. number of vertices of face \\
\hline
{\em \+\_\+v} & Element ids \\
\hline
{\em \+\_\+attr\+I\+D} & Which attribute\+: index of \hyperlink{a01417}{Vertex\+Declaration} element array \\
\hline
\end{DoxyParams}


Definition at line 1181 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a1910b3b2d47a502fa6a728722969f506}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Group@{set\+Face\+Group}}
\index{set\+Face\+Group@{set\+Face\+Group}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Group}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Group (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{short}]{\+\_\+group\+I\+D}
\end{DoxyParamCaption}
)}}\label{a00815_a1910b3b2d47a502fa6a728722969f506}


Specify face groups. 

Faces with the same group I\+D will be chunked together in the sorting process. This feature may be used for material/texture subsets. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face I\+D \\
\hline
{\em \+\_\+group\+I\+D} & Custom group I\+D \\
\hline
\end{DoxyParams}


Definition at line 3163 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a4dd0a9c4b7ef707c16adb67d07124464}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Input@{set\+Face\+Input}}
\index{set\+Face\+Input@{set\+Face\+Input}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Input}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Input (
\begin{DoxyParamCaption}
\item[{{\bf Mesh\+Compiler\+Face\+Input} $\ast$}]{\+\_\+face\+Input}
\end{DoxyParamCaption}
)}}\label{a00815_a4dd0a9c4b7ef707c16adb67d07124464}
Set Face data input

Making use of the \hyperlink{a00820}{Mesh\+Compiler\+Face\+Input} interface completly overrides the default input behavior. Any subsequent call to default input data functions such as \hyperlink{a00815_abf1cc276e43a44a8770c01a8e1c1bd05}{set\+Num\+Faces()}, \hyperlink{a00815_a76478052dd3603614b040c24f80a26ef}{set\+Face\+Verts()} etc. will be ignored


\begin{DoxyParams}{Parameters}
{\em \+\_\+face\+Input} & user defined face input (no internal copy made, do not delete while using \hyperlink{a00815}{Mesh\+Compiler}) \\
\hline
\end{DoxyParams}


Definition at line 3946 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a98e2e73d7c9bcd2bfaaf970e745f2d6e}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Normals@{set\+Face\+Normals}}
\index{set\+Face\+Normals@{set\+Face\+Normals}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Normals}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Normals (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+v0, }
\item[{int}]{\+\_\+v1, }
\item[{int}]{\+\_\+v2}
\end{DoxyParamCaption}
)}}\label{a00815_a98e2e73d7c9bcd2bfaaf970e745f2d6e}


Set normal ids per triangle. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face I\+D \\
\hline
{\em \+\_\+v0} & 1st normal id \\
\hline
{\em \+\_\+v1} & 2nd normal id \\
\hline
{\em \+\_\+v2} & 3rd normal id \\
\hline
\end{DoxyParams}


Definition at line 2952 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a419351cd1226ba757c36b2bd208ba96e}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Normals@{set\+Face\+Normals}}
\index{set\+Face\+Normals@{set\+Face\+Normals}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Normals}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Normals (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+face\+Size, }
\item[{int $\ast$}]{\+\_\+v}
\end{DoxyParamCaption}
)}}\label{a00815_a419351cd1226ba757c36b2bd208ba96e}


Set normal ids per face. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face id \\
\hline
{\em \+\_\+face\+Size} & Size of face, ie. number of vertices of face \\
\hline
{\em \+\_\+v} & Normal ids \\
\hline
\end{DoxyParams}


Definition at line 2947 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a4cab29f5592daa00852ce8a10b946dec}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Tex\+Coords@{set\+Face\+Tex\+Coords}}
\index{set\+Face\+Tex\+Coords@{set\+Face\+Tex\+Coords}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Tex\+Coords}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Tex\+Coords (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+v0, }
\item[{int}]{\+\_\+v1, }
\item[{int}]{\+\_\+v2}
\end{DoxyParamCaption}
)}}\label{a00815_a4cab29f5592daa00852ce8a10b946dec}


Set texcoord ids per triangle. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face I\+D \\
\hline
{\em \+\_\+v0} & 1st texcoord id \\
\hline
{\em \+\_\+v1} & 2nd texcoord id \\
\hline
{\em \+\_\+v2} & 3rd texcoord id \\
\hline
\end{DoxyParams}


Definition at line 2964 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a391448dc21df2bfc68787ccedf5e4a6b}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Tex\+Coords@{set\+Face\+Tex\+Coords}}
\index{set\+Face\+Tex\+Coords@{set\+Face\+Tex\+Coords}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Tex\+Coords}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Tex\+Coords (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+face\+Size, }
\item[{int $\ast$}]{\+\_\+v}
\end{DoxyParamCaption}
)}}\label{a00815_a391448dc21df2bfc68787ccedf5e4a6b}


Set texcoord ids per face. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face id \\
\hline
{\em \+\_\+face\+Size} & Size of face, ie. number of vertices of face \\
\hline
{\em \+\_\+v} & Texcoord ids \\
\hline
\end{DoxyParams}


Definition at line 2959 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a76478052dd3603614b040c24f80a26ef}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Verts@{set\+Face\+Verts}}
\index{set\+Face\+Verts@{set\+Face\+Verts}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Verts}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Verts (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+v0, }
\item[{int}]{\+\_\+v1, }
\item[{int}]{\+\_\+v2}
\end{DoxyParamCaption}
)}}\label{a00815_a76478052dd3603614b040c24f80a26ef}


Set vertex ids per triangle. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face I\+D \\
\hline
{\em \+\_\+v0} & 1st vertex id \\
\hline
{\em \+\_\+v1} & 2nd vertex id \\
\hline
{\em \+\_\+v2} & 3rd vertex id \\
\hline
\end{DoxyParams}


Definition at line 2941 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a5eb36ea1e6f941acf0c454858a66bc8c}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Face\+Verts@{set\+Face\+Verts}}
\index{set\+Face\+Verts@{set\+Face\+Verts}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Face\+Verts}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Verts (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+i, }
\item[{int}]{\+\_\+face\+Size, }
\item[{int $\ast$}]{\+\_\+v}
\end{DoxyParamCaption}
)}}\label{a00815_a5eb36ea1e6f941acf0c454858a66bc8c}


Set vertex ids per face. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & Face id \\
\hline
{\em \+\_\+face\+Size} & Size of face, ie. number of vertices of face \\
\hline
{\em \+\_\+v} & Vertex ids \\
\hline
\end{DoxyParams}


Definition at line 2936 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a5e0360be261dac148d70bf10d0a05185}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Index\+Buffer\+Interleaved@{set\+Index\+Buffer\+Interleaved}}
\index{set\+Index\+Buffer\+Interleaved@{set\+Index\+Buffer\+Interleaved}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Index\+Buffer\+Interleaved}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Index\+Buffer\+Interleaved (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+num\+Tris, }
\item[{int}]{\+\_\+index\+Size, }
\item[{const void $\ast$}]{\+\_\+indices}
\end{DoxyParamCaption}
)}}\label{a00815_a5e0360be261dac148d70bf10d0a05185}


Set index buffer for a triangle mesh. 

This should only be used if the input vertex buffer is interleaved already. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+num\+Tris} & Number of triangles. \\
\hline
{\em \+\_\+index\+Size} & Size in bytes of one index. \\
\hline
{\em \+\_\+indices} & Pointer to a buffer containing the index data. \\
\hline
\end{DoxyParams}


Definition at line 3951 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a0b990ba59cef3b696ae43ad43c288a86}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Normals@{set\+Normals}}
\index{set\+Normals@{set\+Normals}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Normals}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Normals (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+num, }
\item[{const void $\ast$}]{\+\_\+data, }
\item[{int}]{\+\_\+stride = {\ttfamily 0}, }
\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false}, }
\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0}, }
\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_a0b990ba59cef3b696ae43ad43c288a86}
set input normals


\begin{DoxyParams}{Parameters}
{\em \+\_\+num} & Number of normals \\
\hline
{\em \+\_\+data} & Pointer to normals data \\
\hline
{\em \+\_\+stride} & Difference in bytes between two normals positions in \+\_\+data. Default value 0 indicates a tight float3 position array without any other data or memory alignment. \\
\hline
{\em \+\_\+internal\+Copy} & Memory optimization flag\+: select true if the provided data address is only temporarily valid. Otherwise an internal copy must be made. \\
\hline
{\em \+\_\+fmt} & data format of one element (must be set if input data does not match vertex declaration) \\
\hline
{\em \+\_\+element\+Size} & number of elements per attribute (i.\+e. 3 for vec3 .., -\/1 if unknown) \\
\hline
\end{DoxyParams}


Definition at line 264 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_abf1cc276e43a44a8770c01a8e1c1bd05}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Num\+Faces@{set\+Num\+Faces}}
\index{set\+Num\+Faces@{set\+Num\+Faces}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Num\+Faces}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Num\+Faces (
\begin{DoxyParamCaption}
\item[{const int}]{\+\_\+num\+Faces, }
\item[{const int}]{\+\_\+num\+Indices}
\end{DoxyParamCaption}
)}}\label{a00815_abf1cc276e43a44a8770c01a8e1c1bd05}


Set number of faces and indices if known by user. 

User may give a rough estimate of face/index count. A more accurate estimation improves efficiency\+: too low numbers result in performance hit, too high numbers in memory consumption 
\begin{DoxyParams}{Parameters}
{\em \+\_\+num\+Faces} & Number of faces. Value 0 accepted at cost of performance \\
\hline
{\em \+\_\+num\+Indices} & Number of indices, i.\+e. 3 $\ast$ num\+Faces for triangle meshes. Value 0 accepted at cost of performance \\
\hline
\end{DoxyParams}


Definition at line 1166 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a364ede2f503870c1ab33a6d13d286ee8}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Provoking\+Vertex@{set\+Provoking\+Vertex}}
\index{set\+Provoking\+Vertex@{set\+Provoking\+Vertex}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Provoking\+Vertex}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Provoking\+Vertex (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+v}
\end{DoxyParamCaption}
)}}\label{a00815_a364ede2f503870c1ab33a6d13d286ee8}
See gl\+Provoking\+Vertex()

Specifiy the vertex to be used as the source of data for flat shading. The default value is 2, meaning that the last vertex of each triangle will be used. \hyperlink{a00815_a364ede2f503870c1ab33a6d13d286ee8}{set\+Provoking\+Vertex()} must be called prior to \hyperlink{a00815_a9ccef4e10e89c0f02640c11b2497c4fa}{build()}, if a different provoking vertex is desired. Additionally \hyperlink{a00815_a9ccef4e10e89c0f02640c11b2497c4fa}{build()} has to set its \+\_\+need\+Per\+Face\+Attribute parameter to true to enable provoking vertices. The provoking vertex of a face is a vertex, which is not shared with any other face in the mesh.


\begin{DoxyParams}{Parameters}
{\em \+\_\+v} & triangle vertex where the provoking vertex should be stored \mbox{[}0, 1, 2\mbox{]} \\
\hline
\end{DoxyParams}


Definition at line 3985 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_a6950e6081977ee532da7ac8fd8c89e42}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Tex\+Coords@{set\+Tex\+Coords}}
\index{set\+Tex\+Coords@{set\+Tex\+Coords}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Tex\+Coords}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Tex\+Coords (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+num, }
\item[{const void $\ast$}]{\+\_\+data, }
\item[{int}]{\+\_\+stride = {\ttfamily 0}, }
\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false}, }
\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0}, }
\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_a6950e6081977ee532da7ac8fd8c89e42}
set input texture coords


\begin{DoxyParams}{Parameters}
{\em \+\_\+num} & Number of texture coords \\
\hline
{\em \+\_\+data} & Pointer to texture coord data \\
\hline
{\em \+\_\+stride} & Difference in bytes between two texture coordinate positions in \+\_\+data. Default value 0 indicates a tight float3 position array without any other data or memory alignment. \\
\hline
{\em \+\_\+internal\+Copy} & Memory optimization flag\+: select true if the provided data address is only temporarily valid. Otherwise an internal copy must be made. \\
\hline
{\em \+\_\+fmt} & data format of one element (must be set if input data does not match vertex declaration) \\
\hline
{\em \+\_\+element\+Size} & number of elements per attribute (i.\+e. 3 for vec3 .., -\/1 if unknown) \\
\hline
\end{DoxyParams}


Definition at line 269 of file Mesh\+Compiler.\+cc.

\hypertarget{a00815_ac90ec94f53c7796e59fb463da9b77158}{\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!set\+Vertices@{set\+Vertices}}
\index{set\+Vertices@{set\+Vertices}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection[{set\+Vertices}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Vertices (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+num, }
\item[{const void $\ast$}]{\+\_\+data, }
\item[{int}]{\+\_\+stride = {\ttfamily 0}, }
\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false}, }
\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0}, }
\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1}}
\end{DoxyParamCaption}
)}}\label{a00815_ac90ec94f53c7796e59fb463da9b77158}
set input vertex positions


\begin{DoxyParams}{Parameters}
{\em \+\_\+num} & Number of vertex positions \\
\hline
{\em \+\_\+data} & Pointer to vertex data \\
\hline
{\em \+\_\+stride} & Difference in bytes between two vertex positions in \+\_\+data. Default value 0 indicates a tight float3 position array without any other data or memory alignment. \\
\hline
{\em \+\_\+internal\+Copy} & Memory optimization flag\+: select true if the provided data address is only temporarily valid. Otherwise an internal copy must be made. \\
\hline
{\em \+\_\+fmt} & data format of one element (must be set if input data does not match vertex declaration) \\
\hline
{\em \+\_\+element\+Size} & number of elements per attribute (i.\+e. 3 for vec3 .., -\/1 if unknown) \\
\hline
\end{DoxyParams}


Definition at line 259 of file Mesh\+Compiler.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+G\+L/Mesh\+Compiler.\+hh\item 
A\+C\+G/\+G\+L/Mesh\+Compiler.\+cc\end{DoxyCompactItemize}
