\hypertarget{classACG_1_1MeshCompiler}{}\section{A\+CG\+:\+:Mesh\+Compiler Class Reference}
\label{classACG_1_1MeshCompiler}\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structACG_1_1MeshCompiler_1_1AdjacencyList}{Adjacency\+List}
\item 
struct \hyperlink{structACG_1_1MeshCompiler_1_1Subset}{Subset}
\item 
struct \hyperlink{structACG_1_1MeshCompiler_1_1VertexElementInput}{Vertex\+Element\+Input}
\item 
struct \hyperlink{structACG_1_1MeshCompiler_1_1VertexSplitter}{Vertex\+Splitter}
\item 
struct \hyperlink{structACG_1_1MeshCompiler_1_1WeldList}{Weld\+List}
\item 
struct \hyperlink{structACG_1_1MeshCompiler_1_1WeldListEntry}{Weld\+List\+Entry}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_afb3f33edc5989888639af47f772f80a7}\label{classACG_1_1MeshCompiler_afb3f33edc5989888639af47f772f80a7}} 
{\bfseries Mesh\+Compiler} (const \hyperlink{classACG_1_1VertexDeclaration}{Vertex\+Declaration} \&\+\_\+decl)
\item 
void \hyperlink{classACG_1_1MeshCompiler_a923647a607f246c186c002bfb356e921}{get\+Index\+Adj\+Buffer\+\_\+\+MT} (void $\ast$\+\_\+dst, const int \+\_\+border\+Index=-\/1)
\begin{DoxyCompactList}\small\item\em Multi-\/threaded version of get\+Index\+Adj\+Buffer. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a237d53cc93e75fcd1de6b94465ec35f4}\label{classACG_1_1MeshCompiler_a237d53cc93e75fcd1de6b94465ec35f4}} 
void \hyperlink{classACG_1_1MeshCompiler_a237d53cc93e75fcd1de6b94465ec35f4}{dbgdump} (const char $\ast$\+\_\+filename) const
\begin{DoxyCompactList}\small\item\em dump mesh info to text file \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_aedfa9fcf4c63e28e1d6456bcc0343e8e}\label{classACG_1_1MeshCompiler_aedfa9fcf4c63e28e1d6456bcc0343e8e}} 
void \hyperlink{classACG_1_1MeshCompiler_aedfa9fcf4c63e28e1d6456bcc0343e8e}{dbgdump\+Obj} (const char $\ast$\+\_\+filename) const
\begin{DoxyCompactList}\small\item\em dump mesh in wavefront obj format \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a0283edd3855d537babd70a4ecc1a29d5}\label{classACG_1_1MeshCompiler_a0283edd3855d537babd70a4ecc1a29d5}} 
void \hyperlink{classACG_1_1MeshCompiler_a0283edd3855d537babd70a4ecc1a29d5}{dbgdump\+Input\+Bin} (const char $\ast$\+\_\+filename, bool \+\_\+seperate\+Files=false) const
\begin{DoxyCompactList}\small\item\em dump input mesh to binary file format \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a0641772ad351e5b908920f607a949842}\label{classACG_1_1MeshCompiler_a0641772ad351e5b908920f607a949842}} 
void \hyperlink{classACG_1_1MeshCompiler_a0641772ad351e5b908920f607a949842}{dbgdump\+Input\+Obj} (const char $\ast$\+\_\+filename) const
\begin{DoxyCompactList}\small\item\em dump input mesh to wavefront obj format \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a1674cd0b6a8ccf983c3c7c8620751610}\label{classACG_1_1MeshCompiler_a1674cd0b6a8ccf983c3c7c8620751610}} 
void \hyperlink{classACG_1_1MeshCompiler_a1674cd0b6a8ccf983c3c7c8620751610}{dbgdump\+Adj\+List} (const char $\ast$\+\_\+filename) const
\begin{DoxyCompactList}\small\item\em dump adjacency list to text file \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a734b08139da52ddb9474297662f53a28}\label{classACG_1_1MeshCompiler_a734b08139da52ddb9474297662f53a28}} 
bool \hyperlink{classACG_1_1MeshCompiler_a734b08139da52ddb9474297662f53a28}{dbg\+Verify} (const char $\ast$\+\_\+filename) const
\begin{DoxyCompactList}\small\item\em test correctness of input $<$-\/$>$ output id mappings, unshared per face vertex.. logs errors in file \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a581430b1c40f817581e22e427e04b7ed}\label{classACG_1_1MeshCompiler_a581430b1c40f817581e22e427e04b7ed}} 
std\+::string \hyperlink{classACG_1_1MeshCompiler_a581430b1c40f817581e22e427e04b7ed}{vertex\+To\+String} (const void $\ast$v) const
\begin{DoxyCompactList}\small\item\em interpret vertex data according declaration and write to string \end{DoxyCompactList}\item 
size\+\_\+t \hyperlink{classACG_1_1MeshCompiler_afd1702aa149db5af7b274eefcf4671cf}{get\+Memory\+Usage} (bool \+\_\+print\+Console=true) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a693b3243bc51ccfd53ec291c6c6e4b52}\label{classACG_1_1MeshCompiler_a693b3243bc51ccfd53ec291c6c6e4b52}} 
std\+::string \hyperlink{classACG_1_1MeshCompiler_a693b3243bc51ccfd53ec291c6c6e4b52}{check\+Input\+Data} () const
\begin{DoxyCompactList}\small\item\em check for errors in input data \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}\textbf{ Vertex Data Input}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classACG_1_1MeshCompiler_aa3b2df5e35854c76ff554407a45048cd}{set\+Vertices} (size\+\_\+t \+\_\+num, const void $\ast$\+\_\+data, size\+\_\+t \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{classACG_1_1MeshCompiler_abb981054d9e63a4c7e5a3dab9eab0e99}{set\+Normals} (size\+\_\+t \+\_\+num, const void $\ast$\+\_\+data, size\+\_\+t \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{classACG_1_1MeshCompiler_ab93c56396b275ff2467b4bbf92609f63}{set\+Tex\+Coords} (size\+\_\+t \+\_\+num, const void $\ast$\+\_\+data, size\+\_\+t \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{classACG_1_1MeshCompiler_ae9c1c4f94d4fef41b17242e3bd25b380}{set\+Attrib\+Vec} (int \+\_\+attr\+Idx, size\+\_\+t \+\_\+num, const void $\ast$\+\_\+data, size\+\_\+t \+\_\+stride=0, bool \+\_\+internal\+Copy=false, G\+Luint \+\_\+fmt=0, int \+\_\+element\+Size=-\/1)
\item 
void \hyperlink{classACG_1_1MeshCompiler_ae3ecd67df4f8c8b9be4d45bdede86e1e}{set\+Attrib} (int \+\_\+attr\+Idx, int \+\_\+v, const void $\ast$\+\_\+data)
\item 
int \hyperlink{classACG_1_1MeshCompiler_a7822e5c64a488b1ea771782bf953b6c2}{get\+Num\+Input\+Attributes} (int \+\_\+attr\+Idx) const
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Flexible Face Data Input}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classACG_1_1MeshCompiler_a4dd0a9c4b7ef707c16adb67d07124464}{set\+Face\+Input} (\hyperlink{classACG_1_1MeshCompilerFaceInput}{Mesh\+Compiler\+Face\+Input} $\ast$\+\_\+face\+Input)
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Default Face Data Input}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_ad5f6f5fb1cee6d97f0092c4405973ca3}{set\+Face\+Attrib} (int \+\_\+i, int \+\_\+v0, int \+\_\+v1, int \+\_\+v2, int \+\_\+attr\+ID)
\begin{DoxyCompactList}\small\item\em Set attribute ids per triangle. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1MeshCompiler_afc2c2f0b8055be2afb2f8c021e5bc644}{set\+Face\+Attrib} (int \+\_\+i, int \+\_\+face\+Size, int $\ast$\+\_\+v, int \+\_\+attr\+ID)
\begin{DoxyCompactList}\small\item\em Set attribute ids per face. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Face Grouping and Subsets}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classACG_1_1MeshCompiler_a1910b3b2d47a502fa6a728722969f506}{set\+Face\+Group} (int \+\_\+i, short \+\_\+group\+ID)
\begin{DoxyCompactList}\small\item\em Specify face groups. \end{DoxyCompactList}\item 
int \hyperlink{classACG_1_1MeshCompiler_a52a9420e23c711b40e9395e0c40ba1fb}{find\+Group\+Subset} (int \+\_\+group\+ID)
\begin{DoxyCompactList}\small\item\em get subset ID of a group \end{DoxyCompactList}\item 
int \hyperlink{classACG_1_1MeshCompiler_a5cb1e6553f1eede48b0613539baf2782}{get\+Face\+Group} (int \+\_\+face\+ID) const
\begin{DoxyCompactList}\small\item\em Get Face Group of the given face. \end{DoxyCompactList}\item 
int \hyperlink{classACG_1_1MeshCompiler_af40f2412c709b4ae6d8415f3ba836027}{get\+Tri\+Group} (int \+\_\+tri\+ID) const
\begin{DoxyCompactList}\small\item\em Get Group Id of the triangle. \end{DoxyCompactList}\item 
int \hyperlink{classACG_1_1MeshCompiler_a9cafb10a313ba6fda95f8b22a005d283}{get\+Num\+Subsets} () const
\begin{DoxyCompactList}\small\item\em Get the number of subsets. \end{DoxyCompactList}\item 
const \hyperlink{structACG_1_1MeshCompiler_1_1Subset}{Subset} $\ast$ \hyperlink{classACG_1_1MeshCompiler_a3388ed5dbece872a7a5e6e64c751b21c}{get\+Subset} (int \+\_\+i) const
\begin{DoxyCompactList}\small\item\em get a specific subset \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Mesh Compilation}\par
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_aeb9216c3b3ef1c97888e584dd2b7b7b3}{get\+Num\+Vertices} () const
\item 
void \hyperlink{classACG_1_1MeshCompiler_a364ede2f503870c1ab33a6d13d286ee8}{set\+Provoking\+Vertex} (int \+\_\+v)
\item 
int \hyperlink{classACG_1_1MeshCompiler_a54c980ce7758b6ced1a86994c6f84a26}{get\+Provoking\+Vertex} () const
\item 
void \hyperlink{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_a59222f7f0ac697896a9d7ae8d826c45a}{get\+Index\+Buffer} () const
\item 
void \hyperlink{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler_a4f9a52f8deddd8afef4a0091bce6ab61}{get\+Num\+Triangles} () const
\item 
int \hyperlink{classACG_1_1MeshCompiler_a17813f687587b0c3954dce0d7fe08ba2}{get\+Num\+Faces} () const
\item 
int \hyperlink{classACG_1_1MeshCompiler_a338c7f45bc35ef785d58dea6f9e0ddb4}{get\+Face\+Size} (const int \+\_\+i) const
\begin{DoxyCompactList}\small\item\em Get size of input face. \end{DoxyCompactList}\item 
const \hyperlink{classACG_1_1VertexDeclaration}{Vertex\+Declaration} $\ast$ \hyperlink{classACG_1_1MeshCompiler_a62c95663d6dc69994d267a6ac37399be}{get\+Vertex\+Declaration} () const
\item 
void \hyperlink{classACG_1_1MeshCompiler_a0075cd3feecf372cd2d40dab6b1d0f95}{get\+Vertex} (int \+\_\+id, void $\ast$\+\_\+out) const
\item 
int \hyperlink{classACG_1_1MeshCompiler_afe8cf599ea8ef930a1321565055312d5}{get\+Index} (int \+\_\+i) const
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Input/\+Output ID mapping}\par
\begin{DoxyCompactItemize}
\item 
int \hyperlink{classACG_1_1MeshCompiler_ae1caccaff80782b8f358bd74f922f913}{map\+To\+Original\+Vertex\+ID} (const size\+\_\+t \+\_\+i, int \&\+\_\+face\+ID, int \&\+\_\+corner\+ID) const
\item 
int \hyperlink{classACG_1_1MeshCompiler_a92cfa7b36b97dfd49e6078d1673ad83b}{map\+To\+Original\+Face\+ID} (const int \+\_\+tri\+ID) const
\item 
const int $\ast$ \hyperlink{classACG_1_1MeshCompiler_a1541beac963661f116ed4bcf568b75ab}{map\+To\+Original\+Face\+I\+D\+Ptr} () const
\item 
int \hyperlink{classACG_1_1MeshCompiler_a81e1c9b463a727558da2fb74beff1d8c}{map\+To\+Draw\+Vertex\+ID} (const int \+\_\+face\+ID, const int \+\_\+corner\+ID) const
\item 
int \hyperlink{classACG_1_1MeshCompiler_a73adcf5ff2453f16efbaa0d3df8b13fe}{map\+To\+Draw\+Tri\+ID} (const int \+\_\+face\+ID, const int \+\_\+k=0, int $\ast$\+\_\+num\+Tris\+Out=0) const
\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}\textbf{ Triangulation properties}\par
\begin{DoxyCompactItemize}
\item 
bool \hyperlink{classACG_1_1MeshCompiler_ac41b208f389294c1e5606807cbc51615}{is\+Triangle\+Mesh} () const
\item 
bool \hyperlink{classACG_1_1MeshCompiler_a2f356c51f9c1855a5703dd2baf10bded}{is\+Face\+Edge} (const int \+\_\+tri\+ID, const int \+\_\+edge) const
\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a0ec093cdf6180583f7234c7229742687}\label{classACG_1_1MeshCompiler_a0ec093cdf6180583f7234c7229742687}} 
void {\bfseries compute\+Adjacency} (bool \+\_\+force\+Recompute=false)
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a1805849258dbb50a1612d4d669982046}\label{classACG_1_1MeshCompiler_a1805849258dbb50a1612d4d669982046}} 
void {\bfseries split\+Vertices} ()
\item 
void \hyperlink{classACG_1_1MeshCompiler_a778cbed4d0f4417361bd2130e83e4a86}{get\+Input\+Face\+Vertex} (const int \+\_\+face, const int \+\_\+corner, int $\ast$\+\_\+out) const
\item 
void \hyperlink{classACG_1_1MeshCompiler_ac457272aa9674c2001ae007326cc6507}{get\+Input\+Face\+Vertex\+\_\+\+Welded} (const int \+\_\+face, const int \+\_\+corner, int $\ast$\+\_\+out) const
\item 
void \hyperlink{classACG_1_1MeshCompiler_a50383359ce8961eab61576cf4f0d2938}{get\+Input\+Face\+Vertex\+Data} (const int \+\_\+face, const int \+\_\+corner, void $\ast$\+\_\+out) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ab5badc682552c3c8129345eb5b9d360b}\label{classACG_1_1MeshCompiler_ab5badc682552c3c8129345eb5b9d360b}} 
int {\bfseries get\+Input\+Index} (const int \&\+\_\+face, const int \&\+\_\+corner, const int \&\+\_\+attr\+Id) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a4967362602a2a78e38f6319509be805a}\label{classACG_1_1MeshCompiler_a4967362602a2a78e38f6319509be805a}} 
int {\bfseries get\+Adj\+Vertex\+Face\+Count} (int \+\_\+vertex\+ID) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a5730330b3c2b13c6cd7d45241cd1d5a7}\label{classACG_1_1MeshCompiler_a5730330b3c2b13c6cd7d45241cd1d5a7}} 
int {\bfseries get\+Adj\+Vertex\+Face} (int \+\_\+vertex\+ID, int \+\_\+k) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a3a96e12df5d431fd140a68174e2da192}\label{classACG_1_1MeshCompiler_a3a96e12df5d431fd140a68174e2da192}} 
int {\bfseries get\+Input\+Index\+Split} (const int \+\_\+face, const int \+\_\+corner) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ae8cf994ae3da1a925397d624d1e077f1}\label{classACG_1_1MeshCompiler_ae8cf994ae3da1a925397d624d1e077f1}} 
void {\bfseries set\+Input\+Index\+Split} (const int \+\_\+face, const int \+\_\+corner, const int \+\_\+val)
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a9e5582e4d3dadfa7c27fae4eded7b57c}\label{classACG_1_1MeshCompiler_a9e5582e4d3dadfa7c27fae4eded7b57c}} 
int {\bfseries map\+Tri\+To\+Input\+Face} (const int \+\_\+tri) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a48672824a8962687a4f3fabd0644285a}\label{classACG_1_1MeshCompiler_a48672824a8962687a4f3fabd0644285a}} 
int {\bfseries get\+Input\+Index\+Offset} (const int \+\_\+face, const int \+\_\+corner) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a3ce5d42a6944dd86425eb11453676ebb}\label{classACG_1_1MeshCompiler_a3ce5d42a6944dd86425eb11453676ebb}} 
int {\bfseries get\+Input\+Face\+Offset} (const int \+\_\+face) const
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a29c063e6af0111770eae41ea0f498a62}\label{classACG_1_1MeshCompiler_a29c063e6af0111770eae41ea0f498a62}} 
void \hyperlink{classACG_1_1MeshCompiler_a29c063e6af0111770eae41ea0f498a62}{prepare\+Data} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classACG_1_1MeshCompiler_a9ccef4e10e89c0f02640c11b2497c4fa}{build()} preparation \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ab5efefdb00e10e41027c52ee9ad37402}\label{classACG_1_1MeshCompiler_ab5efefdb00e10e41027c52ee9ad37402}} 
void {\bfseries find\+Isolated\+Vertices} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_afe88339d5c4520f2604b43ca76237c19}\label{classACG_1_1MeshCompiler_afe88339d5c4520f2604b43ca76237c19}} 
void {\bfseries force\+Unshared\+Face\+Vertex} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a856f61497a37d35fe654320aa3903f96}\label{classACG_1_1MeshCompiler_a856f61497a37d35fe654320aa3903f96}} 
void {\bfseries weld\+Vertices} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a730c54d502f888f0aec919f5d514b4f4}\label{classACG_1_1MeshCompiler_a730c54d502f888f0aec919f5d514b4f4}} 
void {\bfseries fix\+Weld\+Map} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a2635ce68766299d936c61a3866e686eb}\label{classACG_1_1MeshCompiler_a2635ce68766299d936c61a3866e686eb}} 
void {\bfseries triangulate} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a3f97b37bd174b9a43d991d82e6f0b013}\label{classACG_1_1MeshCompiler_a3f97b37bd174b9a43d991d82e6f0b013}} 
void {\bfseries resolve\+Triangulation} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a975fe9579ca0dc355ab6761ab14dfb51}\label{classACG_1_1MeshCompiler_a975fe9579ca0dc355ab6761ab14dfb51}} 
void {\bfseries sort\+Faces\+By\+Group} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a347eeab73881bd5e0e406ce7fc0e1c3c}\label{classACG_1_1MeshCompiler_a347eeab73881bd5e0e406ce7fc0e1c3c}} 
void {\bfseries optimize} ()
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ae4ff88f5b252247e792844648bae050d}\label{classACG_1_1MeshCompiler_ae4ff88f5b252247e792844648bae050d}} 
void {\bfseries create\+Vertex\+Map} (bool \+\_\+keep\+Isolated\+Verts)
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ac396aa3410cf8ee80ac1038c10a4e931}\label{classACG_1_1MeshCompiler_ac396aa3410cf8ee80ac1038c10a4e931}} 
void {\bfseries create\+Face\+Map} ()
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a945e41e05888cb8bbfba900a6d047e0e}\label{classACG_1_1MeshCompiler_a945e41e05888cb8bbfba900a6d047e0e}} 
\hyperlink{structACG_1_1MeshCompiler_1_1VertexElementInput}{Vertex\+Element\+Input} {\bfseries input\+\_\+} \mbox{[}16\mbox{]}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a2fa91199f73ffa9409c2d001f9fbd895}\label{classACG_1_1MeshCompiler_a2fa91199f73ffa9409c2d001f9fbd895}} 
int {\bfseries input\+I\+D\+Pos\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_acfc808bdbb057733a6aee3322bb0f58e}\label{classACG_1_1MeshCompiler_acfc808bdbb057733a6aee3322bb0f58e}} 
int {\bfseries input\+I\+D\+Norm\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a81ed72333d7c5e13c597b77df240dbd6}\label{classACG_1_1MeshCompiler_a81ed72333d7c5e13c597b77df240dbd6}} 
int {\bfseries input\+I\+D\+Tex\+C\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a17b2c9986d17aa5483c0c4955af3de3a}\label{classACG_1_1MeshCompiler_a17b2c9986d17aa5483c0c4955af3de3a}} 
int {\bfseries num\+Attributes\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ae1d1bdbbfa1342915e1a81ce27065de2}\label{classACG_1_1MeshCompiler_ae1d1bdbbfa1342915e1a81ce27065de2}} 
\hyperlink{classACG_1_1VertexDeclaration}{Vertex\+Declaration} {\bfseries decl\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a6e899cad50c8479d3a1482431b7eb454}\label{classACG_1_1MeshCompiler_a6e899cad50c8479d3a1482431b7eb454}} 
int {\bfseries num\+Faces\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a7a600dff1eadda6c62aec5a7a37c84f9}\label{classACG_1_1MeshCompiler_a7a600dff1eadda6c62aec5a7a37c84f9}} 
int {\bfseries num\+Indices\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_afaafe6bf5b52a139c3ef45dd0cd83f2b}\label{classACG_1_1MeshCompiler_afaafe6bf5b52a139c3ef45dd0cd83f2b}} 
std\+::vector$<$ int $>$ {\bfseries face\+Start\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a4b9deb254f1e19d3326dff3fde662198}\label{classACG_1_1MeshCompiler_a4b9deb254f1e19d3326dff3fde662198}} 
std\+::vector$<$ int $>$ {\bfseries face\+Size\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a533b8f2fd42fdd2fe472fae86ff20303}\label{classACG_1_1MeshCompiler_a533b8f2fd42fdd2fe472fae86ff20303}} 
std\+::vector$<$ int $>$ {\bfseries face\+Data\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a974cda701b0872673ecf544e85a777ad}\label{classACG_1_1MeshCompiler_a974cda701b0872673ecf544e85a777ad}} 
size\+\_\+t {\bfseries max\+Face\+Size\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a210c4be80b5a2f90e96a6bd002fc4f64}\label{classACG_1_1MeshCompiler_a210c4be80b5a2f90e96a6bd002fc4f64}} 
bool {\bfseries constant\+Face\+Size\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a6fead713277d03d6ca0f6e03a746ce74}\label{classACG_1_1MeshCompiler_a6fead713277d03d6ca0f6e03a746ce74}} 
std\+::vector$<$ short $>$ {\bfseries face\+Group\+I\+Ds\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a8a25385546dd003fc3da301aeb361bee}\label{classACG_1_1MeshCompiler_a8a25385546dd003fc3da301aeb361bee}} 
int {\bfseries cur\+Face\+Input\+Pos\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_afeedd223f2ece49e0f6346cd22a8cba9}\label{classACG_1_1MeshCompiler_afeedd223f2ece49e0f6346cd22a8cba9}} 
\hyperlink{classACG_1_1MeshCompilerFaceInput}{Mesh\+Compiler\+Face\+Input} $\ast$ {\bfseries face\+Input\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ad9f2ddfa0c61b0f65184fac5bea2f183}\label{classACG_1_1MeshCompiler_ad9f2ddfa0c61b0f65184fac5bea2f183}} 
bool {\bfseries delete\+Face\+Inpute\+Data\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_adbb335304fa31ba2366192fc0476fdbc}\label{classACG_1_1MeshCompiler_adbb335304fa31ba2366192fc0476fdbc}} 
std\+::vector$<$ int $>$ {\bfseries face\+Buf\+Split\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a8b9cb08a0030baee4e1b839a9daf9642}\label{classACG_1_1MeshCompiler_a8b9cb08a0030baee4e1b839a9daf9642}} 
std\+::vector$<$ int $>$ {\bfseries face\+Sort\+Map\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_aea72960338211806a85f43bd85d98d36}\label{classACG_1_1MeshCompiler_aea72960338211806a85f43bd85d98d36}} 
int {\bfseries provoking\+Vertex\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a3ab1412610be95f9c63449c295c5aacf}\label{classACG_1_1MeshCompiler_a3ab1412610be95f9c63449c295c5aacf}} 
bool {\bfseries provoking\+Vertex\+Set\+By\+User\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a7da1e3b5d253d022820c0aecd4803f00}\label{classACG_1_1MeshCompiler_a7da1e3b5d253d022820c0aecd4803f00}} 
int {\bfseries num\+Tris\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_aa0f33832c8688f4037fb5b8af609ed7b}\label{classACG_1_1MeshCompiler_aa0f33832c8688f4037fb5b8af609ed7b}} 
std\+::vector$<$ int $>$ {\bfseries tri\+Index\+Buffer\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ac19794d68e2c3f4c51945dc82b31cb97}\label{classACG_1_1MeshCompiler_ac19794d68e2c3f4c51945dc82b31cb97}} 
std\+::vector$<$ int $>$ {\bfseries isolated\+Vertices\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a9f38c38a4f93021fee1c79e0612fb58f}\label{classACG_1_1MeshCompiler_a9f38c38a4f93021fee1c79e0612fb58f}} 
int {\bfseries num\+Subsets\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_ab1a8fca2f84a4dd10d8abe5e8cd61744}\label{classACG_1_1MeshCompiler_ab1a8fca2f84a4dd10d8abe5e8cd61744}} 
std\+::vector$<$ \hyperlink{structACG_1_1MeshCompiler_1_1Subset}{Subset} $>$ {\bfseries subsets\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a4eb8787b9a04d831aae8d21683420726}\label{classACG_1_1MeshCompiler_a4eb8787b9a04d831aae8d21683420726}} 
std\+::map$<$ int, int $>$ {\bfseries subset\+I\+D\+Map\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a66bcd6d905e9746d590e9501f24d9528}\label{classACG_1_1MeshCompiler_a66bcd6d905e9746d590e9501f24d9528}} 
\hyperlink{structACG_1_1MeshCompiler_1_1AdjacencyList}{Adjacency\+List} {\bfseries adjacency\+Vert\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_aedf9f168ea5c8fa9c5541269d864044e}\label{classACG_1_1MeshCompiler_aedf9f168ea5c8fa9c5541269d864044e}} 
\hyperlink{classACG_1_1MeshCompilerVertexCompare}{Mesh\+Compiler\+Vertex\+Compare} $\ast$ {\bfseries vertex\+Compare\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a978da0a2f93db39e6165ecb8e867dfff}\label{classACG_1_1MeshCompiler_a978da0a2f93db39e6165ecb8e867dfff}} 
std\+::vector$<$ int $>$ {\bfseries vertex\+Weld\+Map\+Face\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_af47c9c9f007b58f5b287a32b4a9cf737}\label{classACG_1_1MeshCompiler_af47c9c9f007b58f5b287a32b4a9cf737}} 
std\+::vector$<$ int $>$ {\bfseries vertex\+Weld\+Map\+Corner\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a7c98847b304a0ea4d2142058755a8be0}\label{classACG_1_1MeshCompiler_a7c98847b304a0ea4d2142058755a8be0}} 
\hyperlink{structACG_1_1MeshCompiler_1_1VertexSplitter}{Vertex\+Splitter} $\ast$ {\bfseries splitter\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a51855527c6c589d61e7b839251bd3643}\label{classACG_1_1MeshCompiler_a51855527c6c589d61e7b839251bd3643}} 
std\+::vector$<$ int $>$ \hyperlink{classACG_1_1MeshCompiler_a51855527c6c589d61e7b839251bd3643}{tri\+To\+Sort\+Face\+Map\+\_\+}
\begin{DoxyCompactList}\small\item\em maps from triangle ID to sorted face ID \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a6a5b938fe21137d8109fb5fe093b5555}\label{classACG_1_1MeshCompiler_a6a5b938fe21137d8109fb5fe093b5555}} 
std\+::vector$<$ int $>$ \hyperlink{classACG_1_1MeshCompiler_a6a5b938fe21137d8109fb5fe093b5555}{tri\+Opt\+Map\+\_\+}
\begin{DoxyCompactList}\small\item\em maps from optimized tri ID to unoptimized tri ID \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_abae5cfde3cf341a51bd19386c4054729}\label{classACG_1_1MeshCompiler_abae5cfde3cf341a51bd19386c4054729}} 
std\+::vector$<$ int $>$ \hyperlink{classACG_1_1MeshCompiler_abae5cfde3cf341a51bd19386c4054729}{vertex\+Map\+Face\+\_\+}
\begin{DoxyCompactList}\small\item\em vertex index in vbo -\/$>$ input (face id, corner id) pair , also inverse of face\+Buf\+Split\+\_\+ \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a9dc8bdfde14413731fce882cbe0a5327}\label{classACG_1_1MeshCompiler_a9dc8bdfde14413731fce882cbe0a5327}} 
std\+::vector$<$ int $>$ {\bfseries vertex\+Map\+Corner\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a755bb750ed95d845403dfb1545dc6a45}\label{classACG_1_1MeshCompiler_a755bb750ed95d845403dfb1545dc6a45}} 
std\+::vector$<$ int $>$ \hyperlink{classACG_1_1MeshCompiler_a755bb750ed95d845403dfb1545dc6a45}{face\+To\+Tri\+Map\+\_\+}
\begin{DoxyCompactList}\small\item\em input face index -\/$>$ output tri index \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a2ceee16e6befb87103727bb8cccd438d}\label{classACG_1_1MeshCompiler_a2ceee16e6befb87103727bb8cccd438d}} 
std\+::vector$<$ int $>$ {\bfseries face\+To\+Tri\+Map\+Offset\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a63e3c373463a66295a58ddc589b2970a}\label{classACG_1_1MeshCompiler_a63e3c373463a66295a58ddc589b2970a}} 
std\+::vector$<$ int $>$ \hyperlink{classACG_1_1MeshCompiler_a63e3c373463a66295a58ddc589b2970a}{tri\+To\+Face\+Map\+\_\+}
\begin{DoxyCompactList}\small\item\em output tri index -\/$>$ input face index \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a731d5a01de6be10bbb3f0d102466a1f3}\label{classACG_1_1MeshCompiler_a731d5a01de6be10bbb3f0d102466a1f3}} 
size\+\_\+t \hyperlink{classACG_1_1MeshCompiler_a731d5a01de6be10bbb3f0d102466a1f3}{num\+Draw\+Verts\+\_\+}
\begin{DoxyCompactList}\small\item\em \subsection*{vertices in vbo}\end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_aac1a8b3fa68d8aef88445875ddcb7647}\label{classACG_1_1MeshCompiler_aac1a8b3fa68d8aef88445875ddcb7647}} 
size\+\_\+t \hyperlink{classACG_1_1MeshCompiler_aac1a8b3fa68d8aef88445875ddcb7647}{num\+Isolated\+Verts\+\_\+}
\begin{DoxyCompactList}\small\item\em \subsection*{isolated vertices}\end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_acf43ff0f6387c335ae455bb854da4e10}\label{classACG_1_1MeshCompiler_acf43ff0f6387c335ae455bb854da4e10}} 
std\+::vector$<$ int $>$ \hyperlink{classACG_1_1MeshCompiler_acf43ff0f6387c335ae455bb854da4e10}{indices\+\_\+}
\begin{DoxyCompactList}\small\item\em index buffer \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1MeshCompiler_aec426ea1514afbd45b2c13807c53d45e}\label{classACG_1_1MeshCompiler_aec426ea1514afbd45b2c13807c53d45e}} 
static \hyperlink{classACG_1_1MeshCompilerVertexCompare}{Mesh\+Compiler\+Vertex\+Compare} {\bfseries default\+Vertex\+Compare}
\end{DoxyCompactItemize}


