\hypertarget{a00507}{\section{A\+C\+G\+:\+:Draw\+Mesh\+T$<$ Mesh $>$ Class Template Reference}
\label{a00507}\index{A\+C\+G\+::\+Draw\+Mesh\+T$<$ Mesh $>$@{A\+C\+G\+::\+Draw\+Mesh\+T$<$ Mesh $>$}}
}


Mesh Drawing Class.  




{\ttfamily \#include $<$A\+C\+G/\+G\+L/\+Draw\+Mesh.\+hh$>$}

Inheritance diagram for A\+C\+G\+:\+:Draw\+Mesh\+T$<$ Mesh $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a00507}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a01260}{Subset}
\item 
struct \hyperlink{a01431}{Vertex\+Property}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00507_a014027941669fafae47441981c1f1c48}{enum {\bfseries Property\+Source} \{ {\bfseries P\+R\+O\+P\+E\+R\+T\+Y\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+V\+E\+R\+T\+E\+X} = 0, 
{\bfseries P\+R\+O\+P\+E\+R\+T\+Y\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+H\+A\+L\+F\+E\+D\+G\+E}, 
{\bfseries P\+R\+O\+P\+E\+R\+T\+Y\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+F\+A\+C\+E}
 \}}\label{a00507_a014027941669fafae47441981c1f1c48}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00507_a4480bc39d6ba9080db0da22ddfac7064}{{\bfseries Draw\+Mesh\+T} (\hyperlink{a01335}{Mesh} \&\+\_\+mesh)}\label{a00507_a4480bc39d6ba9080db0da22ddfac7064}

\item 
\hypertarget{a00507_aadf6c5330710157a2a350ab14e9b3d68}{void {\bfseries disable\+Colors} ()}\label{a00507_aadf6c5330710157a2a350ab14e9b3d68}

\item 
\hypertarget{a00507_a870fd391df57a53062039124d4a5f30a}{void {\bfseries use\+Per\+Vertex\+Colors} ()}\label{a00507_a870fd391df57a53062039124d4a5f30a}

\item 
\hypertarget{a00507_a34d4f7b63e852a7032513161e35fa2da}{void {\bfseries use\+Per\+Face\+Colors} ()}\label{a00507_a34d4f7b63e852a7032513161e35fa2da}

\item 
\hypertarget{a00507_a277a2a7ce55dc88caafe67c31301bf36}{void {\bfseries set\+Flat\+Shading} ()}\label{a00507_a277a2a7ce55dc88caafe67c31301bf36}

\item 
\hypertarget{a00507_ac858057c0625e5ab603d5c044323f69d}{void {\bfseries set\+Smooth\+Shading} ()}\label{a00507_ac858057c0625e5ab603d5c044323f69d}

\item 
\hypertarget{a00507_af28c9173ce7304ddab5682456e992da9}{void {\bfseries use\+Per\+Vertex\+Texcoords} ()}\label{a00507_af28c9173ce7304ddab5682456e992da9}

\item 
\hypertarget{a00507_a5e2c1dc5955b2d0ce256d8affdf9ae33}{void {\bfseries use\+Per\+Halfedge\+Texcoords} ()}\label{a00507_a5e2c1dc5955b2d0ce256d8affdf9ae33}

\item 
\hypertarget{a00507_ab3e0b6a765715467faf54cbeaeabc0d9}{void {\bfseries use\+Per\+Vertex\+Normals} ()}\label{a00507_ab3e0b6a765715467faf54cbeaeabc0d9}

\item 
\hypertarget{a00507_a2e2a06ae77484a22e1d0a819c3475db9}{void {\bfseries use\+Per\+Halfedge\+Normals} ()}\label{a00507_a2e2a06ae77484a22e1d0a819c3475db9}

\item 
\hypertarget{a00507_a2b98d07abfde4bc79519c2272c2a04f3}{void \hyperlink{a00507_a2b98d07abfde4bc79519c2272c2a04f3}{bind\+Buffers} ()}\label{a00507_a2b98d07abfde4bc79519c2272c2a04f3}

\begin{DoxyCompactList}\small\item\em eventually rebuilds buffers used for rendering and binds index and vertex buffer \end{DoxyCompactList}\item 
\hypertarget{a00507_abe2082b81e506c2717ebc129eb593613}{G\+Luint \hyperlink{a00507_abe2082b81e506c2717ebc129eb593613}{get\+V\+B\+O} ()}\label{a00507_abe2082b81e506c2717ebc129eb593613}

\begin{DoxyCompactList}\small\item\em get opengl vertex buffer id \end{DoxyCompactList}\item 
\hypertarget{a00507_ad44046f4e47b8c12269ea8771ce9082a}{G\+Luint \hyperlink{a00507_ad44046f4e47b8c12269ea8771ce9082a}{get\+I\+B\+O} ()}\label{a00507_ad44046f4e47b8c12269ea8771ce9082a}

\begin{DoxyCompactList}\small\item\em get opengl index buffer id \end{DoxyCompactList}\item 
\hypertarget{a00507_a1836950bef58097431e90a408b70fba0}{\hyperlink{a01417}{Vertex\+Declaration} $\ast$ \hyperlink{a00507_a1836950bef58097431e90a408b70fba0}{get\+Vertex\+Declaration} ()}\label{a00507_a1836950bef58097431e90a408b70fba0}

\begin{DoxyCompactList}\small\item\em get vertex declaration of the current vbo layout \end{DoxyCompactList}\item 
unsigned int \hyperlink{a00507_a39135384af3c1849f8f000846b6f19e0}{map\+Vertex\+To\+V\+B\+O\+Index} (unsigned int \+\_\+v)
\begin{DoxyCompactList}\small\item\em map from vertex index of the original mesh point buffer to the corresponding vertex index inside the V\+B\+O. \end{DoxyCompactList}\item 
\hypertarget{a00507_ae219134d242edc5319fc7fb733b0ea11}{void \hyperlink{a00507_ae219134d242edc5319fc7fb733b0ea11}{bind\+Buffers\+To\+Render\+Object} (\hyperlink{a01110}{Render\+Object} $\ast$\+\_\+obj)}\label{a00507_ae219134d242edc5319fc7fb733b0ea11}

\begin{DoxyCompactList}\small\item\em eventually rebuilds buffers used for rendering and binds index and vertex buffer \end{DoxyCompactList}\item 
\hypertarget{a00507_ade9aa40eb1b3deacf112529befd14e70}{void \hyperlink{a00507_ade9aa40eb1b3deacf112529befd14e70}{unbind\+Buffers} ()}\label{a00507_ade9aa40eb1b3deacf112529befd14e70}

\begin{DoxyCompactList}\small\item\em disables vertex, normal, texcoord and color pointers in Open\+G\+L \end{DoxyCompactList}\item 
void \hyperlink{a00507_aba5863a9b6458830237b128ebed483e5}{draw} (std\+::map$<$ int, G\+Luint $>$ $\ast$\+\_\+texture\+Map, bool \+\_\+nonindexed=false)
\begin{DoxyCompactList}\small\item\em binds index and vertex buffer and executes draw calls \end{DoxyCompactList}\item 
void \hyperlink{a00507_a8524ca0ddf04fdd5a748fa4c2d3cb934}{add\+Tri\+Render\+Objects} (\hyperlink{a00738}{I\+Renderer} $\ast$\+\_\+renderer, const \hyperlink{a01110}{Render\+Object} $\ast$\+\_\+base\+Obj, std\+::map$<$ int, G\+Luint $>$ $\ast$\+\_\+texture\+Map, bool \+\_\+nonindexed=false)
\begin{DoxyCompactList}\small\item\em adds Render\+Objects to a deferred draw call renderer \end{DoxyCompactList}\item 
\hypertarget{a00507_a1e776fb2447d0473f13c17ea41ed7476}{void \hyperlink{a00507_a1e776fb2447d0473f13c17ea41ed7476}{draw\+Lines} ()}\label{a00507_a1e776fb2447d0473f13c17ea41ed7476}

\begin{DoxyCompactList}\small\item\em render the mesh in wireframe mode \end{DoxyCompactList}\item 
\hypertarget{a00507_a1ade65d38a9ab72ce71d17ded5e7f82f}{void \hyperlink{a00507_a1ade65d38a9ab72ce71d17ded5e7f82f}{add\+Line\+Render\+Objects} (\hyperlink{a00738}{I\+Renderer} $\ast$\+\_\+renderer, const \hyperlink{a01110}{Render\+Object} $\ast$\+\_\+base\+Obj)}\label{a00507_a1ade65d38a9ab72ce71d17ded5e7f82f}

\begin{DoxyCompactList}\small\item\em render the mesh in wireframe mode, deferred draw call \end{DoxyCompactList}\item 
\hypertarget{a00507_a6073761d3703ab61d2e37fe2976f2f4e}{void \hyperlink{a00507_a6073761d3703ab61d2e37fe2976f2f4e}{draw\+Vertices} ()}\label{a00507_a6073761d3703ab61d2e37fe2976f2f4e}

\begin{DoxyCompactList}\small\item\em render vertices only \end{DoxyCompactList}\item 
\hypertarget{a00507_adc7e7a142c1932aee03c6735968d03fa}{void \hyperlink{a00507_adc7e7a142c1932aee03c6735968d03fa}{add\+Point\+Render\+Objects} (\hyperlink{a00738}{I\+Renderer} $\ast$\+\_\+renderer, const \hyperlink{a01110}{Render\+Object} $\ast$\+\_\+base\+Obj)}\label{a00507_adc7e7a142c1932aee03c6735968d03fa}

\begin{DoxyCompactList}\small\item\em render vertices only, deferred draw call \end{DoxyCompactList}\item 
\hypertarget{a00507_a62aa936235bfddc2947ca8430765ea69}{unsigned int \hyperlink{a00507_a62aa936235bfddc2947ca8430765ea69}{get\+Memory\+Usage} (bool \+\_\+print\+Report=false)}\label{a00507_a62aa936235bfddc2947ca8430765ea69}

\begin{DoxyCompactList}\small\item\em measures the size in bytes of allocated memory. eventually prints a report to std\+::cout \end{DoxyCompactList}\item 
\hypertarget{a00507_a2f63986945da83592b63cc4b2a655ac7}{void \hyperlink{a00507_a2f63986945da83592b63cc4b2a655ac7}{update\+Topology} ()}\label{a00507_a2f63986945da83592b63cc4b2a655ac7}

\begin{DoxyCompactList}\small\item\em request an update for the mesh topology \end{DoxyCompactList}\item 
\hypertarget{a00507_acf03160603be2f3c1da4413ad44005d6}{void \hyperlink{a00507_acf03160603be2f3c1da4413ad44005d6}{update\+Geometry} ()}\label{a00507_acf03160603be2f3c1da4413ad44005d6}

\begin{DoxyCompactList}\small\item\em request an update for the mesh vertices \end{DoxyCompactList}\item 
\hypertarget{a00507_a4e635820d78c82bce09907654f123ba0}{void \hyperlink{a00507_a4e635820d78c82bce09907654f123ba0}{update\+Textures} ()}\label{a00507_a4e635820d78c82bce09907654f123ba0}

