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


Mesh Drawing Class.  




{\ttfamily \#include $<$Open\+Flipper/libs\+\_\+required/\+A\+C\+G/\+G\+L/\+Draw\+Mesh.\+hh$>$}

Inheritance diagram for A\+CG\+:\+:Draw\+MeshT$<$ Mesh $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a07288}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a07292}{Subset}
\item 
struct \hyperlink{a07296}{Vertex\+Property}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07288_a014027941669fafae47441981c1f1c48}\label{a07288_a014027941669fafae47441981c1f1c48}} 
enum {\bfseries Property\+Source} \{ {\bfseries P\+R\+O\+P\+E\+R\+T\+Y\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+V\+E\+R\+T\+EX} = 0, 
{\bfseries P\+R\+O\+P\+E\+R\+T\+Y\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+H\+A\+L\+F\+E\+D\+GE}, 
{\bfseries P\+R\+O\+P\+E\+R\+T\+Y\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+F\+A\+CE}
 \}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07288_a4480bc39d6ba9080db0da22ddfac7064}\label{a07288_a4480bc39d6ba9080db0da22ddfac7064}} 
{\bfseries Draw\+MeshT} (\hyperlink{a08764}{Mesh} \&\+\_\+mesh)
\item 
\mbox{\Hypertarget{a07288_aadf6c5330710157a2a350ab14e9b3d68}\label{a07288_aadf6c5330710157a2a350ab14e9b3d68}} 
void {\bfseries disable\+Colors} ()
\item 
\mbox{\Hypertarget{a07288_a870fd391df57a53062039124d4a5f30a}\label{a07288_a870fd391df57a53062039124d4a5f30a}} 
void {\bfseries use\+Per\+Vertex\+Colors} ()
\item 
\mbox{\Hypertarget{a07288_a34d4f7b63e852a7032513161e35fa2da}\label{a07288_a34d4f7b63e852a7032513161e35fa2da}} 
void {\bfseries use\+Per\+Face\+Colors} ()
\item 
\mbox{\Hypertarget{a07288_a277a2a7ce55dc88caafe67c31301bf36}\label{a07288_a277a2a7ce55dc88caafe67c31301bf36}} 
void {\bfseries set\+Flat\+Shading} ()
\item 
\mbox{\Hypertarget{a07288_ac858057c0625e5ab603d5c044323f69d}\label{a07288_ac858057c0625e5ab603d5c044323f69d}} 
void {\bfseries set\+Smooth\+Shading} ()
\item 
\mbox{\Hypertarget{a07288_af28c9173ce7304ddab5682456e992da9}\label{a07288_af28c9173ce7304ddab5682456e992da9}} 
void {\bfseries use\+Per\+Vertex\+Texcoords} ()
\item 
\mbox{\Hypertarget{a07288_a5e2c1dc5955b2d0ce256d8affdf9ae33}\label{a07288_a5e2c1dc5955b2d0ce256d8affdf9ae33}} 
void {\bfseries use\+Per\+Halfedge\+Texcoords} ()
\item 
\mbox{\Hypertarget{a07288_ab3e0b6a765715467faf54cbeaeabc0d9}\label{a07288_ab3e0b6a765715467faf54cbeaeabc0d9}} 
void {\bfseries use\+Per\+Vertex\+Normals} ()
\item 
\mbox{\Hypertarget{a07288_a2e2a06ae77484a22e1d0a819c3475db9}\label{a07288_a2e2a06ae77484a22e1d0a819c3475db9}} 
void {\bfseries use\+Per\+Halfedge\+Normals} ()
\item 
\mbox{\Hypertarget{a07288_a2b98d07abfde4bc79519c2272c2a04f3}\label{a07288_a2b98d07abfde4bc79519c2272c2a04f3}} 
void \hyperlink{a07288_a2b98d07abfde4bc79519c2272c2a04f3}{bind\+Buffers} ()
\begin{DoxyCompactList}\small\item\em eventually rebuilds buffers used for rendering and binds index and vertex buffer \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_abe2082b81e506c2717ebc129eb593613}\label{a07288_abe2082b81e506c2717ebc129eb593613}} 
G\+Luint \hyperlink{a07288_abe2082b81e506c2717ebc129eb593613}{get\+V\+BO} ()
\begin{DoxyCompactList}\small\item\em get opengl vertex buffer id \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_ad44046f4e47b8c12269ea8771ce9082a}\label{a07288_ad44046f4e47b8c12269ea8771ce9082a}} 
G\+Luint \hyperlink{a07288_ad44046f4e47b8c12269ea8771ce9082a}{get\+I\+BO} ()
\begin{DoxyCompactList}\small\item\em get opengl index buffer id \end{DoxyCompactList}\item 
G\+Luint \hyperlink{a07288_aa7ae11a30f1fe433e31905850d34d472}{get\+H\+E\+V\+BO} ()
\begin{DoxyCompactList}\small\item\em get\+H\+E\+V\+BO get V\+BO which stores Halfedges with offset \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a1836950bef58097431e90a408b70fba0}\label{a07288_a1836950bef58097431e90a408b70fba0}} 
\hyperlink{a07596}{Vertex\+Declaration} $\ast$ \hyperlink{a07288_a1836950bef58097431e90a408b70fba0}{get\+Vertex\+Declaration} ()
\begin{DoxyCompactList}\small\item\em get vertex declaration of the current vbo layout \end{DoxyCompactList}\item 
unsigned int \hyperlink{a07288_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\+BO. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_ae219134d242edc5319fc7fb733b0ea11}\label{a07288_ae219134d242edc5319fc7fb733b0ea11}} 
void \hyperlink{a07288_ae219134d242edc5319fc7fb733b0ea11}{bind\+Buffers\+To\+Render\+Object} (\hyperlink{a07532}{Render\+Object} $\ast$\+\_\+obj)
\begin{DoxyCompactList}\small\item\em eventually rebuilds buffers used for rendering and binds index and vertex buffer \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_ade9aa40eb1b3deacf112529befd14e70}\label{a07288_ade9aa40eb1b3deacf112529befd14e70}} 
void \hyperlink{a07288_ade9aa40eb1b3deacf112529befd14e70}{unbind\+Buffers} ()
\begin{DoxyCompactList}\small\item\em disables vertex, normal, texcoord and color pointers in Open\+GL \end{DoxyCompactList}\item 
void \hyperlink{a07288_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{a07288_a8524ca0ddf04fdd5a748fa4c2d3cb934}{add\+Tri\+Render\+Objects} (\hyperlink{a07468}{I\+Renderer} $\ast$\+\_\+renderer, const \hyperlink{a07532}{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 
\mbox{\Hypertarget{a07288_a1e776fb2447d0473f13c17ea41ed7476}\label{a07288_a1e776fb2447d0473f13c17ea41ed7476}} 
void \hyperlink{a07288_a1e776fb2447d0473f13c17ea41ed7476}{draw\+Lines} ()
\begin{DoxyCompactList}\small\item\em render the mesh in wireframe mode \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a1ade65d38a9ab72ce71d17ded5e7f82f}\label{a07288_a1ade65d38a9ab72ce71d17ded5e7f82f}} 
void \hyperlink{a07288_a1ade65d38a9ab72ce71d17ded5e7f82f}{add\+Line\+Render\+Objects} (\hyperlink{a07468}{I\+Renderer} $\ast$\+\_\+renderer, const \hyperlink{a07532}{Render\+Object} $\ast$\+\_\+base\+Obj)
\begin{DoxyCompactList}\small\item\em render the mesh in wireframe mode, deferred draw call \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a6073761d3703ab61d2e37fe2976f2f4e}\label{a07288_a6073761d3703ab61d2e37fe2976f2f4e}} 
void \hyperlink{a07288_a6073761d3703ab61d2e37fe2976f2f4e}{draw\+Vertices} ()
\begin{DoxyCompactList}\small\item\em render vertices only \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_adc7e7a142c1932aee03c6735968d03fa}\label{a07288_adc7e7a142c1932aee03c6735968d03fa}} 
void \hyperlink{a07288_adc7e7a142c1932aee03c6735968d03fa}{add\+Point\+Render\+Objects} (\hyperlink{a07468}{I\+Renderer} $\ast$\+\_\+renderer, const \hyperlink{a07532}{Render\+Object} $\ast$\+\_\+base\+Obj)
\begin{DoxyCompactList}\small\item\em render vertices only, deferred draw call \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a62aa936235bfddc2947ca8430765ea69}\label{a07288_a62aa936235bfddc2947ca8430765ea69}} 
unsigned int \hyperlink{a07288_a62aa936235bfddc2947ca8430765ea69}{get\+Memory\+Usage} (bool \+\_\+print\+Report=false)
\begin{DoxyCompactList}\small\item\em measures the size in bytes of allocated memory. eventually prints a report to std\+::cout \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a2f63986945da83592b63cc4b2a655ac7}\label{a07288_a2f63986945da83592b63cc4b2a655ac7}} 
void \hyperlink{a07288_a2f63986945da83592b63cc4b2a655ac7}{update\+Topology} ()
\begin{DoxyCompactList}\small\item\em request an update for the mesh topology \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_acf03160603be2f3c1da4413ad44005d6}\label{a07288_acf03160603be2f3c1da4413ad44005d6}} 
void \hyperlink{a07288_acf03160603be2f3c1da4413ad44005d6}{update\+Geometry} ()
\begin{DoxyCompactList}\small\item\em request an update for the mesh vertices \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a4e635820d78c82bce09907654f123ba0}\label{a07288_a4e635820d78c82bce09907654f123ba0}} 
void \hyperlink{a07288_a4e635820d78c82bce09907654f123ba0}{update\+Textures} ()
\begin{DoxyCompactList}\small\item\em request an update for the textures \end{DoxyCompactList}\item 
void \hyperlink{a07288_a41990d5f87cb64d0ebe5068a3208b8ef}{update\+Full} ()
\begin{DoxyCompactList}\small\item\em request a full rebuild of the mesh \end{DoxyCompactList}\item 
unsigned int \hyperlink{a07288_ae16e4c35a541071b756a2345b015dab8}{get\+Num\+Textures} ()
\begin{DoxyCompactList}\small\item\em returns the number of used textured of this mesh \end{DoxyCompactList}\item 
void \hyperlink{a07288_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{a07288_a1e1daf6a58f726ad6fd146919e6ba403}{get\+Texture\+Index\+Property\+Name} () const
\begin{DoxyCompactList}\small\item\em get the name of the texture index property \end{DoxyCompactList}\item 
void \hyperlink{a07288_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{a07288_a1848ef534cffaaa9285c9e8e70c2bb70}{per\+Face\+Texture\+Coordinate\+Available} ()
\begin{DoxyCompactList}\small\item\em Check if per Face \hyperlink{a07344}{Texture} coordinates are available. \end{DoxyCompactList}\item 
int \hyperlink{a07288_accc3e29579e5e62bdd435b5dfd01c958}{per\+Face\+Texture\+Index\+Available} ()
\begin{DoxyCompactList}\small\item\em Check if texture indices are available. \end{DoxyCompactList}\item 
void \hyperlink{a07288_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\+EX)
\begin{DoxyCompactList}\small\item\em Add custom elements to the vertex layout. \end{DoxyCompactList}\item 
bool \hyperlink{a07288_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{a07288_a9e3c82e67a8cd52207e7e8a61d0c0978}{update\+Picking\+Vertices} (\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state, uint \+\_\+offset=0)
\item 
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a07288_a5e2456bc37e3bf0ef1388be0a61fc92a}{pick\+Vertex\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per vertex picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a07288_a925ba3415303f71d9d3756ac67b74684}{pick\+Vertex\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per vertex picking vertex buffer \end{DoxyCompactList}\item 
void \hyperlink{a07288_a97afc6af689541e3816fec7cb84c4e26}{draw\+Picking\+Vertices\+\_\+opt} (const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, size\+\_\+t \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of vertex picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a07288_a678aa34580155c5bbdb03c0806284b36}{supports\+Picking\+Vertices\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized vertex picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a07288_ab70a1346450c29c67cc51a127119f3ad}{update\+Picking\+Vertices\+\_\+opt} (\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for the shader implementation. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a31e17f92e48b2edee414f4c071dad089}\label{a07288_a31e17f92e48b2edee414f4c071dad089}} 
\hyperlink{a07360}{Texture\+Buffer} $\ast$ {\bfseries pick\+Vertex\+Map\+\_\+opt} ()
\item 
void \hyperlink{a07288_a342ce33b005f5662d5ff8e2200b90fc7}{update\+Picking\+Edges} (\hyperlink{a07452}{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{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a07288_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{a07288_a24e36d648e0be4e52c72255b99d3c652}{draw\+Picking\+Edges\+\_\+opt} (const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, size\+\_\+t \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of edge picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a07288_a77a7076cea2e2f8ed7704a7803adbb9c}{supports\+Picking\+Edges\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized face picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a07288_a46b1525b1f60f8fdea71f7dc1b61aaee}{update\+Picking\+Edges\+\_\+opt} (\hyperlink{a07452}{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{a07288_adc3a93fbdc16327a301db3d05d44c5e5}{update\+Picking\+Faces} (\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for faces. \end{DoxyCompactList}\item 
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a07288_acb77419c1010c0cb7f6ada3b750ef380}{pick\+Face\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per face picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a07288_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{a07288_a2401f366acdd22bd6c751aabc1692048}{draw\+Picking\+Faces\+\_\+opt} (const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, size\+\_\+t \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of face picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a07288_a82131a97464731a1accb1651b054cf8d}{supports\+Picking\+Faces\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized face picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a07288_a234b5fdf22d4b68b58ae32e837a6e409}{update\+Picking\+Faces\+\_\+opt} (\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&\+\_\+state)
\begin{DoxyCompactList}\small\item\em Update color picking array for the shader implementation. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a90c28217883bada0c988e510df18c8a8}\label{a07288_a90c28217883bada0c988e510df18c8a8}} 
\hyperlink{a07360}{Texture\+Buffer} $\ast$ {\bfseries pick\+Face\+Triangle\+Map\+\_\+opt} ()
\item 
void \hyperlink{a07288_a0d72dcdf477ef420c028ce61dd7d43d8}{update\+Picking\+Any} (\hyperlink{a07452}{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{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a07288_a4d600d8553c1f6f7f63f95edd15cc79d}{pick\+Any\+Face\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the any picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a07288_ac63c8b105ae68f67b3a3e3b5d49ad1d0}{pick\+Any\+Edge\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the any picking color buffer \end{DoxyCompactList}\item 
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $\ast$ \hyperlink{a07288_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{a07288_a303e0a27644f81a9234003dd7bc2b386}{draw\+Picking\+Any\+\_\+opt} (const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&\+\_\+mvp, size\+\_\+t \+\_\+pick\+Offset)
\begin{DoxyCompactList}\small\item\em Optimized rendering of any picking ids with a shader. \end{DoxyCompactList}\item 
bool \hyperlink{a07288_a675ea47bbac547fd13ea54bb7f09d964}{supports\+Picking\+Any\+\_\+opt} ()
\begin{DoxyCompactList}\small\item\em Check if optimized any picking is supported. \end{DoxyCompactList}\item 
void \hyperlink{a07288_a03fb4bf49e3906040842d9f456449047}{update\+Picking\+Any\+\_\+opt} (\hyperlink{a07452}{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{a07288_ae86ba7882d269de8e8b0edd38f4c9a29}{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{a07288_a65bc871961013b2a12ba5bd2ba1d39c8}{invalidate\+Full\+V\+BO} ()
\begin{DoxyCompactList}\small\item\em the mesh has been changed \end{DoxyCompactList}\item 
void \hyperlink{a07288_a87f873670145ebe6b1c26cf066c372f5}{update\+Full\+V\+BO} ()
\begin{DoxyCompactList}\small\item\em update the full mesh vbo \end{DoxyCompactList}\item 
void \hyperlink{a07288_a54fef4db793c14395246e156d946f802}{invalidate\+Per\+Edge\+Buffers} ()
\begin{DoxyCompactList}\small\item\em Update of the buffers. \end{DoxyCompactList}\item 
void \hyperlink{a07288_ae43d987dce81a40494820e94afbdd182}{update\+Per\+Edge\+Buffers} ()
\begin{DoxyCompactList}\small\item\em Update all per edge drawing buffers. \end{DoxyCompactList}\item 
\hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a07288_a218b11c333b26e6a32bb10fc1d11efee}{per\+Edge\+Vertex\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge vertex buffer \end{DoxyCompactList}\item 
\hyperlink{a06176_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $\ast$ \hyperlink{a07288_a7810ea8a7e6dbbe725e4f0e06b3a7347}{per\+Edge\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge color buffer \end{DoxyCompactList}\item 
void \hyperlink{a07288_aad47e0d29b78857ad9c555882b26d535}{invalidate\+Per\+Halfedge\+Buffers} ()
\begin{DoxyCompactList}\small\item\em Update of the buffers. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a47068dbaedc20e960af289bce3ca5c16}\label{a07288_a47068dbaedc20e960af289bce3ca5c16}} 
{\footnotesize template$<$typename Mesh\+::\+Normal(\+Draw\+Mesh\+T\+::$\ast$)(typename Mesh\+::\+Face\+Handle) Normal\+Lookup$>$ }\\void \hyperlink{a07288_a47068dbaedc20e960af289bce3ca5c16}{update\+Per\+Halfedge\+Buffers} ()
\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{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a07288_a18ec314296aa0d8c2e306dd82d53cbd9}{per\+Halfedge\+Vertex\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge vertex buffer \end{DoxyCompactList}\item 
\hyperlink{a06176_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $\ast$ \hyperlink{a07288_a062253fbc45a9f4ee730c4d9a0be9f5b}{per\+Halfedge\+Color\+Buffer} ()
\begin{DoxyCompactList}\small\item\em get a pointer to the per edge color buffer \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_afe31446d9a0d584b66101314563784de}\label{a07288_afe31446d9a0d584b66101314563784de}} 
void \hyperlink{a07288_afe31446d9a0d584b66101314563784de}{update\+Edge\+Halfedge\+Vertex\+Declarations} ()
\begin{DoxyCompactList}\small\item\em updates per edge and halfedge vertex declarations \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a475a9f0d044e0c9c74e3e69a04c03615}\label{a07288_a475a9f0d044e0c9c74e3e69a04c03615}} 
const \hyperlink{a07596}{Vertex\+Declaration} $\ast$ \hyperlink{a07288_a475a9f0d044e0c9c74e3e69a04c03615}{get\+Edge\+Colored\+Vertex\+Declaration} () const
\begin{DoxyCompactList}\small\item\em getter for vertex declarations \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a3f6e9d30da2b15d98397a66de95325f4}\label{a07288_a3f6e9d30da2b15d98397a66de95325f4}} 
const \hyperlink{a07596}{Vertex\+Declaration} $\ast$ \hyperlink{a07288_a3f6e9d30da2b15d98397a66de95325f4}{get\+Halfedge\+Vertex\+Declaration} () const
\begin{DoxyCompactList}\small\item\em getter for vertex declarations \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_aa89541950f64ef8c050e3c120dfdad89}\label{a07288_aa89541950f64ef8c050e3c120dfdad89}} 
const \hyperlink{a07596}{Vertex\+Declaration} $\ast$ \hyperlink{a07288_aa89541950f64ef8c050e3c120dfdad89}{get\+Halfedge\+Colored\+Vertex\+Declaration} () const
\begin{DoxyCompactList}\small\item\em getter for vertex declarations \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07288_a157b75af34a0b2ea44b8415cfecc62d1}\label{a07288_a157b75af34a0b2ea44b8415cfecc62d1}} 
enum {\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+T\+Y\+PE} \{ \newline
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+N\+O\+NE} = 0, 
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+F\+U\+LL} = 1, 
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+G\+E\+O\+M\+E\+T\+RY} = 2, 
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+T\+O\+P\+O\+L\+O\+GY} = 4, 
\newline
{\bfseries R\+E\+B\+U\+I\+L\+D\+\_\+\+T\+E\+X\+T\+U\+R\+ES} = 8
 \}
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a07288_a4cd0241ab24f433a8ee2c708cbaa65ef}{rebuild} ()
\begin{DoxyCompactList}\small\item\em draw\+\_\+mesh updater \end{DoxyCompactList}\item 
void \hyperlink{a07288_a872394be815eb84c00627ecf5c7f2fac}{read\+Vertex} (size\+\_\+t \+\_\+vertex, const typename \hyperlink{a08776_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{a07288_a7a7d851c6e58fc10777ce31938f455dc}{get\+Vertex\+Color} (const typename \hyperlink{a08776_a0fc18e13d70825938274e3faf7b55e01}{Mesh\+::\+Vertex\+Handle} \&\+\_\+vh)
\begin{DoxyCompactList}\small\item\em return a vertex color from mesh \end{DoxyCompactList}\item 
unsigned int \hyperlink{a07288_a38bfb3982252a672a8f9501f6841f284}{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{a07288_a398f99a73807009eca016055955a6a8b}{update\+G\+P\+U\+Buffers} ()
\begin{DoxyCompactList}\small\item\em eventually update vertex and index buffers \end{DoxyCompactList}\item 
void \hyperlink{a07288_a8651795952e95cbeb7313421a57d2e68}{create\+V\+BO} ()
\begin{DoxyCompactList}\small\item\em stores the vertex buffer on the gpu \end{DoxyCompactList}\item 
void \hyperlink{a07288_adb2ce3a55382aec834649c16a352dee0}{create\+I\+BO} ()
\begin{DoxyCompactList}\small\item\em stores the index buffer on the gpu \end{DoxyCompactList}\item 
void \hyperlink{a07288_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{a07288_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{a07288_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{a07288_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{a07288_a3a61695085efb39bda4063b4d58a28d9}{get\+Mesh\+Property\+Type} (\hyperlink{a08824}{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{a07288_a1cb10e9c655bb2b95f26e7bc008f6426}{test\+Mesh\+Property\+TypeT} (const \hyperlink{a08824}{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 
\mbox{\Hypertarget{a07288_affb1db3a650e273fd283ab637c76afeb}\label{a07288_affb1db3a650e273fd283ab637c76afeb}} 
void {\bfseries write\+Vertex\+Element} (void $\ast$\+\_\+dst\+Buf, size\+\_\+t \+\_\+vertex, size\+\_\+t \+\_\+stride, size\+\_\+t \+\_\+element\+Offset, size\+\_\+t \+\_\+element\+Size, const void $\ast$\+\_\+element\+Data)
\item 
\mbox{\Hypertarget{a07288_af9d5245c596dc277f5520a0a2cd5ec27}\label{a07288_af9d5245c596dc277f5520a0a2cd5ec27}} 
void {\bfseries write\+Position} (size\+\_\+t \+\_\+vertex, const \hyperlink{a06176_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \&\+\_\+p)
\item 
\mbox{\Hypertarget{a07288_a7177d6b93274bb7e147b2501db4ac8c6}\label{a07288_a7177d6b93274bb7e147b2501db4ac8c6}} 
void {\bfseries write\+Normal} (size\+\_\+t \+\_\+vertex, const \hyperlink{a06176_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \&\+\_\+n)
\item 
\mbox{\Hypertarget{a07288_ab1c4d9981022be48b5a416638b8dde59}\label{a07288_ab1c4d9981022be48b5a416638b8dde59}} 
void {\bfseries write\+Texcoord} (size\+\_\+t \+\_\+vertex, const \hyperlink{a06176_a8b858737aebd55e312149cf208a0b3f3}{A\+C\+G\+::\+Vec2f} \&\+\_\+uv)
\item 
\mbox{\Hypertarget{a07288_ab19287698eaf1bbcb4188da5991e44c0}\label{a07288_ab19287698eaf1bbcb4188da5991e44c0}} 
void {\bfseries write\+Color} (size\+\_\+t \+\_\+vertex, unsigned int \+\_\+color)
\item 
\mbox{\Hypertarget{a07288_a6e42d1d0a367d175744e6c52ac841d22}\label{a07288_a6e42d1d0a367d175744e6c52ac841d22}} 
void {\bfseries write\+Vertex\+Property} (size\+\_\+t \+\_\+vertex, const \hyperlink{a07592}{Vertex\+Element} $\ast$\+\_\+element\+Desc, const \hyperlink{a06176_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} \&\+\_\+propf)
\item 
\mbox{\Hypertarget{a07288_a0db898cee05340aac21e649d7caba0cf}\label{a07288_a0db898cee05340aac21e649d7caba0cf}} 
void {\bfseries write\+Vertex\+Property} (size\+\_\+t \+\_\+vertex, const \hyperlink{a07592}{Vertex\+Element} $\ast$\+\_\+element\+Desc, const \hyperlink{a06176_a2ba4d05b21aa0247255d38e770bcc255}{A\+C\+G\+::\+Vec4d} \&\+\_\+propd)
\item 
void \hyperlink{a07288_a68e723ffceb16f2244a8cd0e7b7c8def}{read\+Vertex\+From\+V\+BO} (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{a08776_aed10fb4dfb536b53a5e20c8f2442eadf}{Mesh\+::\+Point} \hyperlink{a07288_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 
\mbox{\Hypertarget{a07288_a3b802727d3b4bf90f1be9cd7aa610139}\label{a07288_a3b802727d3b4bf90f1be9cd7aa610139}} 
\hyperlink{a08776_a3570fd132d1ac589b380485cf59c9e0b}{Mesh\+::\+Normal} {\bfseries cached\+Normal\+Lookup} (typename Mesh\+::\+Face\+Handle fh)
\item 
\mbox{\Hypertarget{a07288_a495eb2139314955c25cc8ed9c5824e69}\label{a07288_a495eb2139314955c25cc8ed9c5824e69}} 
\hyperlink{a08776_a3570fd132d1ac589b380485cf59c9e0b}{Mesh\+::\+Normal} {\bfseries computed\+Tri\+Mesh\+Normal} (typename Mesh\+::\+Face\+Handle fh)
\item 
\mbox{\Hypertarget{a07288_a386855e583e5710d947429a3a2045727}\label{a07288_a386855e583e5710d947429a3a2045727}} 
\hyperlink{a08776_a3570fd132d1ac589b380485cf59c9e0b}{Mesh\+::\+Normal} {\bfseries computed\+Normal} (typename Mesh\+::\+Face\+Handle fh)
\item 
\mbox{\Hypertarget{a07288_a77531d64fde1fe3d430dbf69ebf34c1b}\label{a07288_a77531d64fde1fe3d430dbf69ebf34c1b}} 
Mesh\+::\+Halfedge\+Handle {\bfseries map\+To\+Halfedge\+Handle} (size\+\_\+t \+\_\+vertex\+Id)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07288_a99b63f2f848dc22818339176a18c3f77}\label{a07288_a99b63f2f848dc22818339176a18c3f77}} 
std\+::vector$<$ \hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ \hyperlink{a07288_a99b63f2f848dc22818339176a18c3f77}{pick\+Vert\+Buf\+\_\+}
\begin{DoxyCompactList}\small\item\em The vertex buffer used for vertex picking. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a6bb6cc38e5be359edaf04d781df7d623}\label{a07288_a6bb6cc38e5be359edaf04d781df7d623}} 
std\+::vector$<$ \hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ \hyperlink{a07288_a6bb6cc38e5be359edaf04d781df7d623}{pick\+Vert\+Col\+Buf\+\_\+}
\begin{DoxyCompactList}\small\item\em The color buffer used for vertex picking. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a098937cf67433412c10e64bde0102d2e}\label{a07288_a098937cf67433412c10e64bde0102d2e}} 
\hyperlink{a07360}{Texture\+Buffer} {\bfseries pick\+Vertex\+Map\+T\+B\+O\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a304ce7b32f2aed8f7840a0047d6e8e80}\label{a07288_a304ce7b32f2aed8f7840a0047d6e8e80}} 
\hyperlink{a08132}{G\+L\+S\+L\+::\+Program} $\ast$ {\bfseries pick\+Vertex\+Shader\+\_\+}
\item 
\mbox{\Hypertarget{a07288_ae750a70d6366339dc2f0f8f2a20da7ab}\label{a07288_ae750a70d6366339dc2f0f8f2a20da7ab}} 
int {\bfseries pick\+Vertex\+Method\+\_\+}
\item 
\mbox{\Hypertarget{a07288_aef91534a5d60eb99222f8395e3ea6813}\label{a07288_aef91534a5d60eb99222f8395e3ea6813}} 
std\+::vector$<$ \hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Edge\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a3b207651eee0b06ab43ec147dfaf3995}\label{a07288_a3b207651eee0b06ab43ec147dfaf3995}} 
\hyperlink{a08132}{G\+L\+S\+L\+::\+Program} $\ast$ {\bfseries pick\+Edge\+Shader\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a19203e32b3c84fc3b596e92974687e83}\label{a07288_a19203e32b3c84fc3b596e92974687e83}} 
std\+::vector$<$ \hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ {\bfseries pick\+Face\+Vertex\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a448fd807fd33ca424005cfa624f0066d}\label{a07288_a448fd807fd33ca424005cfa624f0066d}} 
std\+::vector$<$ \hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Face\+Col\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_acd33fe59cd665eea56cdfe670ff57582}\label{a07288_acd33fe59cd665eea56cdfe670ff57582}} 
\hyperlink{a07360}{Texture\+Buffer} {\bfseries pick\+Face\+Tri\+To\+Face\+Map\+T\+B\+O\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a8fe7bf4c4b74ca3b5bce5c9f22a57976}\label{a07288_a8fe7bf4c4b74ca3b5bce5c9f22a57976}} 
\hyperlink{a08132}{G\+L\+S\+L\+::\+Program} $\ast$ \hyperlink{a07288_a8fe7bf4c4b74ca3b5bce5c9f22a57976}{pick\+Face\+Shader\+\_\+}
\begin{DoxyCompactList}\small\item\em optimized face picking shader \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_af4e1b0da1e7ed5b617b0b104e897fed8}\label{a07288_af4e1b0da1e7ed5b617b0b104e897fed8}} 
std\+::vector$<$ \hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Any\+Face\+Col\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a2e2d0ca5708c18660e79e246aa496f29}\label{a07288_a2e2d0ca5708c18660e79e246aa496f29}} 
std\+::vector$<$ \hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Any\+Edge\+Col\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a34e19d1b3d3d13b5a3e4085ebb44fffd}\label{a07288_a34e19d1b3d3d13b5a3e4085ebb44fffd}} 
std\+::vector$<$ \hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc} $>$ {\bfseries pick\+Any\+Vertex\+Col\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_ac6cec84354066215d629e3462354f956}\label{a07288_ac6cec84354066215d629e3462354f956}} 
\hyperlink{a08764}{Mesh} \& \hyperlink{a07288_ac6cec84354066215d629e3462354f956}{mesh\+\_\+}
\begin{DoxyCompactList}\small\item\em \hyperlink{a06210}{Open\+Mesh} object to be rendered. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a888eccd9383f2d6b159152c5d1ccd7ef}\label{a07288_a888eccd9383f2d6b159152c5d1ccd7ef}} 
unsigned int $\ast$ \hyperlink{a07288_a888eccd9383f2d6b159152c5d1ccd7ef}{indices\+\_\+}
\begin{DoxyCompactList}\small\item\em final index buffer used for rendering \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a7053193084a3980f551aac6f381953cc}\label{a07288_a7053193084a3980f551aac6f381953cc}} 
unsigned int \hyperlink{a07288_a7053193084a3980f551aac6f381953cc}{rebuild\+\_\+}
\begin{DoxyCompactList}\small\item\em hint on what to rebuild \end{DoxyCompactList}\item 
size\+\_\+t \hyperlink{a07288_ab9c6036e64fc7a52c62fb310d4fc09b0}{prev\+Num\+Faces\+\_\+}
\item 
\mbox{\Hypertarget{a07288_aae4136e590d77fa1a21722d475d197b0}\label{a07288_aae4136e590d77fa1a21722d475d197b0}} 
size\+\_\+t {\bfseries prev\+Num\+Verts\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a3065e465eb4fed18689afce7719bd683}\label{a07288_a3065e465eb4fed18689afce7719bd683}} 
int \hyperlink{a07288_a3065e465eb4fed18689afce7719bd683}{color\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em Color Mode\+: 0\+: none, 1\+: per vertex, else\+: per face. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_ae8b6cb2eabf559a33e2b072f047090eb}\label{a07288_ae8b6cb2eabf559a33e2b072f047090eb}} 
int \hyperlink{a07288_ae8b6cb2eabf559a33e2b072f047090eb}{cur\+V\+B\+O\+Color\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em Color Mode of vbo. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a742b988a0ba91168c360d2e41a988fa5}\label{a07288_a742b988a0ba91168c360d2e41a988fa5}} 
int \hyperlink{a07288_a742b988a0ba91168c360d2e41a988fa5}{flat\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em flat / smooth shade mode toggle \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a7ef10d0ed8ec2d4b9ad0ea85d8aeb505}\label{a07288_a7ef10d0ed8ec2d4b9ad0ea85d8aeb505}} 
int \hyperlink{a07288_a7ef10d0ed8ec2d4b9ad0ea85d8aeb505}{b\+V\+B\+Oin\+Flat\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em normals in V\+BO currently in flat / smooth mode \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_ae4216995528b487405e9c17d277a4e72}\label{a07288_ae4216995528b487405e9c17d277a4e72}} 
int \hyperlink{a07288_ae4216995528b487405e9c17d277a4e72}{texture\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em per vertex / halfedge texture mode toggle\+: 0\+: per vertex, 1\+: per halfedge \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a610847676b198b6b6e1839674bbc24a2}\label{a07288_a610847676b198b6b6e1839674bbc24a2}} 
int \hyperlink{a07288_a610847676b198b6b6e1839674bbc24a2}{b\+V\+B\+Oin\+Halfedge\+Tex\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em texcoords in V\+BO currently in per vertex / halfedge mode toggle \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a23f9418079948fc73ed5e998bbb920f8}\label{a07288_a23f9418079948fc73ed5e998bbb920f8}} 
int \hyperlink{a07288_a23f9418079948fc73ed5e998bbb920f8}{halfedge\+Normal\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em per vertex / halfedge normals mode toggle\+: 0\+: per vertex, 1\+: per halfedge \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_af7cb14759f164318404381658b65f795}\label{a07288_af7cb14759f164318404381658b65f795}} 
int \hyperlink{a07288_af7cb14759f164318404381658b65f795}{b\+V\+B\+Oin\+Halfedge\+Normal\+Mode\+\_\+}
\begin{DoxyCompactList}\small\item\em normals in V\+BO currently in per vertex / halfedge mode toggle \end{DoxyCompactList}\item 
unsigned int $\ast$ \hyperlink{a07288_a5f0f78e33f060392dff9d402a22bebf0}{inv\+Vertex\+Map\+\_\+}
\item 
\mbox{\Hypertarget{a07288_afbdbf69ed2dcdaf09f967798e97bf3c0}\label{a07288_afbdbf69ed2dcdaf09f967798e97bf3c0}} 
const size\+\_\+t \hyperlink{a07288_afbdbf69ed2dcdaf09f967798e97bf3c0}{offset\+Pos\+\_\+}
\begin{DoxyCompactList}\small\item\em fixed vertex elements\+: \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_a0fb914327f101072a4cebf894bf0b7a7}\label{a07288_a0fb914327f101072a4cebf894bf0b7a7}} 
const size\+\_\+t {\bfseries offset\+Normal\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a3044da630bf3b98c77aa94156bea9e08}\label{a07288_a3044da630bf3b98c77aa94156bea9e08}} 
const size\+\_\+t {\bfseries offset\+Texc\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a6f7a11bdcb5a81e2950be61f80b352c6}\label{a07288_a6f7a11bdcb5a81e2950be61f80b352c6}} 
const size\+\_\+t {\bfseries offset\+Color\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a847fe570d79fc7696371b4db672c3577}\label{a07288_a847fe570d79fc7696371b4db672c3577}} 
std\+::vector$<$ \hyperlink{a07296}{Vertex\+Property} $>$ \hyperlink{a07288_a847fe570d79fc7696371b4db672c3577}{additional\+Elements\+\_\+}
\begin{DoxyCompactList}\small\item\em additional optional elements \end{DoxyCompactList}\item 
std\+::string \hyperlink{a07288_ae36d1255500bd671b32711f51ceb25af}{texture\+Index\+Property\+Name\+\_\+}
\begin{DoxyCompactList}\small\item\em Property for the per face texture index. \end{DoxyCompactList}\item 
std\+::string \hyperlink{a07288_af394dd5a3e3fe5442181406d821d887c}{per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+}
\begin{DoxyCompactList}\small\item\em Property for the per face texture coordinates. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07288_aa470b31e8a5d0a77510f03df38854060}\label{a07288_aa470b31e8a5d0a77510f03df38854060}} 
Geometry\+Buffer {\bfseries vbo\+Full\+\_\+}
\item 
\mbox{\Hypertarget{a07288_aadfb071934d8f750fb8a5b4f95d320ce}\label{a07288_aadfb071934d8f750fb8a5b4f95d320ce}} 
bool {\bfseries update\+Full\+V\+B\+O\+\_\+}
\item 
\mbox{\Hypertarget{a07288_af31017082df480e6f674827c45a79894}\label{a07288_af31017082df480e6f674827c45a79894}} 
int {\bfseries update\+Per\+Edge\+Buffers\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a29796b262d089ad0ca9b516105b2d0d0}\label{a07288_a29796b262d089ad0ca9b516105b2d0d0}} 
std\+::vector$<$ \hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ {\bfseries per\+Edge\+Vertex\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a233dd4410aa10b3f457df372b4de33e8}\label{a07288_a233dd4410aa10b3f457df372b4de33e8}} 
std\+::vector$<$ \hyperlink{a06176_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $>$ {\bfseries per\+Edge\+Color\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_ad0adecee6ecfcdc0d055f23cdf8c0586}\label{a07288_ad0adecee6ecfcdc0d055f23cdf8c0586}} 
int {\bfseries update\+Per\+Halfedge\+Buffers\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a176319f7f3b1834c101d238c7e14e17f}\label{a07288_a176319f7f3b1834c101d238c7e14e17f}} 
std\+::vector$<$ \hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $>$ {\bfseries per\+Halfedge\+Vertex\+Buf\+\_\+}
\item 
\mbox{\Hypertarget{a07288_a8f506a9eeb9ea088c5ae766bd7a1c7b3}\label{a07288_a8f506a9eeb9ea088c5ae766bd7a1c7b3}} 
std\+::vector$<$ \hyperlink{a06176_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $>$ {\bfseries per\+Halfedge\+Color\+Buf\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


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

Mesh Drawing Class. 

This class creates a new mesh for efficient rendering based on an \hyperlink{a06210}{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{a06210}{Open\+Mesh} kernel. Instead, \hyperlink{a07500}{Mesh\+Compiler} can be used directly to build the vertex and index buffer. 

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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a07288_a8524ca0ddf04fdd5a748fa4c2d3cb934}\label{a07288_a8524ca0ddf04fdd5a748fa4c2d3cb934}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!add\+Tri\+Render\+Objects@{add\+Tri\+Render\+Objects}}
\index{add\+Tri\+Render\+Objects@{add\+Tri\+Render\+Objects}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{add\+Tri\+Render\+Objects()}{addTriRenderObjects()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::add\+Tri\+Render\+Objects (\begin{DoxyParamCaption}\item[{\hyperlink{a07468}{I\+Renderer} $\ast$}]{\+\_\+renderer,  }\item[{const \hyperlink{a07532}{Render\+Object} $\ast$}]{\+\_\+base\+Obj,  }\item[{std\+::map$<$ int, G\+Luint $>$ $\ast$}]{\+\_\+texture\+Map,  }\item[{bool}]{\+\_\+nonindexed = {\ttfamily false} }\end{DoxyParamCaption})}



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\+GL 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 1408 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a33d2a7677ab085dcb87143261f822115}\label{a07288_a33d2a7677ab085dcb87143261f822115}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!add\+Vertex\+Element@{add\+Vertex\+Element}}
\index{add\+Vertex\+Element@{add\+Vertex\+Element}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{add\+Vertex\+Element()}{addVertexElement()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::add\+Vertex\+Element (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{\+\_\+property\+Name,  }\item[{Property\+Source}]{\+\_\+source = {\ttfamily PROPERTY\+\_\+SOURCE\+\_\+VERTEX} }\end{DoxyParamCaption})}



Add custom elements to the vertex layout. 


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


Definition at line 2531 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a16f06ac18d62644cdfb6a9eb0c1f112c}\label{a07288_a16f06ac18d62644cdfb6a9eb0c1f112c}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!count\+Tris@{count\+Tris}}
\index{count\+Tris@{count\+Tris}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{count\+Tris()}{countTris()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
unsigned int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{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]}}



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 1539 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_adb2ce3a55382aec834649c16a352dee0}\label{a07288_adb2ce3a55382aec834649c16a352dee0}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!create\+I\+BO@{create\+I\+BO}}
\index{create\+I\+BO@{create\+I\+BO}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{create\+I\+B\+O()}{createIBO()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::create\+I\+BO (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



stores the index buffer on the gpu 



Definition at line 1103 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a8651795952e95cbeb7313421a57d2e68}\label{a07288_a8651795952e95cbeb7313421a57d2e68}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!create\+V\+BO@{create\+V\+BO}}
\index{create\+V\+BO@{create\+V\+BO}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{create\+V\+B\+O()}{createVBO()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::create\+V\+BO (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



stores the vertex buffer on the gpu 



Definition at line 896 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a1d65b306952d97c4d7968ce55dd4a25e}\label{a07288_a1d65b306952d97c4d7968ce55dd4a25e}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!create\+Vertex\+Declaration@{create\+Vertex\+Declaration}}
\index{create\+Vertex\+Declaration@{create\+Vertex\+Declaration}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{create\+Vertex\+Declaration()}{createVertexDeclaration()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::create\+Vertex\+Declaration (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



creates all vertex declarations needed for deferred draw call renderer 



Definition at line 2368 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_aba5863a9b6458830237b128ebed483e5}\label{a07288_aba5863a9b6458830237b128ebed483e5}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!draw@{draw}}
\index{draw@{draw}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{draw()}{draw()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::draw (\begin{DoxyParamCaption}\item[{std\+::map$<$ int, G\+Luint $>$ $\ast$}]{\+\_\+texture\+Map,  }\item[{bool}]{\+\_\+nonindexed = {\ttfamily false} }\end{DoxyParamCaption})}



binds index and vertex buffer and executes draw calls 


\begin{DoxyParams}{Parameters}
{\em \+\_\+texture\+Map} & maps from internally texture-\/id to Open\+GL 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 1355 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a303e0a27644f81a9234003dd7bc2b386}\label{a07288_a303e0a27644f81a9234003dd7bc2b386}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!draw\+Picking\+Any\+\_\+opt@{draw\+Picking\+Any\+\_\+opt}}
\index{draw\+Picking\+Any\+\_\+opt@{draw\+Picking\+Any\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{draw\+Picking\+Any\+\_\+opt()}{drawPickingAny\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::draw\+Picking\+Any\+\_\+opt (\begin{DoxyParamCaption}\item[{const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&}]{\+\_\+mvp,  }\item[{size\+\_\+t}]{\+\_\+pick\+Offset }\end{DoxyParamCaption})}



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 2254 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a24e36d648e0be4e52c72255b99d3c652}\label{a07288_a24e36d648e0be4e52c72255b99d3c652}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!draw\+Picking\+Edges\+\_\+opt@{draw\+Picking\+Edges\+\_\+opt}}
\index{draw\+Picking\+Edges\+\_\+opt@{draw\+Picking\+Edges\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{draw\+Picking\+Edges\+\_\+opt()}{drawPickingEdges\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::draw\+Picking\+Edges\+\_\+opt (\begin{DoxyParamCaption}\item[{const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&}]{\+\_\+mvp,  }\item[{size\+\_\+t}]{\+\_\+pick\+Offset }\end{DoxyParamCaption})}



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 1960 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a2401f366acdd22bd6c751aabc1692048}\label{a07288_a2401f366acdd22bd6c751aabc1692048}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!draw\+Picking\+Faces\+\_\+opt@{draw\+Picking\+Faces\+\_\+opt}}
\index{draw\+Picking\+Faces\+\_\+opt@{draw\+Picking\+Faces\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{draw\+Picking\+Faces\+\_\+opt()}{drawPickingFaces\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::draw\+Picking\+Faces\+\_\+opt (\begin{DoxyParamCaption}\item[{const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&}]{\+\_\+mvp,  }\item[{size\+\_\+t}]{\+\_\+pick\+Offset }\end{DoxyParamCaption})}



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 2092 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a97afc6af689541e3816fec7cb84c4e26}\label{a07288_a97afc6af689541e3816fec7cb84c4e26}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!draw\+Picking\+Vertices\+\_\+opt@{draw\+Picking\+Vertices\+\_\+opt}}
\index{draw\+Picking\+Vertices\+\_\+opt@{draw\+Picking\+Vertices\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{draw\+Picking\+Vertices\+\_\+opt()}{drawPickingVertices\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::draw\+Picking\+Vertices\+\_\+opt (\begin{DoxyParamCaption}\item[{const \hyperlink{a06176_a1e5dae9881df8fa0d42b985a8e7fad28}{G\+L\+Matrixf} \&}]{\+\_\+mvp,  }\item[{size\+\_\+t}]{\+\_\+pick\+Offset }\end{DoxyParamCaption})}



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 1679 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_ae86ba7882d269de8e8b0edd38f4c9a29}\label{a07288_ae86ba7882d269de8e8b0edd38f4c9a29}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!dump\+Obj@{dump\+Obj}}
\index{dump\+Obj@{dump\+Obj}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{dump\+Obj()}{dumpObj()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::dump\+Obj (\begin{DoxyParamCaption}\item[{const char $\ast$}]{\+\_\+filename }\end{DoxyParamCaption}) const}



dump current vertex/index buffer to wavefront obj 


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


Definition at line 2675 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a38bfb3982252a672a8f9501f6841f284}\label{a07288_a38bfb3982252a672a8f9501f6841f284}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!get\+Face\+Color@{get\+Face\+Color}}
\index{get\+Face\+Color@{get\+Face\+Color}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+Face\+Color()}{getFaceColor()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
unsigned int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+Face\+Color (\begin{DoxyParamCaption}\item[{const typename Mesh\+::\+Face\+Handle \&}]{\+\_\+fh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



return a face color from mesh 


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


Definition at line 852 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_aa7ae11a30f1fe433e31905850d34d472}\label{a07288_aa7ae11a30f1fe433e31905850d34d472}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!get\+H\+E\+V\+BO@{get\+H\+E\+V\+BO}}
\index{get\+H\+E\+V\+BO@{get\+H\+E\+V\+BO}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+H\+E\+V\+B\+O()}{getHEVBO()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
G\+Luint \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+H\+E\+V\+BO (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



get\+H\+E\+V\+BO get V\+BO which stores Halfedges with offset 

\begin{DoxyReturn}{Returns}
G\+Luint the V\+BO 
\end{DoxyReturn}


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

\mbox{\Hypertarget{a07288_a3a61695085efb39bda4063b4d58a28d9}\label{a07288_a3a61695085efb39bda4063b4d58a28d9}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!get\+Mesh\+Property\+Type@{get\+Mesh\+Property\+Type}}
\index{get\+Mesh\+Property\+Type@{get\+Mesh\+Property\+Type}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+Mesh\+Property\+Type()}{getMeshPropertyType()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
const void $\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+Mesh\+Property\+Type (\begin{DoxyParamCaption}\item[{\hyperlink{a08824}{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]}}



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\+AT, G\+L\+\_\+\+D\+O\+U\+B\+LE \\
\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 158 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_ae16e4c35a541071b756a2345b015dab8}\label{a07288_ae16e4c35a541071b756a2345b015dab8}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!get\+Num\+Textures@{get\+Num\+Textures}}
\index{get\+Num\+Textures@{get\+Num\+Textures}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+Num\+Textures()}{getNumTextures()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
unsigned int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+Num\+Textures (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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 2322 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a4c25f7655db393adb44024ed96cff5bf}\label{a07288_a4c25f7655db393adb44024ed96cff5bf}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+Texture\+I\+Dof\+Face()}{getTextureIDofFace()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+Texture\+I\+Dof\+Face (\begin{DoxyParamCaption}\item[{unsigned int}]{\+\_\+face }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



get the texture index of a face 


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


Definition at line 874 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_aab8143dffcc079c89f77f6d901f7d863}\label{a07288_aab8143dffcc079c89f77f6d901f7d863}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+Texture\+I\+Dof\+Tri()}{getTextureIDofTri()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+Texture\+I\+Dof\+Tri (\begin{DoxyParamCaption}\item[{unsigned int}]{\+\_\+tri }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



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{a07344}{Texture} index of a triangle 
\end{DoxyReturn}


Definition at line 888 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a1e1daf6a58f726ad6fd146919e6ba403}\label{a07288_a1e1daf6a58f726ad6fd146919e6ba403}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+Texture\+Index\+Property\+Name()}{getTextureIndexPropertyName()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
const std\+::string\& \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+Texture\+Index\+Property\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



get the name of the texture index property 

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


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

\mbox{\Hypertarget{a07288_a7a7d851c6e58fc10777ce31938f455dc}\label{a07288_a7a7d851c6e58fc10777ce31938f455dc}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!get\+Vertex\+Color@{get\+Vertex\+Color}}
\index{get\+Vertex\+Color@{get\+Vertex\+Color}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{get\+Vertex\+Color()}{getVertexColor()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
unsigned int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::get\+Vertex\+Color (\begin{DoxyParamCaption}\item[{const typename \hyperlink{a08776_a0fc18e13d70825938274e3faf7b55e01}{Mesh\+::\+Vertex\+Handle} \&}]{\+\_\+vh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



return a vertex color from mesh 


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


Definition at line 830 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a855b80677a5c6f30452a906d96148300}\label{a07288_a855b80677a5c6f30452a906d96148300}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!halfedge\+\_\+point@{halfedge\+\_\+point}}
\index{halfedge\+\_\+point@{halfedge\+\_\+point}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{halfedge\+\_\+point()}{halfedge\_point()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
template$<$typename Mesh\+::\+Normal(\+Draw\+Mesh\+T$<$ Mesh $>$\+::$\ast$)(typename Mesh\+::\+Face\+Handle) Normal\+Lookup$>$ \\
\hyperlink{a08776_aed10fb4dfb536b53a5e20c8f2442eadf}{Mesh\+::\+Point} \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::halfedge\+\_\+point (\begin{DoxyParamCaption}\item[{const typename Mesh\+::\+Halfedge\+Handle}]{\+\_\+heh }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



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 1845 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a65bc871961013b2a12ba5bd2ba1d39c8}\label{a07288_a65bc871961013b2a12ba5bd2ba1d39c8}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!invalidate\+Full\+V\+BO@{invalidate\+Full\+V\+BO}}
\index{invalidate\+Full\+V\+BO@{invalidate\+Full\+V\+BO}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{invalidate\+Full\+V\+B\+O()}{invalidateFullVBO()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::invalidate\+Full\+V\+BO (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



the mesh has been changed 

call this function if you changed anything of the mesh. 

Definition at line 2738 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a54fef4db793c14395246e156d946f802}\label{a07288_a54fef4db793c14395246e156d946f802}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!invalidate\+Per\+Edge\+Buffers@{invalidate\+Per\+Edge\+Buffers}}
\index{invalidate\+Per\+Edge\+Buffers@{invalidate\+Per\+Edge\+Buffers}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{invalidate\+Per\+Edge\+Buffers()}{invalidatePerEdgeBuffers()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::invalidate\+Per\+Edge\+Buffers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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 994 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_aad47e0d29b78857ad9c555882b26d535}\label{a07288_aad47e0d29b78857ad9c555882b26d535}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!invalidate\+Per\+Halfedge\+Buffers@{invalidate\+Per\+Halfedge\+Buffers}}
\index{invalidate\+Per\+Halfedge\+Buffers@{invalidate\+Per\+Halfedge\+Buffers}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{invalidate\+Per\+Halfedge\+Buffers()}{invalidatePerHalfedgeBuffers()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::invalidate\+Per\+Halfedge\+Buffers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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 1019 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a39135384af3c1849f8f000846b6f19e0}\label{a07288_a39135384af3c1849f8f000846b6f19e0}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{map\+Vertex\+To\+V\+B\+O\+Index()}{mapVertexToVBOIndex()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
unsigned int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::map\+Vertex\+To\+V\+B\+O\+Index (\begin{DoxyParamCaption}\item[{unsigned int}]{\+\_\+v }\end{DoxyParamCaption})}



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


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


Definition at line 1283 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a7810ea8a7e6dbbe725e4f0e06b3a7347}\label{a07288_a7810ea8a7e6dbbe725e4f0e06b3a7347}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!per\+Edge\+Color\+Buffer@{per\+Edge\+Color\+Buffer}}
\index{per\+Edge\+Color\+Buffer@{per\+Edge\+Color\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{per\+Edge\+Color\+Buffer()}{perEdgeColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
\hyperlink{a06176_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::per\+Edge\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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 1581 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a218b11c333b26e6a32bb10fc1d11efee}\label{a07288_a218b11c333b26e6a32bb10fc1d11efee}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!per\+Edge\+Vertex\+Buffer@{per\+Edge\+Vertex\+Buffer}}
\index{per\+Edge\+Vertex\+Buffer@{per\+Edge\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{per\+Edge\+Vertex\+Buffer()}{perEdgeVertexBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
\hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::per\+Edge\+Vertex\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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 1572 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a1848ef534cffaaa9285c9e8e70c2bb70}\label{a07288_a1848ef534cffaaa9285c9e8e70c2bb70}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{per\+Face\+Texture\+Coordinate\+Available()}{perFaceTextureCoordinateAvailable()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::per\+Face\+Texture\+Coordinate\+Available (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Check if per Face \hyperlink{a07344}{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 2334 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_accc3e29579e5e62bdd435b5dfd01c958}\label{a07288_accc3e29579e5e62bdd435b5dfd01c958}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{per\+Face\+Texture\+Index\+Available()}{perFaceTextureIndexAvailable()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
int \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::per\+Face\+Texture\+Index\+Available (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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 2350 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a062253fbc45a9f4ee730c4d9a0be9f5b}\label{a07288_a062253fbc45a9f4ee730c4d9a0be9f5b}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!per\+Halfedge\+Color\+Buffer@{per\+Halfedge\+Color\+Buffer}}
\index{per\+Halfedge\+Color\+Buffer@{per\+Halfedge\+Color\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{per\+Halfedge\+Color\+Buffer()}{perHalfedgeColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
\hyperlink{a06176_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} $\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::per\+Halfedge\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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 1889 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a18ec314296aa0d8c2e306dd82d53cbd9}\label{a07288_a18ec314296aa0d8c2e306dd82d53cbd9}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!per\+Halfedge\+Vertex\+Buffer@{per\+Halfedge\+Vertex\+Buffer}}
\index{per\+Halfedge\+Vertex\+Buffer@{per\+Halfedge\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{per\+Halfedge\+Vertex\+Buffer()}{perHalfedgeVertexBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
\hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} $\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::per\+Halfedge\+Vertex\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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 1874 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_ac63c8b105ae68f67b3a3e3b5d49ad1d0}\label{a07288_ac63c8b105ae68f67b3a3e3b5d49ad1d0}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Any\+Edge\+Color\+Buffer()}{pickAnyEdgeColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Any\+Edge\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 704 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a4d600d8553c1f6f7f63f95edd15cc79d}\label{a07288_a4d600d8553c1f6f7f63f95edd15cc79d}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Any\+Face\+Color\+Buffer()}{pickAnyFaceColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Any\+Face\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 687 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a17455dd71cf19829fc05cc241f55c3e4}\label{a07288_a17455dd71cf19829fc05cc241f55c3e4}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Any\+Vertex\+Color\+Buffer()}{pickAnyVertexColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Any\+Vertex\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 721 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a6abe9e8f1c79221f338da1a780b41208}\label{a07288_a6abe9e8f1c79221f338da1a780b41208}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!pick\+Edge\+Color\+Buffer@{pick\+Edge\+Color\+Buffer}}
\index{pick\+Edge\+Color\+Buffer@{pick\+Edge\+Color\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Edge\+Color\+Buffer()}{pickEdgeColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Edge\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 549 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_acb77419c1010c0cb7f6ada3b750ef380}\label{a07288_acb77419c1010c0cb7f6ada3b750ef380}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!pick\+Face\+Color\+Buffer@{pick\+Face\+Color\+Buffer}}
\index{pick\+Face\+Color\+Buffer@{pick\+Face\+Color\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Face\+Color\+Buffer()}{pickFaceColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Face\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 602 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a14307330fb720416139189baec71dd6e}\label{a07288_a14307330fb720416139189baec71dd6e}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!pick\+Face\+Vertex\+Buffer@{pick\+Face\+Vertex\+Buffer}}
\index{pick\+Face\+Vertex\+Buffer@{pick\+Face\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Face\+Vertex\+Buffer()}{pickFaceVertexBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Face\+Vertex\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 619 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a925ba3415303f71d9d3756ac67b74684}\label{a07288_a925ba3415303f71d9d3756ac67b74684}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!pick\+Vertex\+Buffer@{pick\+Vertex\+Buffer}}
\index{pick\+Vertex\+Buffer@{pick\+Vertex\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Vertex\+Buffer()}{pickVertexBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Vertex\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 468 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a5e2456bc37e3bf0ef1388be0a61fc92a}\label{a07288_a5e2456bc37e3bf0ef1388be0a61fc92a}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!pick\+Vertex\+Color\+Buffer@{pick\+Vertex\+Color\+Buffer}}
\index{pick\+Vertex\+Color\+Buffer@{pick\+Vertex\+Color\+Buffer}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{pick\+Vertex\+Color\+Buffer()}{pickVertexColorBuffer()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
\hyperlink{a06176_adb89a8d57b6d179ad535c0880a8b616e}{A\+C\+G\+::\+Vec4uc}$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::pick\+Vertex\+Color\+Buffer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



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{a07452_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 451 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_a872394be815eb84c00627ecf5c7f2fac}\label{a07288_a872394be815eb84c00627ecf5c7f2fac}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!read\+Vertex@{read\+Vertex}}
\index{read\+Vertex@{read\+Vertex}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{read\+Vertex()}{readVertex()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::read\+Vertex (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{\+\_\+vertex,  }\item[{const typename \hyperlink{a08776_a0fc18e13d70825938274e3faf7b55e01}{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]}}



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 751 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a68e723ffceb16f2244a8cd0e7b7c8def}\label{a07288_a68e723ffceb16f2244a8cd0e7b7c8def}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!read\+Vertex\+From\+V\+BO@{read\+Vertex\+From\+V\+BO}}
\index{read\+Vertex\+From\+V\+BO@{read\+Vertex\+From\+V\+BO}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{read\+Vertex\+From\+V\+B\+O()}{readVertexFromVBO()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::read\+Vertex\+From\+V\+BO (\begin{DoxyParamCaption}\item[{unsigned int}]{\+\_\+vertex,  }\item[{void $\ast$}]{\+\_\+dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



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 2720 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a4cd0241ab24f433a8ee2c708cbaa65ef}\label{a07288_a4cd0241ab24f433a8ee2c708cbaa65ef}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!rebuild@{rebuild}}
\index{rebuild@{rebuild}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{rebuild()}{rebuild()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::rebuild (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



draw\+\_\+mesh updater 



Definition at line 403 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_ad2ee5c03429cb39946f5c4bdea02b278}\label{a07288_ad2ee5c03429cb39946f5c4bdea02b278}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{scan\+Vertex\+Shader\+For\+Input()}{scanVertexShaderForInput()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
bool \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::scan\+Vertex\+Shader\+For\+Input (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{\+\_\+vertex\+Shader\+File }\end{DoxyParamCaption})}



Scan vertex layout from vertex shader. 

Scans a vertex shader for inputs and tries to get the matching properties from \hyperlink{a06210}{Open\+Mesh}. The name of the input attribute in the shader has to match the property name in \hyperlink{a06210}{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 2561 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a69f0be6cc53a0d5de281657da022cd00}\label{a07288_a69f0be6cc53a0d5de281657da022cd00}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{set\+Per\+Face\+Texture\+Coordinate\+Property\+Name()}{setPerFaceTextureCoordinatePropertyName()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::set\+Per\+Face\+Texture\+Coordinate\+Property\+Name (\begin{DoxyParamCaption}\item[{std\+::string}]{\+\_\+per\+Face\+Texture\+Coordinate\+Property\+Name }\end{DoxyParamCaption})}



set the name of the property used for texture coordinate 

The given property name will define per face \hyperlink{a07344}{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 2302 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a6eaffb0dd2e5afa7edd56402ce955fe6}\label{a07288_a6eaffb0dd2e5afa7edd56402ce955fe6}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{set\+Texture\+Index\+Property\+Name()}{setTextureIndexPropertyName()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::set\+Texture\+Index\+Property\+Name (\begin{DoxyParamCaption}\item[{std\+::string}]{\+\_\+index\+Property\+Name }\end{DoxyParamCaption})}



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 2278 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a675ea47bbac547fd13ea54bb7f09d964}\label{a07288_a675ea47bbac547fd13ea54bb7f09d964}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!supports\+Picking\+Any\+\_\+opt@{supports\+Picking\+Any\+\_\+opt}}
\index{supports\+Picking\+Any\+\_\+opt@{supports\+Picking\+Any\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{supports\+Picking\+Any\+\_\+opt()}{supportsPickingAny\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
bool \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::supports\+Picking\+Any\+\_\+opt (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Check if optimized any picking is supported. 



Definition at line 2247 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a77a7076cea2e2f8ed7704a7803adbb9c}\label{a07288_a77a7076cea2e2f8ed7704a7803adbb9c}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!supports\+Picking\+Edges\+\_\+opt@{supports\+Picking\+Edges\+\_\+opt}}
\index{supports\+Picking\+Edges\+\_\+opt@{supports\+Picking\+Edges\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{supports\+Picking\+Edges\+\_\+opt()}{supportsPickingEdges\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
bool \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::supports\+Picking\+Edges\+\_\+opt (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Check if optimized face picking is supported. 



Definition at line 1946 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a82131a97464731a1accb1651b054cf8d}\label{a07288_a82131a97464731a1accb1651b054cf8d}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!supports\+Picking\+Faces\+\_\+opt@{supports\+Picking\+Faces\+\_\+opt}}
\index{supports\+Picking\+Faces\+\_\+opt@{supports\+Picking\+Faces\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{supports\+Picking\+Faces\+\_\+opt()}{supportsPickingFaces\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
bool \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::supports\+Picking\+Faces\+\_\+opt (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Check if optimized face picking is supported. 



Definition at line 2075 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a678aa34580155c5bbdb03c0806284b36}\label{a07288_a678aa34580155c5bbdb03c0806284b36}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!supports\+Picking\+Vertices\+\_\+opt@{supports\+Picking\+Vertices\+\_\+opt}}
\index{supports\+Picking\+Vertices\+\_\+opt@{supports\+Picking\+Vertices\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{supports\+Picking\+Vertices\+\_\+opt()}{supportsPickingVertices\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
bool \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::supports\+Picking\+Vertices\+\_\+opt (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Check if optimized vertex picking is supported. 



Definition at line 1655 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a1cb10e9c655bb2b95f26e7bc008f6426}\label{a07288_a1cb10e9c655bb2b95f26e7bc008f6426}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!test\+Mesh\+Property\+TypeT@{test\+Mesh\+Property\+TypeT}}
\index{test\+Mesh\+Property\+TypeT@{test\+Mesh\+Property\+TypeT}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{test\+Mesh\+Property\+Type\+T()}{testMeshPropertyTypeT()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
template$<$class T $>$ \\
const void $\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::test\+Mesh\+Property\+TypeT (\begin{DoxyParamCaption}\item[{const \hyperlink{a08824}{Open\+Mesh\+::\+Base\+Property} $\ast$}]{\+\_\+prop,  }\item[{unsigned int $\ast$}]{\+\_\+out\+Size }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [private]}}



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 106 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a41990d5f87cb64d0ebe5068a3208b8ef}\label{a07288_a41990d5f87cb64d0ebe5068a3208b8ef}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Full@{update\+Full}}
\index{update\+Full@{update\+Full}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Full()}{updateFull()}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Full (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



request a full rebuild of the mesh 



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

\mbox{\Hypertarget{a07288_a87f873670145ebe6b1c26cf066c372f5}\label{a07288_a87f873670145ebe6b1c26cf066c372f5}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Full\+V\+BO@{update\+Full\+V\+BO}}
\index{update\+Full\+V\+BO@{update\+Full\+V\+BO}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Full\+V\+B\+O()}{updateFullVBO()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Full\+V\+BO (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



update the full mesh vbo 

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

Definition at line 2745 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a398f99a73807009eca016055955a6a8b}\label{a07288_a398f99a73807009eca016055955a6a8b}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+G\+P\+U\+Buffers()}{updateGPUBuffers()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+G\+P\+U\+Buffers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



eventually update vertex and index buffers 



Definition at line 1244 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_ae43d987dce81a40494820e94afbdd182}\label{a07288_ae43d987dce81a40494820e94afbdd182}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Per\+Edge\+Buffers@{update\+Per\+Edge\+Buffers}}
\index{update\+Per\+Edge\+Buffers@{update\+Per\+Edge\+Buffers}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Per\+Edge\+Buffers()}{updatePerEdgeBuffers()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Per\+Edge\+Buffers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Update all per edge drawing buffers. 

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

Definition at line 1749 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a0d72dcdf477ef420c028ce61dd7d43d8}\label{a07288_a0d72dcdf477ef420c028ce61dd7d43d8}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Any@{update\+Picking\+Any}}
\index{update\+Picking\+Any@{update\+Picking\+Any}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Any()}{updatePickingAny()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Any (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state }\end{DoxyParamCaption})}



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\+GL state \\
\hline
\end{DoxyParams}


Definition at line 2161 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a03fb4bf49e3906040842d9f456449047}\label{a07288_a03fb4bf49e3906040842d9f456449047}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Any\+\_\+opt@{update\+Picking\+Any\+\_\+opt}}
\index{update\+Picking\+Any\+\_\+opt@{update\+Picking\+Any\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Any\+\_\+opt()}{updatePickingAny\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Any\+\_\+opt (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state }\end{DoxyParamCaption})}



Update color picking array for the shader implementation. 


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


Definition at line 2237 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a342ce33b005f5662d5ff8e2200b90fc7}\label{a07288_a342ce33b005f5662d5ff8e2200b90fc7}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Edges@{update\+Picking\+Edges}}
\index{update\+Picking\+Edges@{update\+Picking\+Edges}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Edges()}{updatePickingEdges()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Edges (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state,  }\item[{uint}]{\+\_\+offset = {\ttfamily 0} }\end{DoxyParamCaption})}



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 1907 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a46b1525b1f60f8fdea71f7dc1b61aaee}\label{a07288_a46b1525b1f60f8fdea71f7dc1b61aaee}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Edges\+\_\+opt@{update\+Picking\+Edges\+\_\+opt}}
\index{update\+Picking\+Edges\+\_\+opt@{update\+Picking\+Edges\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Edges\+\_\+opt()}{updatePickingEdges\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Edges\+\_\+opt (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state }\end{DoxyParamCaption})}



Update color picking array for the shader implementation. 


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


Definition at line 1932 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_adc3a93fbdc16327a301db3d05d44c5e5}\label{a07288_adc3a93fbdc16327a301db3d05d44c5e5}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Faces@{update\+Picking\+Faces}}
\index{update\+Picking\+Faces@{update\+Picking\+Faces}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Faces()}{updatePickingFaces()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Faces (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state }\end{DoxyParamCaption})}



Update color picking array for faces. 


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


Definition at line 2011 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a234b5fdf22d4b68b58ae32e837a6e409}\label{a07288_a234b5fdf22d4b68b58ae32e837a6e409}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Faces\+\_\+opt@{update\+Picking\+Faces\+\_\+opt}}
\index{update\+Picking\+Faces\+\_\+opt@{update\+Picking\+Faces\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Faces\+\_\+opt()}{updatePickingFaces\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Faces\+\_\+opt (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state }\end{DoxyParamCaption})}



Update color picking array for the shader implementation. 


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


Definition at line 2056 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_a9e3c82e67a8cd52207e7e8a61d0c0978}\label{a07288_a9e3c82e67a8cd52207e7e8a61d0c0978}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Vertices@{update\+Picking\+Vertices}}
\index{update\+Picking\+Vertices@{update\+Picking\+Vertices}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Vertices()}{updatePickingVertices()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Vertices (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state,  }\item[{uint}]{\+\_\+offset = {\ttfamily 0} }\end{DoxyParamCaption})}

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 1591 of file Draw\+Mesh\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a07288_ab70a1346450c29c67cc51a127119f3ad}\label{a07288_ab70a1346450c29c67cc51a127119f3ad}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!update\+Picking\+Vertices\+\_\+opt@{update\+Picking\+Vertices\+\_\+opt}}
\index{update\+Picking\+Vertices\+\_\+opt@{update\+Picking\+Vertices\+\_\+opt}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{update\+Picking\+Vertices\+\_\+opt()}{updatePickingVertices\_opt()}}
{\footnotesize\ttfamily template$<$class Mesh $>$ \\
void \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::update\+Picking\+Vertices\+\_\+opt (\begin{DoxyParamCaption}\item[{\hyperlink{a07452}{A\+C\+G\+::\+G\+L\+State} \&}]{\+\_\+state }\end{DoxyParamCaption})}



Update color picking array for the shader implementation. 


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


Definition at line 1611 of file Draw\+Mesh\+T\+\_\+impl.\+hh.



\subsection{Member Data Documentation}
\mbox{\Hypertarget{a07288_a5f0f78e33f060392dff9d402a22bebf0}\label{a07288_a5f0f78e33f060392dff9d402a22bebf0}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!inv\+Vertex\+Map\+\_\+@{inv\+Vertex\+Map\+\_\+}}
\index{inv\+Vertex\+Map\+\_\+@{inv\+Vertex\+Map\+\_\+}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{inv\+Vertex\+Map\+\_\+}{invVertexMap\_}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
unsigned int$\ast$ \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::inv\+Vertex\+Map\+\_\+\hspace{0.3cm}{\ttfamily [private]}}

inverse vertex map\+: original \hyperlink{a06210}{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 863 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_af394dd5a3e3fe5442181406d821d887c}\label{a07288_af394dd5a3e3fe5442181406d821d887c}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!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\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+}{perFaceTextureCoordinatePropertyName\_}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
std\+::string \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::per\+Face\+Texture\+Coordinate\+Property\+Name\+\_\+\hspace{0.3cm}{\ttfamily [private]}}



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 923 of file Draw\+Mesh.\+hh.

\mbox{\Hypertarget{a07288_ab9c6036e64fc7a52c62fb310d4fc09b0}\label{a07288_ab9c6036e64fc7a52c62fb310d4fc09b0}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!prev\+Num\+Faces\+\_\+@{prev\+Num\+Faces\+\_\+}}
\index{prev\+Num\+Faces\+\_\+@{prev\+Num\+Faces\+\_\+}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{prev\+Num\+Faces\+\_\+}{prevNumFaces\_}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
size\+\_\+t \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::prev\+Num\+Faces\+\_\+\hspace{0.3cm}{\ttfamily [private]}}

used to track mesh changes, that require a full rebuild values directly taken from Mesh template 

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

\mbox{\Hypertarget{a07288_ae36d1255500bd671b32711f51ceb25af}\label{a07288_ae36d1255500bd671b32711f51ceb25af}} 
\index{A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}!texture\+Index\+Property\+Name\+\_\+@{texture\+Index\+Property\+Name\+\_\+}}
\index{texture\+Index\+Property\+Name\+\_\+@{texture\+Index\+Property\+Name\+\_\+}!A\+C\+G\+::\+Draw\+MeshT@{A\+C\+G\+::\+Draw\+MeshT}}
\subsubsection{\texorpdfstring{texture\+Index\+Property\+Name\+\_\+}{textureIndexPropertyName\_}}
{\footnotesize\ttfamily template$<$class Mesh$>$ \\
std\+::string \hyperlink{a07288}{A\+C\+G\+::\+Draw\+MeshT}$<$ \hyperlink{a08764}{Mesh} $>$\+::texture\+Index\+Property\+Name\+\_\+\hspace{0.3cm}{\ttfamily [private]}}



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 916 of file Draw\+Mesh.\+hh.



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