\subsection{Detailed Description}


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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a9ccef4e10e89c0f02640c11b2497c4fa}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{build()}{build()}}
{\footnotesize\ttfamily 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})}



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 1699 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a52a9420e23c711b40e9395e0c40ba1fb}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{find\+Group\+Subset()}{findGroupSubset()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::find\+Group\+Subset (\begin{DoxyParamCaption}\item[{int}]{\+\_\+group\+ID }\end{DoxyParamCaption})}



get subset ID of a group 


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a5cb1e6553f1eede48b0613539baf2782}\label{classACG_1_1MeshCompiler_a5cb1e6553f1eede48b0613539baf2782}} 
\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{\texorpdfstring{get\+Face\+Group()}{getFaceGroup()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Face\+Group (\begin{DoxyParamCaption}\item[{int}]{\+\_\+face\+ID }\end{DoxyParamCaption}) const}



Get Face Group of the given face. 


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a338c7f45bc35ef785d58dea6f9e0ddb4}\label{classACG_1_1MeshCompiler_a338c7f45bc35ef785d58dea6f9e0ddb4}} 
\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{\texorpdfstring{get\+Face\+Size()}{getFaceSize()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Face\+Size (\begin{DoxyParamCaption}\item[{const int}]{\+\_\+i }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get size of input face. 


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_afe8cf599ea8ef930a1321565055312d5}\label{classACG_1_1MeshCompiler_afe8cf599ea8ef930a1321565055312d5}} 
\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{\texorpdfstring{get\+Index()}{getIndex()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index (\begin{DoxyParamCaption}\item[{int}]{\+\_\+i }\end{DoxyParamCaption}) const}

Get index in final draw index buffer. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a84816d9e407bbb5384f4fd3b2c943493}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{get\+Index\+Adj\+Buffer()}{getIndexAdjBuffer()}}
{\footnotesize\ttfamily 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})}



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\+CY 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 3269 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a5d738a119a02b0469be28b87ed71fdf9}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{get\+Index\+Adj\+Buffer\+\_\+\+Brute\+Force()}{getIndexAdjBuffer\_BruteForce()}}
{\footnotesize\ttfamily 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})}



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 3590 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a923647a607f246c186c002bfb356e921}\label{classACG_1_1MeshCompiler_a923647a607f246c186c002bfb356e921}} 
\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!get\+Index\+Adj\+Buffer\+\_\+\+MT@{get\+Index\+Adj\+Buffer\+\_\+\+MT}}
\index{get\+Index\+Adj\+Buffer\+\_\+\+MT@{get\+Index\+Adj\+Buffer\+\_\+\+MT}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection{\texorpdfstring{get\+Index\+Adj\+Buffer\+\_\+\+M\+T()}{getIndexAdjBuffer\_MT()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index\+Adj\+Buffer\+\_\+\+MT (\begin{DoxyParamCaption}\item[{void $\ast$}]{\+\_\+dst,  }\item[{const int}]{\+\_\+border\+Index = {\ttfamily -\/1} }\end{DoxyParamCaption})}



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 3454 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a59222f7f0ac697896a9d7ae8d826c45a}\label{classACG_1_1MeshCompiler_a59222f7f0ac697896a9d7ae8d826c45a}} 
\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{\texorpdfstring{get\+Index\+Buffer()}{getIndexBuffer()}}
{\footnotesize\ttfamily const int$\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::get\+Index\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Get index buffer ready for rendering. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a778cbed4d0f4417361bd2130e83e4a86}\label{classACG_1_1MeshCompiler_a778cbed4d0f4417361bd2130e83e4a86}} 
\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{\texorpdfstring{get\+Input\+Face\+Vertex()}{getInputFaceVertex()}}
{\footnotesize\ttfamily 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]}}