\begin{DoxyCompactList}\small\item\em request an update for the textures \end{DoxyCompactList}\item 
void \hyperlink{a00507_a41990d5f87cb64d0ebe5068a3208b8ef}{update\+Full} ()
\begin{DoxyCompactList}\small\item\em request a full rebuild of the mesh \end{DoxyCompactList}\item 
unsigned int \hyperlink{a00507_ae16e4c35a541071b756a2345b015dab8}{get\+Num\+Textures} ()
\begin{DoxyCompactList}\small\item\em returns the number of used textured of this mesh \end{DoxyCompactList}\item 
void \hyperlink{a00507_a6eaffb0dd2e5afa7edd56402ce955fe6}{set\+Texture\+Index\+Property\+Name} (std\+::string \+\_\+index\+Property\+Name)
\begin{DoxyCompactList}\small\item\em set the name of the property used for texture index specification \end{DoxyCompactList}\item 
const std\+::string \& \hyperlink{a00507_a73bbd1b231c11fff70ca2ec7794ab90d}{get\+Texture\+Index\+Property\+Name} () const 
\begin{DoxyCompactList}\small\item\em get the name of the texture index property \end{DoxyCompactList}\item 
void \hyperlink{a00507_a69f0be6cc53a0d5de281657da022cd00}{set\+Per\+Face\+Texture\+Coordinate\+Property\+Name} (std\+::string \+\_\+per\+Face\+Texture\+Coordinate\+Property\+Name)
\begin{DoxyCompactList}\small\item\em set the name of the property used for texture coordinate \end{DoxyCompactList}\item 
int \hyperlink{a00507_a1848ef534cffaaa9285c9e8e70c2bb70}{per\+Face\+Texture\+Coordinate\+Available} ()
\begin{DoxyCompactList}\small\item\em Check if per Face \hyperlink{a01282}{Texture} coordinates are available. \end{DoxyCompactList}\item 
int \hyperlink{a00507_accc3e29579e5e62bdd435b5dfd01c958}{per\+Face\+Texture\+Index\+Available} ()
\begin{DoxyCompactList}\small\item\em Check if texture indices are available. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a33d2a7677ab085dcb87143261f822115}{add\+Vertex\+Element} (const std\+::string \&\+\_\+property\+Name, Property\+Source \+\_\+source=P\+R\+O\+P\+E\+R\+T\+Y\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+V\+E\+R\+T\+E\+X)
\begin{DoxyCompactList}\small\item\em Add custom elements to the vertex layout. \end{DoxyCompactList}\item 
bool \hyperlink{a00507_ad2ee5c03429cb39946f5c4bdea02b278}{scan\+Vertex\+Shader\+For\+Input} (const std\+::string \&\+\_\+vertex\+Shader\+File)
\begin{DoxyCompactList}\small\item\em Scan vertex layout from vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a9e3c82e67a8cd52207e7e8a61d0c0978}{update\+Picking\+Vertices} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state, uint \+\_\+offset=0)
\item 
\hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a00507_a5e2456bc37e3bf0ef1388be0a61fc92a}{pick\+Vertex\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per vertex picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a00507_a925ba3415303f71d9d3756ac67b74684}{pick\+Vertex\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per vertex picking vertex buffer \end{DoxyCompactList}\item 
void \hyperlink{a00507_a6fd29bc5d4f55bb874a73d344385cbca}{draw\+Picking\+Vertices\+\_\+opt} (const \hyperlink{a03336_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, int \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of vertex picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a00507_a678aa34580155c5bbdb03c0806284b36}{supports\+Picking\+Vertices\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized vertex picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a00507_ab70a1346450c29c67cc51a127119f3ad}{update\+Picking\+Vertices\+\_\+opt} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for the shader implementation. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a342ce33b005f5662d5ff8e2200b90fc7}{update\+Picking\+Edges} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state, uint \+\_\+offset=0)
\begin{DoxyCompactList}\small\item\em Update color picking array for edges. \end{DoxyCompactList}\item 
\hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a00507_a6abe9e8f1c79221f338da1a780b41208}{pick\+Edge\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge picking color buffer \end{DoxyCompactList}\item 
void \hyperlink{a00507_a028c0370eea0da73da606ca0f98976ce}{draw\+Picking\+Edges\+\_\+opt} (const \hyperlink{a03336_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, int \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of edge picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a00507_a77a7076cea2e2f8ed7704a7803adbb9c}{supports\+Picking\+Edges\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized face picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a46b1525b1f60f8fdea71f7dc1b61aaee}{update\+Picking\+Edges\+\_\+opt} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for the shader implementation. \end{DoxyCompactList}\item 
void \hyperlink{a00507_adc3a93fbdc16327a301db3d05d44c5e5}{update\+Picking\+Faces} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for faces. \end{DoxyCompactList}\item 
\hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a00507_acb77419c1010c0cb7f6ada3b750ef380}{pick\+Face\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per face picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a00507_a14307330fb720416139189baec71dd6e}{pick\+Face\+Vertex\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per vertex picking color buffer \end{DoxyCompactList}\item 
void \hyperlink{a00507_a8fbf28fbd747e51bed08250da68dc7f9}{draw\+Picking\+Faces\+\_\+opt} (const \hyperlink{a03336_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, int \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of face picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a00507_a82131a97464731a1accb1651b054cf8d}{supports\+Picking\+Faces\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized face picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a234b5fdf22d4b68b58ae32e837a6e409}{update\+Picking\+Faces\+\_\+opt} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for the shader implementation. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a0d72dcdf477ef420c028ce61dd7d43d8}{update\+Picking\+Any} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Call this function to update the color picking array. \end{DoxyCompactList}\item 
\hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a00507_a4d600d8553c1f6f7f63f95edd15cc79d}{pick\+Any\+Face\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the any picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a00507_ac63c8b105ae68f67b3a3e3b5d49ad1d0}{pick\+Any\+Edge\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the any picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a00507_a17455dd71cf19829fc05cc241f55c3e4}{pick\+Any\+Vertex\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the any picking color buffer \end{DoxyCompactList}\item 
void \hyperlink{a00507_a956a3655586aa56f3230f00053ceb58c}{draw\+Picking\+Any\+\_\+opt} (const \hyperlink{a03336_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, int \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of any picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a00507_a675ea47bbac547fd13ea54bb7f09d964}{supports\+Picking\+Any\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized any picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a03fb4bf49e3906040842d9f456449047}{update\+Picking\+Any\+\_\+opt} (\hyperlink{a00643}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for the shader implementation. \end{DoxyCompactList}\item 
void \hyperlink{a00507_a35c421b920a4e9041434ef70ebc2d6a3}{dump\+Obj} (const char $\ast$\+\_\+filename) const 
\begin{DoxyCompactList}\small\item\em dump current vertex/index buffer to wavefront obj \end{DoxyCompactList}\item 
void \hyperlink{a00507_a65bc871961013b2a12ba5bd2ba1d39c8}{invalidate\+Full\+V\+B\+O} ()
\begin{DoxyCompactList}\small\item\em the mesh has been changed \end{DoxyCompactList}\item 
void \hyperlink{a00507_a87f873670145ebe6b1c26cf066c372f5}{update\+Full\+V\+B\+O} ()
\begin{DoxyCompactList}\small\item\em update the full mesh vbo \end{DoxyCompactList}\item 
void \hyperlink{a00507_a54fef4db793c14395246e156d946f802}{invalidate\+Per\+Edge\+Buffers} ()
\begin{DoxyCompactList}\small\item\em Update of the buffers. \end{DoxyCompactList}\item 
void \hyperlink{a00507_ae43d987dce81a40494820e94afbdd182}{update\+Per\+Edge\+Buffers} ()
\begin{DoxyCompactList}\small\item\em Update all per edge drawing buffers. \end{DoxyCompactList}\item 
\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a00507_a218b11c333b26e6a32bb10fc1d11efee}{per\+Edge\+Vertex\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge vertex buffer \end{DoxyCompactList}\item 
\hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $\ast$ \hyperlink{a00507_a7810ea8a7e6dbbe725e4f0e06b3a7347}{per\+Edge\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge color buffer \end{DoxyCompactList}\item 
void \hyperlink{a00507_aad47e0d29b78857ad9c555882b26d535}{invalidate\+Per\+Halfedge\+Buffers} ()
\begin{DoxyCompactList}\small\item\em Update of the buffers. \end{DoxyCompactList}\item 
\hypertarget{a00507_a47068dbaedc20e960af289bce3ca5c16}{{\footnotesize template$<$typename Mesh\+::\+Normal(\+Draw\+Mesh\+T\+::$\ast$)(typename Mesh\+::\+Face\+Handle) Normal\+Lookup$>$ }\\void \hyperlink{a00507_a47068dbaedc20e960af289bce3ca5c16}{update\+Per\+Halfedge\+Buffers} ()}\label{a00507_a47068dbaedc20e960af289bce3ca5c16}

\begin{DoxyCompactList}\small\item\em Update all per edge drawing buffer n The updated buffers are\+: per edge vertex buffer ( 2 vertices per edge ) \end{DoxyCompactList}\item 
\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a00507_a18ec314296aa0d8c2e306dd82d53cbd9}{per\+Halfedge\+Vertex\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge vertex buffer \end{DoxyCompactList}\item 
\hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $\ast$ \hyperlink{a00507_a062253fbc45a9f4ee730c4d9a0be9f5b}{per\+Halfedge\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge color buffer \end{DoxyCompactList}\item 
\hypertarget{a00507_afe31446d9a0d584b66101314563784de}{void \hyperlink{a00507_afe31446d9a0d584b66101314563784de}{update\+Edge\+Halfedge\+Vertex\+Declarations} ()}\label{a00507_afe31446d9a0d584b66101314563784de}

\begin{DoxyCompactList}\small\item\em updates per edge and halfedge vertex declarations \end{DoxyCompactList}\item 
\hypertarget{a00507_a6c5edcecd19d4a6c5841523f991aa3d7}{const \hyperlink{a01417}{Vertex\+Declaration} $\ast$ \hyperlink{a00507_a6c5edcecd19d4a6c5841523f991aa3d7}{get\+Edge\+Colored\+Vertex\+Declaration} () const }\label{a00507_a6c5edcecd19d4a6c5841523f991aa3d7}

\begin{DoxyCompactList}\small\item\em getter for vertex declarations \end{DoxyCompactList}\item 
\hypertarget{a00507_a6cd34659d2490a2da10e323af7ee495d}{const \hyperlink{a01417}{Vertex\+Declaration} $\ast$ \hyperlink{a00507_a6cd34659d2490a2da10e323af7ee495d}{get\+Halfedge\+Vertex\+Declaration} () const }\label{a00507_a6cd34659d2490a2da10e323af7ee495d}

\begin{DoxyCompactList}\small\item\em getter for vertex declarations \end{DoxyCompactList}\item 
\hypertarget{a00507_a4cd2316b8837f74fad60ed3ed8ed6238}{const \hyperlink{a01417}{Vertex\+Declaration} $\ast$ \hyperlink{a00507_a4cd2316b8837f74fad60ed3ed8ed6238}{get\+Halfedge\+Colored\+Vertex\+Declaration} () const }\label{a00507_a4cd2316b8837f74fad60ed3ed8ed6238}

\begin{DoxyCompactList}\small\item\em getter for vertex declarations \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00507_a157b75af34a0b2ea44b8415cfecc62d1}{enum {\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+T\+Y\+P\+E} \{ \\*
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+N\+O\+N\+E} = 0, 
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+F\+U\+L\+L} = 1, 
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+G\+E\+O\+M\+E\+T\+R\+Y} = 2, 
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+T\+O\+P\+O\+L\+O\+G\+Y} = 4, 
\\*
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+T\+E\+X\+T\+U\+R\+E\+S} = 8
 \}}\label{a00507_a157b75af34a0b2ea44b8415cfecc62d1}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a00507_a4cd0241ab24f433a8ee2c708cbaa65ef}{rebuild} ()