i\+: face index j\+: corner index \+\_\+out\+: output vertex (index for each attribute) 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_ac457272aa9674c2001ae007326cc6507}\label{classACG_1_1MeshCompiler_ac457272aa9674c2001ae007326cc6507}} 
\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{\texorpdfstring{get\+Input\+Face\+Vertex\+\_\+\+Welded()}{getInputFaceVertex\_Welded()}}
{\footnotesize\ttfamily 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]}}

i\+: face index j\+: corner index \+\_\+out\+: output vertex (index for each attribute) post welding operation 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a50383359ce8961eab61576cf4f0d2938}\label{classACG_1_1MeshCompiler_a50383359ce8961eab61576cf4f0d2938}} 
\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{\texorpdfstring{get\+Input\+Face\+Vertex\+Data()}{getInputFaceVertexData()}}
{\footnotesize\ttfamily 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]}}

i\+: face index j\+: corner index \+\_\+out\+: output vertex address (vertex data) 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_afd1702aa149db5af7b274eefcf4671cf}\label{classACG_1_1MeshCompiler_afd1702aa149db5af7b274eefcf4671cf}} 
\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{\texorpdfstring{get\+Memory\+Usage()}{getMemoryUsage()}}
{\footnotesize\ttfamily size\+\_\+t A\+C\+G\+::\+Mesh\+Compiler\+::get\+Memory\+Usage (\begin{DoxyParamCaption}\item[{bool}]{\+\_\+print\+Console = {\ttfamily true} }\end{DoxyParamCaption}) const}

return memory consumption in bytes 
\begin{DoxyParams}{Parameters}
{\em \+\_\+print\+Console} & print detailed memory costs to command console \\
\hline
\end{DoxyParams}


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a17813f687587b0c3954dce0d7fe08ba2}\label{classACG_1_1MeshCompiler_a17813f687587b0c3954dce0d7fe08ba2}} 
\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{\texorpdfstring{get\+Num\+Faces()}{getNumFaces()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Faces (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

Get number of input faces. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a7822e5c64a488b1ea771782bf953b6c2}\label{classACG_1_1MeshCompiler_a7822e5c64a488b1ea771782bf953b6c2}} 
\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{\texorpdfstring{get\+Num\+Input\+Attributes()}{getNumInputAttributes()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Input\+Attributes (\begin{DoxyParamCaption}\item[{int}]{\+\_\+attr\+Idx }\end{DoxyParamCaption}) const}

Get number of attributes in an input buffer


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a9cafb10a313ba6fda95f8b22a005d283}\label{classACG_1_1MeshCompiler_a9cafb10a313ba6fda95f8b22a005d283}} 
\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{\texorpdfstring{get\+Num\+Subsets()}{getNumSubsets()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Subsets (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the number of subsets. 

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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a4f9a52f8deddd8afef4a0091bce6ab61}\label{classACG_1_1MeshCompiler_a4f9a52f8deddd8afef4a0091bce6ab61}} 
\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{\texorpdfstring{get\+Num\+Triangles()}{getNumTriangles()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Triangles (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Get number of triangles in final buffer. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_aeb9216c3b3ef1c97888e584dd2b7b7b3}\label{classACG_1_1MeshCompiler_aeb9216c3b3ef1c97888e584dd2b7b7b3}} 
\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{\texorpdfstring{get\+Num\+Vertices()}{getNumVertices()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Num\+Vertices (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Get number of vertices in final buffer. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a54c980ce7758b6ced1a86994c6f84a26}\label{classACG_1_1MeshCompiler_a54c980ce7758b6ced1a86994c6f84a26}} 
\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{\texorpdfstring{get\+Provoking\+Vertex()}{getProvokingVertex()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Provoking\+Vertex (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

See gl\+Provoking\+Vertex()

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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a3388ed5dbece872a7a5e6e64c751b21c}\label{classACG_1_1MeshCompiler_a3388ed5dbece872a7a5e6e64c751b21c}} 
\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{\texorpdfstring{get\+Subset()}{getSubset()}}
{\footnotesize\ttfamily const \hyperlink{structACG_1_1MeshCompiler_1_1Subset}{Mesh\+Compiler\+::\+Subset} $\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::get\+Subset (\begin{DoxyParamCaption}\item[{int}]{\+\_\+i }\end{DoxyParamCaption}) const}



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 1947 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_af40f2412c709b4ae6d8415f3ba836027}\label{classACG_1_1MeshCompiler_af40f2412c709b4ae6d8415f3ba836027}} 
\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{\texorpdfstring{get\+Tri\+Group()}{getTriGroup()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::get\+Tri\+Group (\begin{DoxyParamCaption}\item[{int}]{\+\_\+tri\+ID }\end{DoxyParamCaption}) const}



Get Group Id of the triangle. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+tri\+ID} & Id of the triangle \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Group of the triangle 
\end{DoxyReturn}
\mbox{\Hypertarget{classACG_1_1MeshCompiler_a0075cd3feecf372cd2d40dab6b1d0f95}\label{classACG_1_1MeshCompiler_a0075cd3feecf372cd2d40dab6b1d0f95}} 
\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{\texorpdfstring{get\+Vertex()}{getVertex()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::get\+Vertex (\begin{DoxyParamCaption}\item[{int}]{\+\_\+id,  }\item[{void $\ast$}]{\+\_\+out }\end{DoxyParamCaption}) const}

Get vertex in final draw vertex buffer. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a87186ca21b5a3ef6952581bedd579286}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{get\+Vertex\+Buffer()}{getVertexBuffer()}}
{\footnotesize\ttfamily 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})}



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 3207 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a62c95663d6dc69994d267a6ac37399be}\label{classACG_1_1MeshCompiler_a62c95663d6dc69994d267a6ac37399be}} 
\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{\texorpdfstring{get\+Vertex\+Declaration()}{getVertexDeclaration()}}
{\footnotesize\ttfamily const \hyperlink{classACG_1_1VertexDeclaration}{Vertex\+Declaration}$\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::get\+Vertex\+Declaration (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Get Vertex declaration. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a2f356c51f9c1855a5703dd2baf10bded}\label{classACG_1_1MeshCompiler_a2f356c51f9c1855a5703dd2baf10bded}} 
\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{\texorpdfstring{is\+Face\+Edge()}{isFaceEdge()}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Mesh\+Compiler\+::is\+Face\+Edge (\begin{DoxyParamCaption}\item[{const int}]{\+\_\+tri\+ID,  }\item[{const int}]{\+\_\+edge }\end{DoxyParamCaption}) const}

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\+ID} & triangle ID 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 4042 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_ac41b208f389294c1e5606807cbc51615}\label{classACG_1_1MeshCompiler_ac41b208f389294c1e5606807cbc51615}} 
\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{\texorpdfstring{is\+Triangle\+Mesh()}{isTriangleMesh()}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Mesh\+Compiler\+::is\+Triangle\+Mesh (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

Test if the input mesh consists of triangles only. 

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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a73adcf5ff2453f16efbaa0d3df8b13fe}\label{classACG_1_1MeshCompiler_a73adcf5ff2453f16efbaa0d3df8b13fe}} 
\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Draw\+Tri\+ID@{map\+To\+Draw\+Tri\+ID}}
\index{map\+To\+Draw\+Tri\+ID@{map\+To\+Draw\+Tri\+ID}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection{\texorpdfstring{map\+To\+Draw\+Tri\+I\+D()}{mapToDrawTriID()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Draw\+Tri\+ID (\begin{DoxyParamCaption}\item[{const int}]{\+\_\+face\+ID,  }\item[{const int}]{\+\_\+k = {\ttfamily 0},  }\item[{int $\ast$}]{\+\_\+num\+Tris\+Out = {\ttfamily 0} }\end{DoxyParamCaption}) const}

Mapping from input Face id -\/$>$ draw triangle id


\begin{DoxyParams}{Parameters}
{\em \+\_\+face\+ID} & Face ID 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 ID in output vertex buffer 
\end{DoxyReturn}


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a81e1c9b463a727558da2fb74beff1d8c}\label{classACG_1_1MeshCompiler_a81e1c9b463a727558da2fb74beff1d8c}} 
\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Draw\+Vertex\+ID@{map\+To\+Draw\+Vertex\+ID}}
\index{map\+To\+Draw\+Vertex\+ID@{map\+To\+Draw\+Vertex\+ID}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection{\texorpdfstring{map\+To\+Draw\+Vertex\+I\+D()}{mapToDrawVertexID()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Draw\+Vertex\+ID (\begin{DoxyParamCaption}\item[{const int}]{\+\_\+face\+ID,  }\item[{const int}]{\+\_\+corner\+ID }\end{DoxyParamCaption}) const}

Mapping from input vertex id -\/$>$ draw vertex id


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a92cfa7b36b97dfd49e6078d1673ad83b}\label{classACG_1_1MeshCompiler_a92cfa7b36b97dfd49e6078d1673ad83b}} 
\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Original\+Face\+ID@{map\+To\+Original\+Face\+ID}}
\index{map\+To\+Original\+Face\+ID@{map\+To\+Original\+Face\+ID}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection{\texorpdfstring{map\+To\+Original\+Face\+I\+D()}{mapToOriginalFaceID()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Original\+Face\+ID (\begin{DoxyParamCaption}\item[{const int}]{\+\_\+tri\+ID }\end{DoxyParamCaption}) const}

Mapping from draw tri id -\/$>$ input face id


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a1541beac963661f116ed4bcf568b75ab}\label{classACG_1_1MeshCompiler_a1541beac963661f116ed4bcf568b75ab}} 
\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{\texorpdfstring{map\+To\+Original\+Face\+I\+D\+Ptr()}{mapToOriginalFaceIDPtr()}}
{\footnotesize\ttfamily const int $\ast$ A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Original\+Face\+I\+D\+Ptr (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

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{classACG_1_1MeshCompiler_a4f9a52f8deddd8afef4a0091bce6ab61}{get\+Num\+Triangles()} 
\end{DoxyReturn}


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_ae1caccaff80782b8f358bd74f922f913}\label{classACG_1_1MeshCompiler_ae1caccaff80782b8f358bd74f922f913}} 
\index{A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}!map\+To\+Original\+Vertex\+ID@{map\+To\+Original\+Vertex\+ID}}
\index{map\+To\+Original\+Vertex\+ID@{map\+To\+Original\+Vertex\+ID}!A\+C\+G\+::\+Mesh\+Compiler@{A\+C\+G\+::\+Mesh\+Compiler}}
\subsubsection{\texorpdfstring{map\+To\+Original\+Vertex\+I\+D()}{mapToOriginalVertexID()}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Mesh\+Compiler\+::map\+To\+Original\+Vertex\+ID (\begin{DoxyParamCaption}\item[{const size\+\_\+t}]{\+\_\+i,  }\item[{int \&}]{\+\_\+face\+ID,  }\item[{int \&}]{\+\_\+corner\+ID }\end{DoxyParamCaption}) const}