\begin{DoxyCompactList}\small\item\em draw\+\_\+mesh updater \end{DoxyCompactList}\item 
void \hyperlink{a00507_a7b3cb675a9c0960d51749f7cde8bd36d}{read\+Vertex} (unsigned int \+\_\+vertex, const typename \hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Mesh\+::\+Vertex\+Handle} \+\_\+vh, const typename Mesh\+::\+Halfedge\+Handle \+\_\+hh, const typename Mesh\+::\+Face\+Handle \+\_\+fh)
\begin{DoxyCompactList}\small\item\em reads a vertex from mesh\+\_\+ and write it to vertex buffer \end{DoxyCompactList}\item 
unsigned int \hyperlink{a00507_aec8fe7d82bc6f4c82acf5f87edbfd121}{get\+Vertex\+Color} (const typename \hyperlink{a00994_a0fc18e13d70825938274e3faf7b55e01}{Mesh\+::\+Vertex\+Handle} \+\_\+vh)
\begin{DoxyCompactList}\small\item\em return a vertex color from mesh \end{DoxyCompactList}\item 
unsigned int \hyperlink{a00507_a52e6aedde84f032d21c696e120325828}{get\+Face\+Color} (const typename Mesh\+::\+Face\+Handle \+\_\+fh)
\begin{DoxyCompactList}\small\item\em return a face color from mesh \end{DoxyCompactList}\item 
void \hyperlink{a00507_a398f99a73807009eca016055955a6a8b}{update\+G\+P\+U\+Buffers} ()
\begin{DoxyCompactList}\small\item\em eventually update vertex and index buffers \end{DoxyCompactList}\item 
void \hyperlink{a00507_a8651795952e95cbeb7313421a57d2e68}{create\+V\+B\+O} ()
\begin{DoxyCompactList}\small\item\em stores the vertex buffer on the gpu \end{DoxyCompactList}\item 
void \hyperlink{a00507_adb2ce3a55382aec834649c16a352dee0}{create\+I\+B\+O} ()
\begin{DoxyCompactList}\small\item\em stores the index buffer on the gpu \end{DoxyCompactList}\item 
void \hyperlink{a00507_a1d65b306952d97c4d7968ce55dd4a25e}{create\+Vertex\+Declaration} ()
\begin{DoxyCompactList}\small\item\em creates all vertex declarations needed for deferred draw call renderer \end{DoxyCompactList}\item 
unsigned int \hyperlink{a00507_a16f06ac18d62644cdfb6a9eb0c1f112c}{count\+Tris} (unsigned int $\ast$\+\_\+p\+Out\+Max\+Poly\+Verts=0, unsigned int $\ast$\+\_\+p\+Out\+Num\+Indices=0)
\begin{DoxyCompactList}\small\item\em Number of triangles after triangulation of the mesh. \end{DoxyCompactList}\item 
int \hyperlink{a00507_aab8143dffcc079c89f77f6d901f7d863}{get\+Texture\+I\+Dof\+Tri} (unsigned int \+\_\+tri)
\begin{DoxyCompactList}\small\item\em get the texture index of a triangle \end{DoxyCompactList}\item 
int \hyperlink{a00507_a4c25f7655db393adb44024ed96cff5bf}{get\+Texture\+I\+Dof\+Face} (unsigned int \+\_\+face)
\begin{DoxyCompactList}\small\item\em get the texture index of a face \end{DoxyCompactList}\item 
const void $\ast$ \hyperlink{a00507_a8f3bc8d1b257ad8b7023b53718594704}{get\+Mesh\+Property\+Type} (\hyperlink{a00332}{Open\+Mesh\+::\+Base\+Property} $\ast$\+\_\+prop, G\+Luint $\ast$\+\_\+out\+Type, unsigned int $\ast$\+\_\+out\+Size) const 
\begin{DoxyCompactList}\small\item\em get the data type of a mesh property \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\const void $\ast$ \hyperlink{a00507_aae94e969981cf76df1c792163a4b22f5}{test\+Mesh\+Property\+Type\+T} (const \hyperlink{a00332}{Open\+Mesh\+::\+Base\+Property} $\ast$\+\_\+prop, unsigned int $\ast$\+\_\+out\+Size) const 
\begin{DoxyCompactList}\small\item\em test mesh property for type T \end{DoxyCompactList}\item 
\hypertarget{a00507_a22898d419116cb8eaa909c3e655aca86}{void {\bfseries write\+Vertex\+Element} (void $\ast$\+\_\+dst\+Buf, unsigned int \+\_\+vertex, unsigned int \+\_\+stride, unsigned int \+\_\+element\+Offset, unsigned int \+\_\+element\+Size, const void $\ast$\+\_\+element\+Data)}\label{a00507_a22898d419116cb8eaa909c3e655aca86}

\item 
\hypertarget{a00507_a7fbdc7fac90c521dde9766081f838147}{void {\bfseries write\+Position} (unsigned int \+\_\+vertex, const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \&\+\_\+p)}\label{a00507_a7fbdc7fac90c521dde9766081f838147}

\item 
\hypertarget{a00507_ac56ae5d7fe55e378cdd3f260281254fb}{void {\bfseries write\+Normal} (unsigned int \+\_\+vertex, const \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \&\+\_\+n)}\label{a00507_ac56ae5d7fe55e378cdd3f260281254fb}

\item 
\hypertarget{a00507_ac9a4c05a5689cf42abf9ee7cbb0dc00a}{void {\bfseries write\+Texcoord} (unsigned int \+\_\+vertex, const \hyperlink{a03336_a8b858737aebd55e312149cf208a0b3f3}{A\+C\+G\+::\+Vec2f} \&\+\_\+uv)}\label{a00507_ac9a4c05a5689cf42abf9ee7cbb0dc00a}

\item 
\hypertarget{a00507_a5397e1a914c2e96183aaf44d48976024}{void {\bfseries write\+Color} (unsigned int \+\_\+vertex, unsigned int \+\_\+color)}\label{a00507_a5397e1a914c2e96183aaf44d48976024}

\item 
\hypertarget{a00507_a4f2e143b396d63f3a76efb64bee4a27c}{void {\bfseries write\+Vertex\+Property} (unsigned int \+\_\+vertex, const \hyperlink{a01421}{Vertex\+Element} $\ast$\+\_\+element\+Desc, const \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} \&\+\_\+propf)}\label{a00507_a4f2e143b396d63f3a76efb64bee4a27c}

\item 
\hypertarget{a00507_a9f15b970d9d894157536e3a48db2a5be}{void {\bfseries write\+Vertex\+Property} (unsigned int \+\_\+vertex, const \hyperlink{a01421}{Vertex\+Element} $\ast$\+\_\+element\+Desc, const \hyperlink{a03336_a2ba4d05b21aa0247255d38e770bcc255}{A\+C\+G\+::\+Vec4d} \&\+\_\+propd)}\label{a00507_a9f15b970d9d894157536e3a48db2a5be}

\item 
void \hyperlink{a00507_a68e723ffceb16f2244a8cd0e7b7c8def}{read\+Vertex\+From\+V\+B\+O} (unsigned int \+\_\+vertex, void $\ast$\+\_\+dst)
\begin{DoxyCompactList}\small\item\em Read one vertex from the rendering vbo. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Mesh\+::\+Normal(\+Draw\+Mesh\+T\+::$\ast$)(typename Mesh\+::\+Face\+Handle) Normal\+Lookup$>$ }\\\hyperlink{a00994_aed10fb4dfb536b53a5e20c8f2442eadf}{Mesh\+::\+Point} \hyperlink{a00507_a855b80677a5c6f30452a906d96148300}{halfedge\+\_\+point} (const typename Mesh\+::\+Halfedge\+Handle \+\_\+heh)
\begin{DoxyCompactList}\small\item\em compute halfedge point compute visualization point for halfedge (shifted to interior of face) \end{DoxyCompactList}\item 
\hypertarget{a00507_a3b802727d3b4bf90f1be9cd7aa610139}{\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Mesh\+::\+Normal} {\bfseries cached\+Normal\+Lookup} (typename Mesh\+::\+Face\+Handle fh)}\label{a00507_a3b802727d3b4bf90f1be9cd7aa610139}

\item 
\hypertarget{a00507_a495eb2139314955c25cc8ed9c5824e69}{\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Mesh\+::\+Normal} {\bfseries computed\+Tri\+Mesh\+Normal} (typename Mesh\+::\+Face\+Handle fh)}\label{a00507_a495eb2139314955c25cc8ed9c5824e69}

\item 
\hypertarget{a00507_a386855e583e5710d947429a3a2045727}{\hyperlink{a00994_a3570fd132d1ac589b380485cf59c9e0b}{Mesh\+::\+Normal} {\bfseries computed\+Normal} (typename Mesh\+::\+Face\+Handle fh)}\label{a00507_a386855e583e5710d947429a3a2045727}

\item 
\hypertarget{a00507_a45917ff8be0d937106d9642f1efc8517}{Mesh\+::\+Halfedge\+Handle {\bfseries map\+To\+Halfedge\+Handle} (int \+\_\+vertex\+Id)}\label{a00507_a45917ff8be0d937106d9642f1efc8517}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00507_a99b63f2f848dc22818339176a18c3f77}{std\+::vector$<$ \hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ \hyperlink{a00507_a99b63f2f848dc22818339176a18c3f77}{pick\+Vert\+Buf\+\_\+}}\label{a00507_a99b63f2f848dc22818339176a18c3f77}

\begin{DoxyCompactList}\small\item\em The vertex buffer used for vertex picking. \end{DoxyCompactList}\item 
\hypertarget{a00507_a6bb6cc38e5be359edaf04d781df7d623}{std\+::vector$<$ \hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ \hyperlink{a00507_a6bb6cc38e5be359edaf04d781df7d623}{pick\+Vert\+Col\+Buf\+\_\+}}\label{a00507_a6bb6cc38e5be359edaf04d781df7d623}

\begin{DoxyCompactList}\small\item\em The color buffer used for vertex picking. \end{DoxyCompactList}\item 
\hypertarget{a00507_a304ce7b32f2aed8f7840a0047d6e8e80}{\hyperlink{a01020}{G\+L\+S\+L\+::\+Program} $\ast$ {\bfseries pick\+Vertex\+Shader\+\_\+}}\label{a00507_a304ce7b32f2aed8f7840a0047d6e8e80}

\item 
\hypertarget{a00507_ae750a70d6366339dc2f0f8f2a20da7ab}{int {\bfseries pick\+Vertex\+Method\+\_\+}}\label{a00507_ae750a70d6366339dc2f0f8f2a20da7ab}

\item 
\hypertarget{a00507_aef91534a5d60eb99222f8395e3ea6813}{std\+::vector$<$ \hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Edge\+Buf\+\_\+}}\label{a00507_aef91534a5d60eb99222f8395e3ea6813}

\item 
\hypertarget{a00507_a3b207651eee0b06ab43ec147dfaf3995}{\hyperlink{a01020}{G\+L\+S\+L\+::\+Program} $\ast$ {\bfseries pick\+Edge\+Shader\+\_\+}}\label{a00507_a3b207651eee0b06ab43ec147dfaf3995}

\item 
\hypertarget{a00507_a19203e32b3c84fc3b596e92974687e83}{std\+::vector$<$ \hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ {\bfseries pick\+Face\+Vertex\+Buf\+\_\+}}\label{a00507_a19203e32b3c84fc3b596e92974687e83}

\item 
\hypertarget{a00507_a448fd807fd33ca424005cfa624f0066d}{std\+::vector$<$ \hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Face\+Col\+Buf\+\_\+}}\label{a00507_a448fd807fd33ca424005cfa624f0066d}