Mapping from draw vertex id -\/$>$ input vertex id


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_ae3ecd67df4f8c8b9be4d45bdede86e1e}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Attrib()}{setAttrib()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Attrib (\begin{DoxyParamCaption}\item[{int}]{\+\_\+attr\+Idx,  }\item[{int}]{\+\_\+v,  }\item[{const void $\ast$}]{\+\_\+data }\end{DoxyParamCaption})}

Set single custom input attributes.

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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_ae9c1c4f94d4fef41b17242e3bd25b380}\label{classACG_1_1MeshCompiler_ae9c1c4f94d4fef41b17242e3bd25b380}} 
\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{\texorpdfstring{set\+Attrib\+Vec()}{setAttribVec()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Attrib\+Vec (\begin{DoxyParamCaption}\item[{int}]{\+\_\+attr\+Idx,  }\item[{size\+\_\+t}]{\+\_\+num,  }\item[{const void $\ast$}]{\+\_\+data,  }\item[{size\+\_\+t}]{\+\_\+stride = {\ttfamily 0},  }\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false},  }\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0},  }\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1} }\end{DoxyParamCaption})}

Set custom input attribute.

Alternatively allocates an internal buffer only, such that data can be provided via \hyperlink{classACG_1_1MeshCompiler_ae3ecd67df4f8c8b9be4d45bdede86e1e}{set\+Attrib()}. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+attr\+Idx} & Attribute id from \hyperlink{classACG_1_1VertexDeclaration}{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 269 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_ad5f6f5fb1cee6d97f0092c4405973ca3}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Attrib()}{setFaceAttrib()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily 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\+ID }\end{DoxyParamCaption})}



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\+ID} & Which attribute\+: index of \hyperlink{classACG_1_1VertexDeclaration}{Vertex\+Declaration} element array \\
\hline
\end{DoxyParams}


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_afc2c2f0b8055be2afb2f8c021e5bc644}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Attrib()}{setFaceAttrib()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily 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\+ID }\end{DoxyParamCaption})}



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\+ID} & Which attribute\+: index of \hyperlink{classACG_1_1VertexDeclaration}{Vertex\+Declaration} element array \\
\hline
\end{DoxyParams}


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a1910b3b2d47a502fa6a728722969f506}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Group()}{setFaceGroup()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Group (\begin{DoxyParamCaption}\item[{int}]{\+\_\+i,  }\item[{short}]{\+\_\+group\+ID }\end{DoxyParamCaption})}



Specify face groups. 

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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a4dd0a9c4b7ef707c16adb67d07124464}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Input()}{setFaceInput()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Input (\begin{DoxyParamCaption}\item[{\hyperlink{classACG_1_1MeshCompilerFaceInput}{Mesh\+Compiler\+Face\+Input} $\ast$}]{\+\_\+face\+Input }\end{DoxyParamCaption})}

Set Face data input

Making use of the \hyperlink{classACG_1_1MeshCompilerFaceInput}{Mesh\+Compiler\+Face\+Input} interface completly overrides the default input behavior. Any subsequent call to default input data functions such as \hyperlink{classACG_1_1MeshCompiler_abf1cc276e43a44a8770c01a8e1c1bd05}{set\+Num\+Faces()}, \hyperlink{classACG_1_1MeshCompiler_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{classACG_1_1MeshCompiler}{Mesh\+Compiler}) \\
\hline
\end{DoxyParams}


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a98e2e73d7c9bcd2bfaaf970e745f2d6e}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Normals()}{setFaceNormals()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily 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})}



Set normal ids per triangle. 


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a419351cd1226ba757c36b2bd208ba96e}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Normals()}{setFaceNormals()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Normals (\begin{DoxyParamCaption}\item[{int}]{\+\_\+i,  }\item[{int}]{\+\_\+face\+Size,  }\item[{int $\ast$}]{\+\_\+v }\end{DoxyParamCaption})}



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 2983 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a4cab29f5592daa00852ce8a10b946dec}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Tex\+Coords()}{setFaceTexCoords()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily 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})}