\item 
\hypertarget{a00507_a8fe7bf4c4b74ca3b5bce5c9f22a57976}{\hyperlink{a01020}{G\+L\+S\+L\+::\+Program} $\ast$ \hyperlink{a00507_a8fe7bf4c4b74ca3b5bce5c9f22a57976}{pick\+Face\+Shader\+\_\+}}\label{a00507_a8fe7bf4c4b74ca3b5bce5c9f22a57976}

\begin{DoxyCompactList}\small\item\em optimized face picking shader \end{DoxyCompactList}\item 
\hypertarget{a00507_af4e1b0da1e7ed5b617b0b104e897fed8}{std\+::vector$<$ \hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Any\+Face\+Col\+Buf\+\_\+}}\label{a00507_af4e1b0da1e7ed5b617b0b104e897fed8}

\item 
\hypertarget{a00507_a2e2d0ca5708c18660e79e246aa496f29}{std\+::vector$<$ \hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Any\+Edge\+Col\+Buf\+\_\+}}\label{a00507_a2e2d0ca5708c18660e79e246aa496f29}

\item 
\hypertarget{a00507_a34e19d1b3d3d13b5a3e4085ebb44fffd}{std\+::vector$<$ \hyperlink{a03336_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Any\+Vertex\+Col\+Buf\+\_\+}}\label{a00507_a34e19d1b3d3d13b5a3e4085ebb44fffd}

\item 
\hypertarget{a00507_ac6cec84354066215d629e3462354f956}{\hyperlink{a01335}{Mesh} \& \hyperlink{a00507_ac6cec84354066215d629e3462354f956}{mesh\+\_\+}}\label{a00507_ac6cec84354066215d629e3462354f956}

\begin{DoxyCompactList}\small\item\em \hyperlink{a03368}{Open\+Mesh} object to be rendered. \end{DoxyCompactList}\item 
\hypertarget{a00507_a888eccd9383f2d6b159152c5d1ccd7ef}{unsigned int $\ast$ \hyperlink{a00507_a888eccd9383f2d6b159152c5d1ccd7ef}{indices\+\_\+}}\label{a00507_a888eccd9383f2d6b159152c5d1ccd7ef}

\begin{DoxyCompactList}\small\item\em final index buffer used for rendering \end{DoxyCompactList}\item 
\hypertarget{a00507_a7053193084a3980f551aac6f381953cc}{unsigned int \hyperlink{a00507_a7053193084a3980f551aac6f381953cc}{rebuild\+\_\+}}\label{a00507_a7053193084a3980f551aac6f381953cc}

\begin{DoxyCompactList}\small\item\em hint on what to rebuild \end{DoxyCompactList}\item 
size\+\_\+t \hyperlink{a00507_ab9c6036e64fc7a52c62fb310d4fc09b0}{prev\+Num\+Faces\+\_\+}
\item 
\hypertarget{a00507_aae4136e590d77fa1a21722d475d197b0}{size\+\_\+t {\bfseries prev\+Num\+Verts\+\_\+}}\label{a00507_aae4136e590d77fa1a21722d475d197b0}

\item 
\hypertarget{a00507_a3065e465eb4fed18689afce7719bd683}{int \hyperlink{a00507_a3065e465eb4fed18689afce7719bd683}{color\+Mode\+\_\+}}\label{a00507_a3065e465eb4fed18689afce7719bd683}

\begin{DoxyCompactList}\small\item\em Color Mode\+: 0\+: none, 1\+: per vertex, else\+: per face. \end{DoxyCompactList}\item 
\hypertarget{a00507_ae8b6cb2eabf559a33e2b072f047090eb}{int \hyperlink{a00507_ae8b6cb2eabf559a33e2b072f047090eb}{cur\+V\+B\+O\+Color\+Mode\+\_\+}}\label{a00507_ae8b6cb2eabf559a33e2b072f047090eb}

\begin{DoxyCompactList}\small\item\em Color Mode of vbo. \end{DoxyCompactList}\item 
\hypertarget{a00507_a742b988a0ba91168c360d2e41a988fa5}{int \hyperlink{a00507_a742b988a0ba91168c360d2e41a988fa5}{flat\+Mode\+\_\+}}\label{a00507_a742b988a0ba91168c360d2e41a988fa5}

\begin{DoxyCompactList}\small\item\em flat / smooth shade mode toggle \end{DoxyCompactList}\item 
\hypertarget{a00507_a7ef10d0ed8ec2d4b9ad0ea85d8aeb505}{int \hyperlink{a00507_a7ef10d0ed8ec2d4b9ad0ea85d8aeb505}{b\+V\+B\+Oin\+Flat\+Mode\+\_\+}}\label{a00507_a7ef10d0ed8ec2d4b9ad0ea85d8aeb505}

\begin{DoxyCompactList}\small\item\em normals in V\+B\+O currently in flat / smooth mode \end{DoxyCompactList}\item 
\hypertarget{a00507_ae4216995528b487405e9c17d277a4e72}{int \hyperlink{a00507_ae4216995528b487405e9c17d277a4e72}{texture\+Mode\+\_\+}}\label{a00507_ae4216995528b487405e9c17d277a4e72}

\begin{DoxyCompactList}\small\item\em per vertex / halfedge texture mode toggle\+: 0\+: per vertex, 1\+: per halfedge \end{DoxyCompactList}\item 
\hypertarget{a00507_a610847676b198b6b6e1839674bbc24a2}{int \hyperlink{a00507_a610847676b198b6b6e1839674bbc24a2}{b\+V\+B\+Oin\+Halfedge\+Tex\+Mode\+\_\+}}\label{a00507_a610847676b198b6b6e1839674bbc24a2}

\begin{DoxyCompactList}\small\item\em texcoords in V\+B\+O currently in per vertex / halfedge mode toggle \end{DoxyCompactList}\item 
\hypertarget{a00507_a23f9418079948fc73ed5e998bbb920f8}{int \hyperlink{a00507_a23f9418079948fc73ed5e998bbb920f8}{halfedge\+Normal\+Mode\+\_\+}}\label{a00507_a23f9418079948fc73ed5e998bbb920f8}

\begin{DoxyCompactList}\small\item\em per vertex / halfedge normals mode toggle\+: 0\+: per vertex, 1\+: per halfedge \end{DoxyCompactList}\item 
\hypertarget{a00507_af7cb14759f164318404381658b65f795}{int \hyperlink{a00507_af7cb14759f164318404381658b65f795}{b\+V\+B\+Oin\+Halfedge\+Normal\+Mode\+\_\+}}\label{a00507_af7cb14759f164318404381658b65f795}

\begin{DoxyCompactList}\small\item\em normals in V\+B\+O currently in per vertex / halfedge mode toggle \end{DoxyCompactList}\item 
unsigned int $\ast$ \hyperlink{a00507_a5f0f78e33f060392dff9d402a22bebf0}{inv\+Vertex\+Map\+\_\+}
\item 
\hypertarget{a00507_afbdbf69ed2dcdaf09f967798e97bf3c0}{const size\+\_\+t \hyperlink{a00507_afbdbf69ed2dcdaf09f967798e97bf3c0}{offset\+Pos\+\_\+}}\label{a00507_afbdbf69ed2dcdaf09f967798e97bf3c0}

\begin{DoxyCompactList}\small\item\em fixed vertex elements\+: \end{DoxyCompactList}\item 
\hypertarget{a00507_a0fb914327f101072a4cebf894bf0b7a7}{const size\+\_\+t {\bfseries offset\+Normal\+\_\+}}\label{a00507_a0fb914327f101072a4cebf894bf0b7a7}

\item 
\hypertarget{a00507_a3044da630bf3b98c77aa94156bea9e08}{const size\+\_\+t {\bfseries offset\+Texc\+\_\+}}\label{a00507_a3044da630bf3b98c77aa94156bea9e08}

\item 
\hypertarget{a00507_a6f7a11bdcb5a81e2950be61f80b352c6}{const size\+\_\+t {\bfseries offset\+Color\+\_\+}}\label{a00507_a6f7a11bdcb5a81e2950be61f80b352c6}

\item 
\hypertarget{a00507_a847fe570d79fc7696371b4db672c3577}{std\+::vector$<$ \hyperlink{a01431}{Vertex\+Property} $>$ \hyperlink{a00507_a847fe570d79fc7696371b4db672c3577}{additional\+Elements\+\_\+}}\label{a00507_a847fe570d79fc7696371b4db672c3577}

\begin{DoxyCompactList}\small\item\em additional optional elements \end{DoxyCompactList}\item 
std\+::string \hyperlink{a00507_ae36d1255500bd671b32711f51ceb25af}{texture\+Index\+Property\+Name\+\_\+}
\begin{DoxyCompactList}\small\item\em Property for the per face texture index. \end{DoxyCompactList}\item 
std\+::string \hyperlink{a00507_af394dd5a3e3fe5442181406d821d887c}{per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+}
\begin{DoxyCompactList}\small\item\em Property for the per face texture coordinates. \end{DoxyCompactList}\item 
\hypertarget{a00507_aa470b31e8a5d0a77510f03df38854060}{Geometry\+Buffer {\bfseries vbo\+Full\+\_\+}}\label{a00507_aa470b31e8a5d0a77510f03df38854060}

\item 
\hypertarget{a00507_aadfb071934d8f750fb8a5b4f95d320ce}{bool {\bfseries update\+Full\+V\+B\+O\+\_\+}}\label{a00507_aadfb071934d8f750fb8a5b4f95d320ce}

\item 
\hypertarget{a00507_af31017082df480e6f674827c45a79894}{int {\bfseries update\+Per\+Edge\+Buffers\+\_\+}}\label{a00507_af31017082df480e6f674827c45a79894}

\item 
\hypertarget{a00507_a29796b262d089ad0ca9b516105b2d0d0}{std\+::vector$<$ \hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ {\bfseries per\+Edge\+Vertex\+Buf\+\_\+}}\label{a00507_a29796b262d089ad0ca9b516105b2d0d0}

\item 
\hypertarget{a00507_a233dd4410aa10b3f457df372b4de33e8}{std\+::vector$<$ \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $>$ {\bfseries per\+Edge\+Color\+Buf\+\_\+}}\label{a00507_a233dd4410aa10b3f457df372b4de33e8}

\item 
\hypertarget{a00507_ad0adecee6ecfcdc0d055f23cdf8c0586}{int {\bfseries update\+Per\+Halfedge\+Buffers\+\_\+}}\label{a00507_ad0adecee6ecfcdc0d055f23cdf8c0586}

\item 
\hypertarget{a00507_a176319f7f3b1834c101d238c7e14e17f}{std\+::vector$<$ \hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ {\bfseries per\+Halfedge\+Vertex\+Buf\+\_\+}}\label{a00507_a176319f7f3b1834c101d238c7e14e17f}

\item 
\hypertarget{a00507_a8f506a9eeb9ea088c5ae766bd7a1c7b3}{std\+::vector$<$ \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $>$ {\bfseries per\+Halfedge\+Color\+Buf\+\_\+}}\label{a00507_a8f506a9eeb9ea088c5ae766bd7a1c7b3}

\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
\subsubsection*{template$<$class Mesh$>$class A\+C\+G\+::\+Draw\+Mesh\+T$<$ Mesh $>$}

Mesh Drawing Class. 

This class creates a new mesh for efficient rendering based on an \hyperlink{a03368}{Open\+Mesh} object. Draw\+Mesh also supports optimized picking and toggling between vertex/halfedge/face normals and vertex/halfedge texcoords.

It is not recommended to use this class if the input mesh does not implement an \hyperlink{a03368}{Open\+Mesh} kernel. Instead, \hyperlink{a00815}{Mesh\+Compiler} can be used directly to build the vertex and index buffer. 

Definition at line 172 of file Draw\+Mesh.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00507_a8524ca0ddf04fdd5a748fa4c2d3cb934}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!add\+Tri\+Render\+Objects@{add\+Tri\+Render\+Objects}}
\index{add\+Tri\+Render\+Objects@{add\+Tri\+Render\+Objects}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{add\+Tri\+Render\+Objects}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::add\+Tri\+Render\+Objects (
\begin{DoxyParamCaption}
\item[{{\bf I\+Renderer} $\ast$}]{\+\_\+renderer, }
\item[{const {\bf Render\+Object} $\ast$}]{\+\_\+base\+Obj, }
\item[{std\+::map$<$ int, G\+Luint $>$ $\ast$}]{\+\_\+texture\+Map, }
\item[{bool}]{\+\_\+nonindexed = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{a00507_a8524ca0ddf04fdd5a748fa4c2d3cb934}


adds Render\+Objects to a deferred draw call renderer 


\begin{DoxyParams}{Parameters}
{\em \+\_\+renderer} & renderobjects are added to this renderer \\
\hline
{\em \+\_\+base\+Obj} & address of the base renderobject with information about shader generation, gl states, matrices .. \\
\hline
{\em \+\_\+texture\+Map} & maps from internally texture-\/id to Open\+G\+L texture id \\
\hline
{\em \+\_\+nonindexed} & use non-\/indexed vbo instead of optimized indexed vbo (should be avoided if possible) may be null to disable textured rendering \\
\hline
\end{DoxyParams}


Definition at line 1412 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a33d2a7677ab085dcb87143261f822115}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!add\+Vertex\+Element@{add\+Vertex\+Element}}
\index{add\+Vertex\+Element@{add\+Vertex\+Element}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{add\+Vertex\+Element}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::add\+Vertex\+Element (
\begin{DoxyParamCaption}
\item[{const std\+::string \&}]{\+\_\+property\+Name, }
\item[{Property\+Source}]{\+\_\+source = {\ttfamily PROPERTY\+\_\+SOURCE\+\_\+VERTEX}}
\end{DoxyParamCaption}
)}}\label{a00507_a33d2a7677ab085dcb87143261f822115}


Add custom elements to the vertex layout. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+property\+Name} & name id of property in \hyperlink{a03368}{Open\+Mesh} \\
\hline
{\em \+\_\+source} & source of property, ie per vertex, per face or per halfedge \\
\hline
\end{DoxyParams}


Definition at line 2535 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a16f06ac18d62644cdfb6a9eb0c1f112c}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!count\+Tris@{count\+Tris}}
\index{count\+Tris@{count\+Tris}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{count\+Tris}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ unsigned int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::count\+Tris (
\begin{DoxyParamCaption}
\item[{unsigned int $\ast$}]{\+\_\+p\+Out\+Max\+Poly\+Verts = {\ttfamily 0}, }
\item[{unsigned int $\ast$}]{\+\_\+p\+Out\+Num\+Indices = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a16f06ac18d62644cdfb6a9eb0c1f112c}


Number of triangles after triangulation of the mesh. 

returns the number of tris after triangulation of this mesh if needed, also returns the highest number of vertices of a face


\begin{DoxyParams}{Parameters}
{\em \+\_\+p\+Out\+Max\+Poly\+Verts} & max face size \\
\hline
{\em \+\_\+p\+Out\+Num\+Indices} & total number of indices\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
number of triangles 
\end{DoxyReturn}


Definition at line 1543 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_adb2ce3a55382aec834649c16a352dee0}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!create\+I\+B\+O@{create\+I\+B\+O}}
\index{create\+I\+B\+O@{create\+I\+B\+O}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{create\+I\+B\+O}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::create\+I\+B\+O (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_adb2ce3a55382aec834649c16a352dee0}


stores the index buffer on the gpu 



Definition at line 1107 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a8651795952e95cbeb7313421a57d2e68}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!create\+V\+B\+O@{create\+V\+B\+O}}
\index{create\+V\+B\+O@{create\+V\+B\+O}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{create\+V\+B\+O}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::create\+V\+B\+O (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a8651795952e95cbeb7313421a57d2e68}


stores the vertex buffer on the gpu 



Definition at line 900 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a1d65b306952d97c4d7968ce55dd4a25e}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!create\+Vertex\+Declaration@{create\+Vertex\+Declaration}}
\index{create\+Vertex\+Declaration@{create\+Vertex\+Declaration}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{create\+Vertex\+Declaration}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::create\+Vertex\+Declaration (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a1d65b306952d97c4d7968ce55dd4a25e}


creates all vertex declarations needed for deferred draw call renderer 



Definition at line 2372 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_aba5863a9b6458830237b128ebed483e5}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!draw@{draw}}
\index{draw@{draw}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{draw}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::draw (
\begin{DoxyParamCaption}
\item[{std\+::map$<$ int, G\+Luint $>$ $\ast$}]{\+\_\+texture\+Map, }
\item[{bool}]{\+\_\+nonindexed = {\ttfamily false}}
\end{DoxyParamCaption}
)}}\label{a00507_aba5863a9b6458830237b128ebed483e5}


binds index and vertex buffer and executes draw calls 


\begin{DoxyParams}{Parameters}
{\em \+\_\+texture\+Map} & maps from internally texture-\/id to Open\+G\+L texture id, may be null to disable textured rendering \\
\hline
{\em \+\_\+nonindexed} & use unoptimized non-\/indexed vbo for rendering, not as efficient in terms of memory usage and performance as an indexed draw call. \\
\hline
\end{DoxyParams}


Definition at line 1359 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a956a3655586aa56f3230f00053ceb58c}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!draw\+Picking\+Any\+\_\+opt@{draw\+Picking\+Any\+\_\+opt}}
\index{draw\+Picking\+Any\+\_\+opt@{draw\+Picking\+Any\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{draw\+Picking\+Any\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::draw\+Picking\+Any\+\_\+opt (
\begin{DoxyParamCaption}
\item[{const {\bf G\+L\+Matrixf} \&}]{\+\_\+mvp, }
\item[{int}]{\+\_\+pick\+Offset}
\end{DoxyParamCaption}
)}}\label{a00507_a956a3655586aa56f3230f00053ceb58c}


Optimized rendering of any picking ids with a shader. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+mvp} & model view projection transformation \\
\hline
{\em \+\_\+pick\+Offset} & base picking id of the first element \\
\hline
\end{DoxyParams}


Definition at line 2258 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a028c0370eea0da73da606ca0f98976ce}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!draw\+Picking\+Edges\+\_\+opt@{draw\+Picking\+Edges\+\_\+opt}}
\index{draw\+Picking\+Edges\+\_\+opt@{draw\+Picking\+Edges\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{draw\+Picking\+Edges\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::draw\+Picking\+Edges\+\_\+opt (
\begin{DoxyParamCaption}
\item[{const {\bf G\+L\+Matrixf} \&}]{\+\_\+mvp, }
\item[{int}]{\+\_\+pick\+Offset}
\end{DoxyParamCaption}
)}}\label{a00507_a028c0370eea0da73da606ca0f98976ce}


Optimized rendering of edge picking ids with a shader. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+mvp} & model view projection transformation \\
\hline
{\em \+\_\+pick\+Offset} & base picking id of the first edge \\
\hline
\end{DoxyParams}


Definition at line 1963 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a8fbf28fbd747e51bed08250da68dc7f9}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!draw\+Picking\+Faces\+\_\+opt@{draw\+Picking\+Faces\+\_\+opt}}
\index{draw\+Picking\+Faces\+\_\+opt@{draw\+Picking\+Faces\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{draw\+Picking\+Faces\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::draw\+Picking\+Faces\+\_\+opt (
\begin{DoxyParamCaption}
\item[{const {\bf G\+L\+Matrixf} \&}]{\+\_\+mvp, }
\item[{int}]{\+\_\+pick\+Offset}
\end{DoxyParamCaption}
)}}\label{a00507_a8fbf28fbd747e51bed08250da68dc7f9}


Optimized rendering of face picking ids with a shader. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+mvp} & model view projection transformation \\
\hline
{\em \+\_\+pick\+Offset} & base picking id of the first face \\
\hline
\end{DoxyParams}


Definition at line 2094 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a6fd29bc5d4f55bb874a73d344385cbca}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!draw\+Picking\+Vertices\+\_\+opt@{draw\+Picking\+Vertices\+\_\+opt}}
\index{draw\+Picking\+Vertices\+\_\+opt@{draw\+Picking\+Vertices\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{draw\+Picking\+Vertices\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::draw\+Picking\+Vertices\+\_\+opt (
\begin{DoxyParamCaption}
\item[{const {\bf G\+L\+Matrixf} \&}]{\+\_\+mvp, }
\item[{int}]{\+\_\+pick\+Offset}
\end{DoxyParamCaption}
)}}\label{a00507_a6fd29bc5d4f55bb874a73d344385cbca}


Optimized rendering of vertex picking ids with a shader. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+mvp} & model view projection transformation \\
\hline
{\em \+\_\+pick\+Offset} & base picking id of the first vertex \\
\hline
\end{DoxyParams}


Definition at line 1692 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a35c421b920a4e9041434ef70ebc2d6a3}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!dump\+Obj@{dump\+Obj}}
\index{dump\+Obj@{dump\+Obj}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{dump\+Obj}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::dump\+Obj (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{\+\_\+filename}
\end{DoxyParamCaption}
) const}}\label{a00507_a35c421b920a4e9041434ef70ebc2d6a3}


dump current vertex/index buffer to wavefront obj 


\begin{DoxyParams}{Parameters}
{\em \+\_\+filename} & file name of obj file \\
\hline
\end{DoxyParams}