Set texcoord ids per triangle. 


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a391448dc21df2bfc68787ccedf5e4a6b}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Tex\+Coords()}{setFaceTexCoords()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily 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})}



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 2995 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a76478052dd3603614b040c24f80a26ef}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Verts()}{setFaceVerts()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily 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})}



Set vertex ids per triangle. 


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


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

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a5eb36ea1e6f941acf0c454858a66bc8c}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Face\+Verts()}{setFaceVerts()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Face\+Verts (\begin{DoxyParamCaption}\item[{int}]{\+\_\+i,  }\item[{int}]{\+\_\+face\+Size,  }\item[{int $\ast$}]{\+\_\+v }\end{DoxyParamCaption})}



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 2972 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a5e0360be261dac148d70bf10d0a05185}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Index\+Buffer\+Interleaved()}{setIndexBufferInterleaved()}}
{\footnotesize\ttfamily 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})}



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 3987 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_abb981054d9e63a4c7e5a3dab9eab0e99}\label{classACG_1_1MeshCompiler_abb981054d9e63a4c7e5a3dab9eab0e99}} 
\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{\texorpdfstring{set\+Normals()}{setNormals()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Normals (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{\+\_\+num,  }\item[{const void $\ast$}]{\+\_\+data,  }\item[{size\+\_\+t}]{\+\_\+stride = {\ttfamily 0},  }\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false},  }\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0},  }\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1} }\end{DoxyParamCaption})}

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 258 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_abf1cc276e43a44a8770c01a8e1c1bd05}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Num\+Faces()}{setNumFaces()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Num\+Faces (\begin{DoxyParamCaption}\item[{const int}]{\+\_\+num\+Faces,  }\item[{const int}]{\+\_\+num\+Indices }\end{DoxyParamCaption})}



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 1202 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_a364ede2f503870c1ab33a6d13d286ee8}\label{classACG_1_1MeshCompiler_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{\texorpdfstring{set\+Provoking\+Vertex()}{setProvokingVertex()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Provoking\+Vertex (\begin{DoxyParamCaption}\item[{int}]{\+\_\+v }\end{DoxyParamCaption})}

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{classACG_1_1MeshCompiler_a364ede2f503870c1ab33a6d13d286ee8}{set\+Provoking\+Vertex()} must be called prior to \hyperlink{classACG_1_1MeshCompiler_a9ccef4e10e89c0f02640c11b2497c4fa}{build()}, if a different provoking vertex is desired. Additionally \hyperlink{classACG_1_1MeshCompiler_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 4021 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_ab93c56396b275ff2467b4bbf92609f63}\label{classACG_1_1MeshCompiler_ab93c56396b275ff2467b4bbf92609f63}} 
\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{\texorpdfstring{set\+Tex\+Coords()}{setTexCoords()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Tex\+Coords (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{\+\_\+num,  }\item[{const void $\ast$}]{\+\_\+data,  }\item[{size\+\_\+t}]{\+\_\+stride = {\ttfamily 0},  }\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false},  }\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0},  }\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1} }\end{DoxyParamCaption})}

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 263 of file Mesh\+Compiler.\+cc.

\mbox{\Hypertarget{classACG_1_1MeshCompiler_aa3b2df5e35854c76ff554407a45048cd}\label{classACG_1_1MeshCompiler_aa3b2df5e35854c76ff554407a45048cd}} 
\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{\texorpdfstring{set\+Vertices()}{setVertices()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Mesh\+Compiler\+::set\+Vertices (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{\+\_\+num,  }\item[{const void $\ast$}]{\+\_\+data,  }\item[{size\+\_\+t}]{\+\_\+stride = {\ttfamily 0},  }\item[{bool}]{\+\_\+internal\+Copy = {\ttfamily false},  }\item[{G\+Luint}]{\+\_\+fmt = {\ttfamily 0},  }\item[{int}]{\+\_\+element\+Size = {\ttfamily -\/1} }\end{DoxyParamCaption})}

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 253 of file Mesh\+Compiler.\+cc.



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