Definition at line 2679 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a52e6aedde84f032d21c696e120325828}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!get\+Face\+Color@{get\+Face\+Color}}
\index{get\+Face\+Color@{get\+Face\+Color}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{get\+Face\+Color}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ unsigned int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::get\+Face\+Color (
\begin{DoxyParamCaption}
\item[{const typename Mesh\+::\+Face\+Handle}]{\+\_\+fh}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a52e6aedde84f032d21c696e120325828}


return a face color from mesh 


\begin{DoxyParams}{Parameters}
{\em \+\_\+fh} & mesh face handle \\
\hline
\end{DoxyParams}


Definition at line 856 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a8f3bc8d1b257ad8b7023b53718594704}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!get\+Mesh\+Property\+Type@{get\+Mesh\+Property\+Type}}
\index{get\+Mesh\+Property\+Type@{get\+Mesh\+Property\+Type}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{get\+Mesh\+Property\+Type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ const void $\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::get\+Mesh\+Property\+Type (
\begin{DoxyParamCaption}
\item[{{\bf Open\+Mesh\+::\+Base\+Property} $\ast$}]{\+\_\+prop, }
\item[{G\+Luint $\ast$}]{\+\_\+out\+Type, }
\item[{unsigned int $\ast$}]{\+\_\+out\+Size}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a8f3bc8d1b257ad8b7023b53718594704}


get the data type of a mesh property 


\begin{DoxyParams}{Parameters}
{\em \+\_\+prop} & mesh property \\
\hline
{\em \+\_\+out\+Type} & \mbox{[}out\mbox{]} data type i.\+e. G\+L\+\_\+\+F\+L\+O\+A\+T, G\+L\+\_\+\+D\+O\+U\+B\+L\+E \\
\hline
{\em \+\_\+out\+Size} & \mbox{[}out\mbox{]} number of atoms in range 1..4 \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
address of property data 
\end{DoxyReturn}


Definition at line 162 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_ae16e4c35a541071b756a2345b015dab8}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!get\+Num\+Textures@{get\+Num\+Textures}}
\index{get\+Num\+Textures@{get\+Num\+Textures}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{get\+Num\+Textures}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ unsigned int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::get\+Num\+Textures (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_ae16e4c35a541071b756a2345b015dab8}


returns the number of used textured of this mesh 

\begin{DoxyReturn}{Returns}
Number of different textures used in the mesh 
\end{DoxyReturn}


Definition at line 2326 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a4c25f7655db393adb44024ed96cff5bf}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!get\+Texture\+I\+Dof\+Face@{get\+Texture\+I\+Dof\+Face}}
\index{get\+Texture\+I\+Dof\+Face@{get\+Texture\+I\+Dof\+Face}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{get\+Texture\+I\+Dof\+Face}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::get\+Texture\+I\+Dof\+Face (
\begin{DoxyParamCaption}
\item[{unsigned int}]{\+\_\+face}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a4c25f7655db393adb44024ed96cff5bf}


get the texture index of a face 


\begin{DoxyParams}{Parameters}
{\em \+\_\+face} & Face index \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Face \hyperlink{a01282}{Texture} id of face 
\end{DoxyReturn}


Definition at line 878 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_aab8143dffcc079c89f77f6d901f7d863}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!get\+Texture\+I\+Dof\+Tri@{get\+Texture\+I\+Dof\+Tri}}
\index{get\+Texture\+I\+Dof\+Tri@{get\+Texture\+I\+Dof\+Tri}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{get\+Texture\+I\+Dof\+Tri}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::get\+Texture\+I\+Dof\+Tri (
\begin{DoxyParamCaption}
\item[{unsigned int}]{\+\_\+tri}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_aab8143dffcc079c89f77f6d901f7d863}


get the texture index of a triangle 


\begin{DoxyParams}{Parameters}
{\em \+\_\+tri} & Triangle index (-\/1 if not available)\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{a01282}{Texture} index of a triangle 
\end{DoxyReturn}


Definition at line 892 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a73bbd1b231c11fff70ca2ec7794ab90d}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!get\+Texture\+Index\+Property\+Name@{get\+Texture\+Index\+Property\+Name}}
\index{get\+Texture\+Index\+Property\+Name@{get\+Texture\+Index\+Property\+Name}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{get\+Texture\+Index\+Property\+Name}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ const std\+::string\& {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::get\+Texture\+Index\+Property\+Name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a73bbd1b231c11fff70ca2ec7794ab90d}


get the name of the texture index property 

\begin{DoxyReturn}{Returns}
name of the texture index property 
\end{DoxyReturn}


Definition at line 316 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_aec8fe7d82bc6f4c82acf5f87edbfd121}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!get\+Vertex\+Color@{get\+Vertex\+Color}}
\index{get\+Vertex\+Color@{get\+Vertex\+Color}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{get\+Vertex\+Color}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ unsigned int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::get\+Vertex\+Color (
\begin{DoxyParamCaption}
\item[{const typename {\bf Mesh\+::\+Vertex\+Handle}}]{\+\_\+vh}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_aec8fe7d82bc6f4c82acf5f87edbfd121}


return a vertex color from mesh 


\begin{DoxyParams}{Parameters}
{\em \+\_\+vh} & mesh vertex handle \\
\hline
\end{DoxyParams}


Definition at line 834 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a855b80677a5c6f30452a906d96148300}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!halfedge\+\_\+point@{halfedge\+\_\+point}}
\index{halfedge\+\_\+point@{halfedge\+\_\+point}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{halfedge\+\_\+point}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ template$<$typename Mesh\+::\+Normal(\+Draw\+Mesh\+T$<$ Mesh $>$\+::$\ast$)(typename Mesh\+::\+Face\+Handle) Normal\+Lookup$>$ {\bf Mesh\+::\+Point} {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::halfedge\+\_\+point (
\begin{DoxyParamCaption}
\item[{const typename Mesh\+::\+Halfedge\+Handle}]{\+\_\+heh}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a855b80677a5c6f30452a906d96148300}


compute halfedge point compute visualization point for halfedge (shifted to interior of face) 


\begin{DoxyParams}{Parameters}
{\em \+\_\+heh} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}

\end{DoxyReturn}


Definition at line 1851 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a65bc871961013b2a12ba5bd2ba1d39c8}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!invalidate\+Full\+V\+B\+O@{invalidate\+Full\+V\+B\+O}}
\index{invalidate\+Full\+V\+B\+O@{invalidate\+Full\+V\+B\+O}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{invalidate\+Full\+V\+B\+O}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::invalidate\+Full\+V\+B\+O (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a65bc871961013b2a12ba5bd2ba1d39c8}


the mesh has been changed 

call this function if you changed anything of the mesh. 

Definition at line 2742 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a54fef4db793c14395246e156d946f802}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!invalidate\+Per\+Edge\+Buffers@{invalidate\+Per\+Edge\+Buffers}}
\index{invalidate\+Per\+Edge\+Buffers@{invalidate\+Per\+Edge\+Buffers}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{invalidate\+Per\+Edge\+Buffers}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::invalidate\+Per\+Edge\+Buffers (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a54fef4db793c14395246e156d946f802}


Update of the buffers. 

This function will set all per edge buffers to invalid and will force an update whe they are requested 

Definition at line 996 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_aad47e0d29b78857ad9c555882b26d535}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!invalidate\+Per\+Halfedge\+Buffers@{invalidate\+Per\+Halfedge\+Buffers}}
\index{invalidate\+Per\+Halfedge\+Buffers@{invalidate\+Per\+Halfedge\+Buffers}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{invalidate\+Per\+Halfedge\+Buffers}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::invalidate\+Per\+Halfedge\+Buffers (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_aad47e0d29b78857ad9c555882b26d535}


Update of the buffers. 

This function will set all per edge buffers to invalid and will force an update whe they are requested 

Definition at line 1021 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a39135384af3c1849f8f000846b6f19e0}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!map\+Vertex\+To\+V\+B\+O\+Index@{map\+Vertex\+To\+V\+B\+O\+Index}}
\index{map\+Vertex\+To\+V\+B\+O\+Index@{map\+Vertex\+To\+V\+B\+O\+Index}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{map\+Vertex\+To\+V\+B\+O\+Index}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ unsigned int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::map\+Vertex\+To\+V\+B\+O\+Index (
\begin{DoxyParamCaption}
\item[{unsigned int}]{\+\_\+v}
\end{DoxyParamCaption}
)}}\label{a00507_a39135384af3c1849f8f000846b6f19e0}


map from vertex index of the original mesh point buffer to the corresponding vertex index inside the V\+B\+O. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+v} & vertex index into mesh points \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
vertex index into V\+B\+O 
\end{DoxyReturn}


Definition at line 1287 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a7810ea8a7e6dbbe725e4f0e06b3a7347}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!per\+Edge\+Color\+Buffer@{per\+Edge\+Color\+Buffer}}
\index{per\+Edge\+Color\+Buffer@{per\+Edge\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{per\+Edge\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ {\bf A\+C\+G\+::\+Vec4f} $\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::per\+Edge\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a7810ea8a7e6dbbe725e4f0e06b3a7347}


get a pointer to the per edge color buffer 

This function will return a pointer to the first element of the color buffer. 

Definition at line 1585 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a218b11c333b26e6a32bb10fc1d11efee}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!per\+Edge\+Vertex\+Buffer@{per\+Edge\+Vertex\+Buffer}}
\index{per\+Edge\+Vertex\+Buffer@{per\+Edge\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{per\+Edge\+Vertex\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ {\bf A\+C\+G\+::\+Vec3f} $\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::per\+Edge\+Vertex\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a218b11c333b26e6a32bb10fc1d11efee}


get a pointer to the per edge vertex buffer 

This function will return a pointer to the first element of the vertex buffer. 

Definition at line 1576 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a1848ef534cffaaa9285c9e8e70c2bb70}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!per\+Face\+Texture\+Coordinate\+Available@{per\+Face\+Texture\+Coordinate\+Available}}
\index{per\+Face\+Texture\+Coordinate\+Available@{per\+Face\+Texture\+Coordinate\+Available}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{per\+Face\+Texture\+Coordinate\+Available}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::per\+Face\+Texture\+Coordinate\+Available (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a1848ef534cffaaa9285c9e8e70c2bb70}


Check if per Face \hyperlink{a01282}{Texture} coordinates are available. 

If this function returns true, a per face per vertex texture array is available

\begin{DoxyReturn}{Returns}
zero if not available, nonzero otherwise 
\end{DoxyReturn}


Definition at line 2338 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_accc3e29579e5e62bdd435b5dfd01c958}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!per\+Face\+Texture\+Index\+Available@{per\+Face\+Texture\+Index\+Available}}
\index{per\+Face\+Texture\+Index\+Available@{per\+Face\+Texture\+Index\+Available}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{per\+Face\+Texture\+Index\+Available}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ int {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::per\+Face\+Texture\+Index\+Available (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_accc3e29579e5e62bdd435b5dfd01c958}


Check if texture indices are available. 

If this function returns true, the strip processor will respect textures during strip generation. Each returned strip has than an index that has to be used as a texture index during strip rendering.

\begin{DoxyReturn}{Returns}
zero if not available, nonzero otherwise 
\end{DoxyReturn}


Definition at line 2354 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a062253fbc45a9f4ee730c4d9a0be9f5b}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!per\+Halfedge\+Color\+Buffer@{per\+Halfedge\+Color\+Buffer}}
\index{per\+Halfedge\+Color\+Buffer@{per\+Halfedge\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{per\+Halfedge\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ {\bf A\+C\+G\+::\+Vec4f} $\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::per\+Halfedge\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a062253fbc45a9f4ee730c4d9a0be9f5b}


get a pointer to the per edge color buffer 

This function will return a pointer to the first element of the color buffer. 

Definition at line 1895 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a18ec314296aa0d8c2e306dd82d53cbd9}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!per\+Halfedge\+Vertex\+Buffer@{per\+Halfedge\+Vertex\+Buffer}}
\index{per\+Halfedge\+Vertex\+Buffer@{per\+Halfedge\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{per\+Halfedge\+Vertex\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ {\bf A\+C\+G\+::\+Vec3f} $\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::per\+Halfedge\+Vertex\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a18ec314296aa0d8c2e306dd82d53cbd9}


get a pointer to the per edge vertex buffer 

This function will return a pointer to the first element of the vertex buffer. 

Definition at line 1880 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_ac63c8b105ae68f67b3a3e3b5d49ad1d0}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Any\+Edge\+Color\+Buffer@{pick\+Any\+Edge\+Color\+Buffer}}
\index{pick\+Any\+Edge\+Color\+Buffer@{pick\+Any\+Edge\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Any\+Edge\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec4uc}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Any\+Edge\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_ac63c8b105ae68f67b3a3e3b5d49ad1d0}


get a pointer to the any picking color buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Any to update the buffer before you render it via \hyperlink{a00643_a0e32472bcfbe69ad1a7832571ff5bea0}{A\+C\+G\+::\+G\+L\+State\+::color\+Pointer}.

\begin{DoxyReturn}{Returns}
Pointer to the first element of the picking buffer 
\end{DoxyReturn}


Definition at line 706 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a4d600d8553c1f6f7f63f95edd15cc79d}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Any\+Face\+Color\+Buffer@{pick\+Any\+Face\+Color\+Buffer}}
\index{pick\+Any\+Face\+Color\+Buffer@{pick\+Any\+Face\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Any\+Face\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec4uc}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Any\+Face\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a4d600d8553c1f6f7f63f95edd15cc79d}


get a pointer to the any picking color buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Any to update the buffer before you render it via \hyperlink{a00643_a0e32472bcfbe69ad1a7832571ff5bea0}{A\+C\+G\+::\+G\+L\+State\+::color\+Pointer}.

\begin{DoxyReturn}{Returns}
Pointer to the first element of the picking buffer 
\end{DoxyReturn}


Definition at line 689 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a17455dd71cf19829fc05cc241f55c3e4}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Any\+Vertex\+Color\+Buffer@{pick\+Any\+Vertex\+Color\+Buffer}}
\index{pick\+Any\+Vertex\+Color\+Buffer@{pick\+Any\+Vertex\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Any\+Vertex\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec4uc}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Any\+Vertex\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a17455dd71cf19829fc05cc241f55c3e4}


get a pointer to the any picking color buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Any to update the buffer before you render it via \hyperlink{a00643_a0e32472bcfbe69ad1a7832571ff5bea0}{A\+C\+G\+::\+G\+L\+State\+::color\+Pointer}.

\begin{DoxyReturn}{Returns}
Pointer to the first element of the picking buffer 
\end{DoxyReturn}


Definition at line 723 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a6abe9e8f1c79221f338da1a780b41208}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Edge\+Color\+Buffer@{pick\+Edge\+Color\+Buffer}}
\index{pick\+Edge\+Color\+Buffer@{pick\+Edge\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Edge\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec4uc}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Edge\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a6abe9e8f1c79221f338da1a780b41208}


get a pointer to the per edge picking color buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Edges to update the buffer before you render it via \hyperlink{a00643_a0e32472bcfbe69ad1a7832571ff5bea0}{A\+C\+G\+::\+G\+L\+State\+::color\+Pointer}.

\begin{DoxyReturn}{Returns}
pointer to the first element of the picking buffer 
\end{DoxyReturn}


Definition at line 547 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_acb77419c1010c0cb7f6ada3b750ef380}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Face\+Color\+Buffer@{pick\+Face\+Color\+Buffer}}
\index{pick\+Face\+Color\+Buffer@{pick\+Face\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Face\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec4uc}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Face\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_acb77419c1010c0cb7f6ada3b750ef380}


get a pointer to the per face picking color buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Faces to update the buffer before you render it via \hyperlink{a00643_a0e32472bcfbe69ad1a7832571ff5bea0}{A\+C\+G\+::\+G\+L\+State\+::color\+Pointer}.

\begin{DoxyReturn}{Returns}
pointer to the per face picking color buffer 
\end{DoxyReturn}


Definition at line 600 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a14307330fb720416139189baec71dd6e}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Face\+Vertex\+Buffer@{pick\+Face\+Vertex\+Buffer}}
\index{pick\+Face\+Vertex\+Buffer@{pick\+Face\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Face\+Vertex\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec3f}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Face\+Vertex\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a14307330fb720416139189baec71dd6e}


get a pointer to the per vertex picking color buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Faces to update the buffer before you render it via \hyperlink{a00643_a0e32472bcfbe69ad1a7832571ff5bea0}{A\+C\+G\+::\+G\+L\+State\+::color\+Pointer}.

\begin{DoxyReturn}{Returns}
pointer to the first element of the picking buffer 
\end{DoxyReturn}


Definition at line 617 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a925ba3415303f71d9d3756ac67b74684}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Vertex\+Buffer@{pick\+Vertex\+Buffer}}
\index{pick\+Vertex\+Buffer@{pick\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Vertex\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec3f}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Vertex\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a925ba3415303f71d9d3756ac67b74684}


get a pointer to the per vertex picking vertex buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Vertices to update the buffer before you render it via \hyperlink{a00643_a2f6806f89c6cce539dd119d32ebc1962}{A\+C\+G\+::\+G\+L\+State\+::vertex\+Pointer}.

\begin{DoxyReturn}{Returns}
pointer to the first element of the picking buffer 
\end{DoxyReturn}


Definition at line 462 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a5e2456bc37e3bf0ef1388be0a61fc92a}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!pick\+Vertex\+Color\+Buffer@{pick\+Vertex\+Color\+Buffer}}
\index{pick\+Vertex\+Color\+Buffer@{pick\+Vertex\+Color\+Buffer}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{pick\+Vertex\+Color\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ {\bf A\+C\+G\+::\+Vec4uc}$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::pick\+Vertex\+Color\+Buffer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a5e2456bc37e3bf0ef1388be0a61fc92a}


get a pointer to the per vertex picking color buffer 

This function will return a pointer to the first element of the picking buffer. Use update\+Picking\+Vertices to update the buffer before you render it via \hyperlink{a00643_a0e32472bcfbe69ad1a7832571ff5bea0}{A\+C\+G\+::\+G\+L\+State\+::color\+Pointer}.

\begin{DoxyReturn}{Returns}
pointer to the first element of the picking buffer 
\end{DoxyReturn}


Definition at line 445 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a7b3cb675a9c0960d51749f7cde8bd36d}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!read\+Vertex@{read\+Vertex}}
\index{read\+Vertex@{read\+Vertex}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{read\+Vertex}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::read\+Vertex (
\begin{DoxyParamCaption}
\item[{unsigned int}]{\+\_\+vertex, }
\item[{const typename {\bf Mesh\+::\+Vertex\+Handle}}]{\+\_\+vh, }
\item[{const typename Mesh\+::\+Halfedge\+Handle}]{\+\_\+hh, }
\item[{const typename Mesh\+::\+Face\+Handle}]{\+\_\+fh}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a7b3cb675a9c0960d51749f7cde8bd36d}


reads a vertex from mesh\+\_\+ and write it to vertex buffer 


\begin{DoxyParams}{Parameters}
{\em \+\_\+vertex} & target vertex id in vbo \\
\hline
{\em \+\_\+vh} & mesh vertex handle to read from \\
\hline
{\em \+\_\+hh} & corresponding halfedge handle of this vertex \\
\hline
{\em \+\_\+fh} & corresponding face handle of this vertex \\
\hline
\end{DoxyParams}


Definition at line 755 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a68e723ffceb16f2244a8cd0e7b7c8def}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!read\+Vertex\+From\+V\+B\+O@{read\+Vertex\+From\+V\+B\+O}}
\index{read\+Vertex\+From\+V\+B\+O@{read\+Vertex\+From\+V\+B\+O}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{read\+Vertex\+From\+V\+B\+O}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::read\+Vertex\+From\+V\+B\+O (
\begin{DoxyParamCaption}
\item[{unsigned int}]{\+\_\+vertex, }
\item[{void $\ast$}]{\+\_\+dst}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a68e723ffceb16f2244a8cd0e7b7c8def}


Read one vertex from the rendering vbo. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+vertex} & vertex id from the rendering vbo (not the original input id from openmesh!) \\
\hline
{\em \+\_\+dst} & \mbox{[}out\mbox{]} pointer to address that will store the vertex. Must have enough space allocated, see vertex declaration stride to get the number of bytes \\
\hline
\end{DoxyParams}


Definition at line 2724 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a4cd0241ab24f433a8ee2c708cbaa65ef}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!rebuild@{rebuild}}
\index{rebuild@{rebuild}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{rebuild}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::rebuild (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a4cd0241ab24f433a8ee2c708cbaa65ef}


draw\+\_\+mesh updater 



Definition at line 407 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_ad2ee5c03429cb39946f5c4bdea02b278}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!scan\+Vertex\+Shader\+For\+Input@{scan\+Vertex\+Shader\+For\+Input}}
\index{scan\+Vertex\+Shader\+For\+Input@{scan\+Vertex\+Shader\+For\+Input}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{scan\+Vertex\+Shader\+For\+Input}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ bool {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::scan\+Vertex\+Shader\+For\+Input (
\begin{DoxyParamCaption}
\item[{const std\+::string \&}]{\+\_\+vertex\+Shader\+File}
\end{DoxyParamCaption}
)}}\label{a00507_ad2ee5c03429cb39946f5c4bdea02b278}


Scan vertex layout from vertex shader. 

Scans a vertex shader for inputs and tries to get the matching properties from \hyperlink{a03368}{Open\+Mesh}. The name of the input attribute in the shader has to match the property name in \hyperlink{a03368}{Open\+Mesh}. Per halfedge properties are preferred over per vertex properties when available. Per face properties are used if the attribute is qualified as \char`\"{}flat\char`\"{} in the shader.


\begin{DoxyParams}{Parameters}
{\em \+\_\+vertex\+Shader\+File} & filename of vertex shader (or vertex shader template) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if all requested properties are available, false otherwise 
\end{DoxyReturn}


Definition at line 2565 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a69f0be6cc53a0d5de281657da022cd00}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!set\+Per\+Face\+Texture\+Coordinate\+Property\+Name@{set\+Per\+Face\+Texture\+Coordinate\+Property\+Name}}
\index{set\+Per\+Face\+Texture\+Coordinate\+Property\+Name@{set\+Per\+Face\+Texture\+Coordinate\+Property\+Name}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{set\+Per\+Face\+Texture\+Coordinate\+Property\+Name}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::set\+Per\+Face\+Texture\+Coordinate\+Property\+Name (
\begin{DoxyParamCaption}
\item[{std\+::string}]{\+\_\+per\+Face\+Texture\+Coordinate\+Property\+Name}
\end{DoxyParamCaption}
)}}\label{a00507_a69f0be6cc53a0d5de281657da022cd00}


set the name of the property used for texture coordinate 

The given property name will define per face \hyperlink{a01282}{Texture} coordinates. This property has to be a halfedge property. The coordinate on each edge is the texture coordinate of the to vertex. If this property is not available, textures will not be processed by the strip processor.


\begin{DoxyParams}{Parameters}
{\em \+\_\+per\+Face\+Texture\+Coordinate\+Property\+Name} & \\
\hline
\end{DoxyParams}


Definition at line 2306 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a6eaffb0dd2e5afa7edd56402ce955fe6}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!set\+Texture\+Index\+Property\+Name@{set\+Texture\+Index\+Property\+Name}}
\index{set\+Texture\+Index\+Property\+Name@{set\+Texture\+Index\+Property\+Name}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{set\+Texture\+Index\+Property\+Name}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::set\+Texture\+Index\+Property\+Name (
\begin{DoxyParamCaption}
\item[{std\+::string}]{\+\_\+index\+Property\+Name}
\end{DoxyParamCaption}
)}}\label{a00507_a6eaffb0dd2e5afa7edd56402ce955fe6}


set the name of the property used for texture index specification 

The given property name will define a texture index. The strip processor checks this property and generates strips which contain only the same index. If the property is not found, strips will be independent of this property


\begin{DoxyParams}{Parameters}
{\em \+\_\+index\+Property\+Name} & \\
\hline
\end{DoxyParams}


Definition at line 2282 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a675ea47bbac547fd13ea54bb7f09d964}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!supports\+Picking\+Any\+\_\+opt@{supports\+Picking\+Any\+\_\+opt}}
\index{supports\+Picking\+Any\+\_\+opt@{supports\+Picking\+Any\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{supports\+Picking\+Any\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ bool {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::supports\+Picking\+Any\+\_\+opt (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a675ea47bbac547fd13ea54bb7f09d964}


Check if optimized any picking is supported. 



Definition at line 2251 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a77a7076cea2e2f8ed7704a7803adbb9c}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!supports\+Picking\+Edges\+\_\+opt@{supports\+Picking\+Edges\+\_\+opt}}
\index{supports\+Picking\+Edges\+\_\+opt@{supports\+Picking\+Edges\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{supports\+Picking\+Edges\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ bool {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::supports\+Picking\+Edges\+\_\+opt (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a77a7076cea2e2f8ed7704a7803adbb9c}


Check if optimized face picking is supported. 



Definition at line 1952 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a82131a97464731a1accb1651b054cf8d}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!supports\+Picking\+Faces\+\_\+opt@{supports\+Picking\+Faces\+\_\+opt}}
\index{supports\+Picking\+Faces\+\_\+opt@{supports\+Picking\+Faces\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{supports\+Picking\+Faces\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ bool {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::supports\+Picking\+Faces\+\_\+opt (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a82131a97464731a1accb1651b054cf8d}


Check if optimized face picking is supported. 



Definition at line 2080 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a678aa34580155c5bbdb03c0806284b36}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!supports\+Picking\+Vertices\+\_\+opt@{supports\+Picking\+Vertices\+\_\+opt}}
\index{supports\+Picking\+Vertices\+\_\+opt@{supports\+Picking\+Vertices\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{supports\+Picking\+Vertices\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ bool {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::supports\+Picking\+Vertices\+\_\+opt (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a678aa34580155c5bbdb03c0806284b36}


Check if optimized vertex picking is supported. 



Definition at line 1667 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_aae94e969981cf76df1c792163a4b22f5}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!test\+Mesh\+Property\+Type\+T@{test\+Mesh\+Property\+Type\+T}}
\index{test\+Mesh\+Property\+Type\+T@{test\+Mesh\+Property\+Type\+T}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{test\+Mesh\+Property\+Type\+T}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ template$<$class T $>$ const void $\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::test\+Mesh\+Property\+Type\+T (
\begin{DoxyParamCaption}
\item[{const {\bf Open\+Mesh\+::\+Base\+Property} $\ast$}]{\+\_\+prop, }
\item[{unsigned int $\ast$}]{\+\_\+out\+Size}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_aae94e969981cf76df1c792163a4b22f5}


test mesh property for type T 

Test whether property is of type T (eg float) or is a vector of type T. Property vectors up to size 4 are supported (native vertex properties).


\begin{DoxyParams}{Parameters}
{\em \+\_\+prop} & mesh property \\
\hline
{\em \+\_\+out\+Size} & \mbox{[}out\mbox{]} number of atoms in range 1..4, set to 0 if test failed \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
address of property data, 0 if test failed 
\end{DoxyReturn}


Definition at line 110 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a41990d5f87cb64d0ebe5068a3208b8ef}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Full@{update\+Full}}
\index{update\+Full@{update\+Full}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Full}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Full (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00507_a41990d5f87cb64d0ebe5068a3208b8ef}


request a full rebuild of the mesh 



Definition at line 294 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_a87f873670145ebe6b1c26cf066c372f5}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Full\+V\+B\+O@{update\+Full\+V\+B\+O}}
\index{update\+Full\+V\+B\+O@{update\+Full\+V\+B\+O}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Full\+V\+B\+O}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Full\+V\+B\+O (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_a87f873670145ebe6b1c26cf066c372f5}


update the full mesh vbo 

the full vbo is the non-\/indexed version for drawing. it's not optimized for rendering at all and it uses lots of memory, so should only be used as last resort. 

Definition at line 2749 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a398f99a73807009eca016055955a6a8b}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+G\+P\+U\+Buffers@{update\+G\+P\+U\+Buffers}}
\index{update\+G\+P\+U\+Buffers@{update\+G\+P\+U\+Buffers}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+G\+P\+U\+Buffers}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+G\+P\+U\+Buffers (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a398f99a73807009eca016055955a6a8b}


eventually update vertex and index buffers 



Definition at line 1248 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_ae43d987dce81a40494820e94afbdd182}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Per\+Edge\+Buffers@{update\+Per\+Edge\+Buffers}}
\index{update\+Per\+Edge\+Buffers@{update\+Per\+Edge\+Buffers}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Per\+Edge\+Buffers}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Per\+Edge\+Buffers (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a00507_ae43d987dce81a40494820e94afbdd182}


Update all per edge drawing buffers. 

The updated buffers are\+: vertex buffer ( 2 vertices per edge ), color buffer 

Definition at line 1764 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a0d72dcdf477ef420c028ce61dd7d43d8}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Any@{update\+Picking\+Any}}
\index{update\+Picking\+Any@{update\+Picking\+Any}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Any}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Any (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state}
\end{DoxyParamCaption}
)}}\label{a00507_a0d72dcdf477ef420c028ce61dd7d43d8}


Call this function to update the color picking array. 

This function calls the update\+Picking\+Vertices, update\+Picking\+Edges, update\+Picking\+Vertices functions with an appropriate offset so that the standard arrays will be updated.


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & Open\+G\+L state \\
\hline
\end{DoxyParams}


Definition at line 2165 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a03fb4bf49e3906040842d9f456449047}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Any\+\_\+opt@{update\+Picking\+Any\+\_\+opt}}
\index{update\+Picking\+Any\+\_\+opt@{update\+Picking\+Any\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Any\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Any\+\_\+opt (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state}
\end{DoxyParamCaption}
)}}\label{a00507_a03fb4bf49e3906040842d9f456449047}


Update color picking array for the shader implementation. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & \\
\hline
\end{DoxyParams}


Definition at line 2241 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a342ce33b005f5662d5ff8e2200b90fc7}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Edges@{update\+Picking\+Edges}}
\index{update\+Picking\+Edges@{update\+Picking\+Edges}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Edges}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Edges (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state, }
\item[{uint}]{\+\_\+offset = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a00507_a342ce33b005f5662d5ff8e2200b90fc7}


Update color picking array for edges. 

Call this function to update the color picking array The \+\_\+offsett value can be used to shift the color in the resulting arrays. pick Any uses the offset to generate arrays for picking everything.


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & \\
\hline
{\em \+\_\+offset} & \\
\hline
\end{DoxyParams}


Definition at line 1913 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a46b1525b1f60f8fdea71f7dc1b61aaee}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Edges\+\_\+opt@{update\+Picking\+Edges\+\_\+opt}}
\index{update\+Picking\+Edges\+\_\+opt@{update\+Picking\+Edges\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Edges\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Edges\+\_\+opt (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state}
\end{DoxyParamCaption}
)}}\label{a00507_a46b1525b1f60f8fdea71f7dc1b61aaee}


Update color picking array for the shader implementation. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & \\
\hline
\end{DoxyParams}


Definition at line 1938 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_adc3a93fbdc16327a301db3d05d44c5e5}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Faces@{update\+Picking\+Faces}}
\index{update\+Picking\+Faces@{update\+Picking\+Faces}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Faces}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Faces (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state}
\end{DoxyParamCaption}
)}}\label{a00507_adc3a93fbdc16327a301db3d05d44c5e5}


Update color picking array for faces. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & \\
\hline
\end{DoxyParams}


Definition at line 2014 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a234b5fdf22d4b68b58ae32e837a6e409}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Faces\+\_\+opt@{update\+Picking\+Faces\+\_\+opt}}
\index{update\+Picking\+Faces\+\_\+opt@{update\+Picking\+Faces\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Faces\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Faces\+\_\+opt (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state}
\end{DoxyParamCaption}
)}}\label{a00507_a234b5fdf22d4b68b58ae32e837a6e409}


Update color picking array for the shader implementation. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & \\
\hline
\end{DoxyParams}


Definition at line 2059 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_a9e3c82e67a8cd52207e7e8a61d0c0978}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Vertices@{update\+Picking\+Vertices}}
\index{update\+Picking\+Vertices@{update\+Picking\+Vertices}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Vertices}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Vertices (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state, }
\item[{uint}]{\+\_\+offset = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a00507_a9e3c82e67a8cd52207e7e8a61d0c0978}
Call this function to update the color picking array The \+\_\+offsett value can be used to shift the color in the resulting arrays. pick Any uses the offset to generate arrays for picking everything.


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & \\
\hline
{\em \+\_\+offset} & \\
\hline
\end{DoxyParams}


Definition at line 1595 of file Draw\+Mesh\+T.\+cc.

\hypertarget{a00507_ab70a1346450c29c67cc51a127119f3ad}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!update\+Picking\+Vertices\+\_\+opt@{update\+Picking\+Vertices\+\_\+opt}}
\index{update\+Picking\+Vertices\+\_\+opt@{update\+Picking\+Vertices\+\_\+opt}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{update\+Picking\+Vertices\+\_\+opt}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh $>$ void {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::update\+Picking\+Vertices\+\_\+opt (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state}
\end{DoxyParamCaption}
)}}\label{a00507_ab70a1346450c29c67cc51a127119f3ad}


Update color picking array for the shader implementation. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+state} & \\
\hline
\end{DoxyParams}


Definition at line 1615 of file Draw\+Mesh\+T.\+cc.



\subsection{Member Data Documentation}
\hypertarget{a00507_a5f0f78e33f060392dff9d402a22bebf0}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!inv\+Vertex\+Map\+\_\+@{inv\+Vertex\+Map\+\_\+}}
\index{inv\+Vertex\+Map\+\_\+@{inv\+Vertex\+Map\+\_\+}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{inv\+Vertex\+Map\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ unsigned int$\ast$ {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::inv\+Vertex\+Map\+\_\+\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_a5f0f78e33f060392dff9d402a22bebf0}
inverse vertex map\+: original \hyperlink{a03368}{Open\+Mesh} vertex index -\/$>$ one vertex index in vbo this map is ambiguous and only useful for per vertex attributes rendering i.\+e. lines! 

Definition at line 865 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_af394dd5a3e3fe5442181406d821d887c}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+@{per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+}}
\index{per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+@{per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ std\+::string {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_af394dd5a3e3fe5442181406d821d887c}


Property for the per face texture coordinates. 

This property is used by the mesh for texture coordinate specification. If this is invalid, then the strip processor will ignore per face textures during processing. 

Definition at line 925 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_ab9c6036e64fc7a52c62fb310d4fc09b0}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!prev\+Num\+Faces\+\_\+@{prev\+Num\+Faces\+\_\+}}
\index{prev\+Num\+Faces\+\_\+@{prev\+Num\+Faces\+\_\+}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{prev\+Num\+Faces\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ size\+\_\+t {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::prev\+Num\+Faces\+\_\+\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_ab9c6036e64fc7a52c62fb310d4fc09b0}
used to track mesh changes, that require a full rebuild values directly taken from Mesh template 

Definition at line 834 of file Draw\+Mesh.\+hh.

\hypertarget{a00507_ae36d1255500bd671b32711f51ceb25af}{\index{A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}!texture\+Index\+Property\+Name\+\_\+@{texture\+Index\+Property\+Name\+\_\+}}
\index{texture\+Index\+Property\+Name\+\_\+@{texture\+Index\+Property\+Name\+\_\+}!A\+C\+G\+::\+Draw\+Mesh\+T@{A\+C\+G\+::\+Draw\+Mesh\+T}}
\subsubsection[{texture\+Index\+Property\+Name\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh$>$ std\+::string {\bf A\+C\+G\+::\+Draw\+Mesh\+T}$<$ {\bf Mesh} $>$\+::texture\+Index\+Property\+Name\+\_\+\hspace{0.3cm}{\ttfamily [private]}}}\label{a00507_ae36d1255500bd671b32711f51ceb25af}


Property for the per face texture index. 

This property is used by the mesh for texture index specification. If this is invalid, then it is assumed that there is one or no active texture. This means that the generated strips will be independent of texture information. 

Definition at line 918 of file Draw\+Mesh.\+hh.



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