\hypertarget{a01110}{\section{A\+C\+G\+:\+:Render\+Object Struct Reference}
\label{a01110}\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
}


Interface class between scenegraph and renderer.  




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

\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{a01283}{Texture}
\begin{DoxyCompactList}\small\item\em \hyperlink{a01283}{Texture} to be used. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{a01110_a92d1e22700875e70a8addfd4ce20421d}{Render\+Object} ()
\item 
\hypertarget{a01110_a38c5665d72e7ab7df2e3c5cf89d2584a}{void \hyperlink{a01110_a38c5665d72e7ab7df2e3c5cf89d2584a}{add\+Texture} (const \hyperlink{a01283}{Texture} \&\+\_\+t)}\label{a01110_a38c5665d72e7ab7df2e3c5cf89d2584a}

\begin{DoxyCompactList}\small\item\em adds a texture to stage Render\+Objects\+::num\+Textures() \end{DoxyCompactList}\item 
void \hyperlink{a01110_a8c434f16d1c0e9fbcab23566ac2c0574}{add\+Texture} (const \hyperlink{a01283}{Texture} \&\+\_\+t, const size\+\_\+t \+\_\+stage, bool \+\_\+add\+To\+Shader\+Gen=true)
\item 
\hypertarget{a01110_af3fe2119dc699aba798ea1aa33f261a1}{void \hyperlink{a01110_af3fe2119dc699aba798ea1aa33f261a1}{clear\+Textures} ()}\label{a01110_af3fe2119dc699aba798ea1aa33f261a1}

\begin{DoxyCompactList}\small\item\em clear all textures. Also affected on shader\+Desc \end{DoxyCompactList}\item 
\hypertarget{a01110_aa4cc6cf047e28cd59ac4ad92a4c5628e}{const std\+::map$<$ size\+\_\+t, \hyperlink{a01283}{Texture} $>$ \& {\bfseries textures} ()}\label{a01110_aa4cc6cf047e28cd59ac4ad92a4c5628e}

\item 
\hypertarget{a01110_acb44f5c8e55eb1ae77edf99afbc7c971}{size\+\_\+t {\bfseries num\+Textures} ()}\label{a01110_acb44f5c8e55eb1ae77edf99afbc7c971}

\item 
\hypertarget{a01110_a0b213fcbe80fad650b0bcffde5452fa8}{void {\bfseries gl\+Bind\+Buffer} (G\+Lenum target, G\+Luint buffer)}\label{a01110_a0b213fcbe80fad650b0bcffde5452fa8}

\item 
\hypertarget{a01110_a5fd1fa70802cbafe6174b5fcd5d6f449}{void {\bfseries gl\+Draw\+Arrays} (G\+Lenum mode, G\+Lint first, G\+Lsizei count)}\label{a01110_a5fd1fa70802cbafe6174b5fcd5d6f449}

\item 
\hypertarget{a01110_a9896baa7ef3d494faf4a5c35555c6446}{void {\bfseries gl\+Draw\+Instanced\+Arrays} (G\+Lenum mode, G\+Lint first, G\+Lsizei count, G\+Lsizei primcount)}\label{a01110_a9896baa7ef3d494faf4a5c35555c6446}

\item 
\hypertarget{a01110_a9db655abf33ff2f0d8179fd1505289ad}{void {\bfseries gl\+Draw\+Elements} (G\+Lenum mode, G\+Lsizei count, G\+Lenum type, const G\+Lvoid $\ast$indices)}\label{a01110_a9db655abf33ff2f0d8179fd1505289ad}

\item 
\hypertarget{a01110_aea618149ea73cbb580b2e27adcbc32d7}{void {\bfseries gl\+Draw\+Elements\+Instanced} (G\+Lenum mode, G\+Lsizei count, G\+Lenum type, const G\+Lvoid $\ast$indices, G\+Lsizei primcount)}\label{a01110_aea618149ea73cbb580b2e27adcbc32d7}

\item 
\hypertarget{a01110_a92bca5530e8400cf78a8d07600e881ad}{void {\bfseries gl\+Color\+Mask} (G\+Lboolean r, G\+Lboolean g, G\+Lboolean b, G\+Lboolean a)}\label{a01110_a92bca5530e8400cf78a8d07600e881ad}

\item 
\hypertarget{a01110_a99712f796750098fab236acad793fa12}{void {\bfseries gl\+Alpha\+Func} (G\+Lenum func, float ref)}\label{a01110_a99712f796750098fab236acad793fa12}

\item 
void \hyperlink{a01110_aece5682dc59f93acc79ad8f8e7a87430}{init\+From\+State} (\hyperlink{a00643}{G\+L\+State} $\ast$\+\_\+gl\+State)
\begin{DoxyCompactList}\small\item\em Initializes a \hyperlink{a01110}{Render\+Object} instance. \end{DoxyCompactList}\item 
\hypertarget{a01110_af62c1d7d1b747c3d3c8d96db4eb77565}{void {\bfseries set\+Material} (const \hyperlink{a00789}{Scene\+Graph\+::\+Material} $\ast$\+\_\+mat)}\label{a01110_af62c1d7d1b747c3d3c8d96db4eb77565}

\item 
\hypertarget{a01110_a1729a1ec74d828bde060e3b659f2deb5}{void \hyperlink{a01110_a1729a1ec74d828bde060e3b659f2deb5}{setup\+Shader\+Gen\+From\+Drawmode} (const \hyperlink{a00512}{Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode\+Properties} $\ast$\+\_\+props)}\label{a01110_a1729a1ec74d828bde060e3b659f2deb5}

\begin{DoxyCompactList}\small\item\em Fills out \hyperlink{a01158}{Shader\+Gen\+Desc} parameters based on Drawmode properties. \end{DoxyCompactList}\item 
void \hyperlink{a01110_a100e05de8f12e85ea7571fdd9ad3a13f}{setup\+Line\+Rendering} (float \+\_\+line\+Width, const \hyperlink{a03336_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \&\+\_\+screen\+Size)
\begin{DoxyCompactList}\small\item\em Setup rendering of thick lines. \end{DoxyCompactList}\item 
\hypertarget{a01110_aa9feb84ab32bb970e414c512f78a6d5d}{bool \hyperlink{a01110_aa9feb84ab32bb970e414c512f78a6d5d}{is\+Default\+Line\+Object} () const }\label{a01110_aa9feb84ab32bb970e414c512f78a6d5d}

\begin{DoxyCompactList}\small\item\em Test if the object is rendered with one of the default line thickness methods. \end{DoxyCompactList}\item 
\hypertarget{a01110_a25871c9774b87ab9dffd8ac558fc4f0a}{void \hyperlink{a01110_a25871c9774b87ab9dffd8ac558fc4f0a}{reset\+Line\+Rendering} ()}\label{a01110_a25871c9774b87ab9dffd8ac558fc4f0a}

\begin{DoxyCompactList}\small\item\em Reset shader template names blocked by line rendering. \end{DoxyCompactList}\item 
void \hyperlink{a01110_af723823ab8dcc3a3bb87b7df76b02fa7}{setup\+Point\+Rendering} (float \+\_\+point\+Size, const \hyperlink{a03336_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \&\+\_\+screen\+Size)
\begin{DoxyCompactList}\small\item\em Setup rendering of circle points. \end{DoxyCompactList}\item 
\hypertarget{a01110_a9831412dd046d3a2f9908e5bc16da8ff}{bool \hyperlink{a01110_a9831412dd046d3a2f9908e5bc16da8ff}{is\+Default\+Point\+Object} () const }\label{a01110_a9831412dd046d3a2f9908e5bc16da8ff}

\begin{DoxyCompactList}\small\item\em Test if the object is rendered with one of the default point extension methods. \end{DoxyCompactList}\item 
\hypertarget{a01110_a608879c8a195d3e32da42a4650a93c57}{void \hyperlink{a01110_a608879c8a195d3e32da42a4650a93c57}{reset\+Point\+Rendering} ()}\label{a01110_a608879c8a195d3e32da42a4650a93c57}

\begin{DoxyCompactList}\small\item\em Reset shader template names blocked by point rendering. \end{DoxyCompactList}\item 
Q\+String \hyperlink{a01110_ac80427aedced32d2d9435403929042c3}{to\+String} () const 
\item 
void \hyperlink{a01110_ad12319347136c0b363f69b64dfd7d467}{set\+Uniform} (const char $\ast$\+\_\+name, G\+Lint \+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for int uniforms \end{DoxyCompactList}\item 
void \hyperlink{a01110_afa1f1d6666fa0542f3dd1ec81cf0abc8}{set\+Uniform} (const char $\ast$\+\_\+name, G\+Lfloat \+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for float uniforms \end{DoxyCompactList}\item 
void \hyperlink{a01110_aa4ae3f75103569c93012d30ac8006552}{set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a03336_a8b858737aebd55e312149cf208a0b3f3}{A\+C\+G\+::\+Vec2f} \&\+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for Vec2f uniforms \end{DoxyCompactList}\item 
void \hyperlink{a01110_aac4e4e7fd028a478aec1007137d60ff7}{set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} \&\+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for Vec3f uniforms \end{DoxyCompactList}\item 
void \hyperlink{a01110_a50e176d550a1218ab5551c89ad723717}{set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} \&\+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for Vec4f uniforms \end{DoxyCompactList}\item 
\hypertarget{a01110_a28b86665601e1ff455cf97d11dc4be7c}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a03336_a1e5dae9881df8fa0d42b985a8e7fad28}{A\+C\+G\+::\+G\+L\+Matrixf} \&\+\_\+value, bool \+\_\+transposed=false)}\label{a01110_a28b86665601e1ff455cf97d11dc4be7c}

\item 
\hypertarget{a01110_a97605dd7f8ef3e4f1a7aa830a81264d0}{void {\bfseries set\+Uniform\+Mat3} (const char $\ast$\+\_\+name, const \hyperlink{a03336_a1e5dae9881df8fa0d42b985a8e7fad28}{A\+C\+G\+::\+G\+L\+Matrixf} \&\+\_\+value, bool \+\_\+transposed=false)}\label{a01110_a97605dd7f8ef3e4f1a7aa830a81264d0}

\item 
\hypertarget{a01110_aaa5a2f3dc4e2c5e7da1ae82480ea4e1c}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, G\+Lint $\ast$\+\_\+values, int \+\_\+count)}\label{a01110_aaa5a2f3dc4e2c5e7da1ae82480ea4e1c}

\item 
\hypertarget{a01110_a1c14b02b885b71b55352f42297341325}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, G\+Lfloat $\ast$\+\_\+values, int \+\_\+count)}\label{a01110_a1c14b02b885b71b55352f42297341325}

\item 
void \hyperlink{a01110_ae771d4c428ab39fc15ab36f5ccb4c185}{add\+Uniform\+Pool} (const \hyperlink{a01384}{G\+L\+S\+L\+::\+Uniform\+Pool} \&\+\_\+pool)
\begin{DoxyCompactList}\small\item\em add all uniforms from a pool \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
int \hyperlink{a01110_a6234c9e474ed11cc161674060b3c891b}{priority}
\begin{DoxyCompactList}\small\item\em Priority to allow sorting of objects. \end{DoxyCompactList}\item 
std\+::string \hyperlink{a01110_a818e708d8af6517e61dfc0c9cf6c2d2e}{name}
\begin{DoxyCompactList}\small\item\em Name for logging. \end{DoxyCompactList}\item 
bool \hyperlink{a01110_a8aebe7ad28b6cc2b0fd2e2885d872117}{overlay}
\begin{DoxyCompactList}\small\item\em Layer based rendering. \end{DoxyCompactList}\item 
\hypertarget{a01110_a6e132c1b65c0f8b049966e5614934dea}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \hyperlink{a01110_a6e132c1b65c0f8b049966e5614934dea}{modelview}}\label{a01110_a6e132c1b65c0f8b049966e5614934dea}

\begin{DoxyCompactList}\small\item\em Modelview transform. \end{DoxyCompactList}\item 
\hypertarget{a01110_a6ef6fb5df32273ff32a1fb8c3493b4b0}{\hyperlink{a03336_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \hyperlink{a01110_a6ef6fb5df32273ff32a1fb8c3493b4b0}{proj}}\label{a01110_a6ef6fb5df32273ff32a1fb8c3493b4b0}

\begin{DoxyCompactList}\small\item\em Projection transform. \end{DoxyCompactList}\item 
\hyperlink{a01158}{Shader\+Gen\+Desc} \hyperlink{a01110_a0b18ae90eb61c68a40dbb497acf3a01d}{shader\+Desc}
\begin{DoxyCompactList}\small\item\em Drawmode and other shader params. \end{DoxyCompactList}\item 
\hypertarget{a01110_aebf255946532fb6de72244cb7cc17c75}{bool {\bfseries culling}}\label{a01110_aebf255946532fb6de72244cb7cc17c75}

\item 
\hypertarget{a01110_a6cd2a48742e9589c3f855bc163e65dc1}{bool {\bfseries blending}}\label{a01110_a6cd2a48742e9589c3f855bc163e65dc1}

\item 
\hypertarget{a01110_a4060db397e5a0657a387331db46e3285}{bool {\bfseries alpha\+Test}}\label{a01110_a4060db397e5a0657a387331db46e3285}

\item 
\hypertarget{a01110_ae50aa09d3307e0fa6f1dd44b3285241d}{bool {\bfseries depth\+Test}}\label{a01110_ae50aa09d3307e0fa6f1dd44b3285241d}

\item 
\hypertarget{a01110_a4864605f98830ccd3e6cfd922b635e40}{bool {\bfseries depth\+Write}}\label{a01110_a4864605f98830ccd3e6cfd922b635e40}

\item 
\hypertarget{a01110_a5eea594647d8e5753fd35878991ba86e}{G\+Lenum {\bfseries fill\+Mode}}\label{a01110_a5eea594647d8e5753fd35878991ba86e}

\item 
\hypertarget{a01110_a987aaf3b8a141acc7a5965cf995659ed}{G\+Lboolean {\bfseries color\+Write\+Mask} \mbox{[}4\mbox{]}}\label{a01110_a987aaf3b8a141acc7a5965cf995659ed}

\item 
\hypertarget{a01110_aee5d09825695cbd23eadb0a58d0eb777}{G\+Lenum \hyperlink{a01110_aee5d09825695cbd23eadb0a58d0eb777}{depth\+Func}}\label{a01110_aee5d09825695cbd23eadb0a58d0eb777}

\begin{DoxyCompactList}\small\item\em G\+L\+\_\+\+L\+E\+S\+S, G\+L\+\_\+\+L\+E\+Q\+U\+A\+L, G\+L\+\_\+\+G\+R\+E\+A\+T\+E\+R .. \end{DoxyCompactList}\item 
\hypertarget{a01110_abdadb2da4be0c5b6651919c5f8d5fc80}{G\+Lenum \hyperlink{a01110_abdadb2da4be0c5b6651919c5f8d5fc80}{alpha\+Func}}\label{a01110_abdadb2da4be0c5b6651919c5f8d5fc80}

\begin{DoxyCompactList}\small\item\em G\+L\+\_\+\+L\+E\+S\+S, G\+L\+\_\+\+L\+E\+Q\+U\+A\+L, G\+L\+\_\+\+G\+R\+E\+A\+T\+E\+R .. \end{DoxyCompactList}\item 
\hypertarget{a01110_a16f477afef8c73371df7b3fca0202dd1}{float {\bfseries alpha\+Ref}}\label{a01110_a16f477afef8c73371df7b3fca0202dd1}

\item 
\hypertarget{a01110_ab0f86a1db973fb19832a1fc5660a9f65}{G\+Lenum {\bfseries blend\+Src}}\label{a01110_ab0f86a1db973fb19832a1fc5660a9f65}

\item 
\hypertarget{a01110_ad3d4b459a4ec0e97ea04edbdbf8f3dc5}{G\+Lenum \hyperlink{a01110_ad3d4b459a4ec0e97ea04edbdbf8f3dc5}{blend\+Dest}}\label{a01110_ad3d4b459a4ec0e97ea04edbdbf8f3dc5}

\begin{DoxyCompactList}\small\item\em gl\+Blend\+Func\+: G\+L\+\_\+\+S\+R\+C\+\_\+\+A\+L\+P\+H\+A, G\+L\+\_\+\+Z\+E\+R\+O, G\+L\+\_\+\+O\+N\+E, G\+L\+\_\+\+O\+N\+E\+\_\+\+M\+I\+N\+U\+S\+\_\+\+S\+R\+C\+\_\+\+A\+L\+P\+H\+A ... \end{DoxyCompactList}\item 
\hypertarget{a01110_ae682d9cddc475c264bad6e05750f6122}{\hyperlink{a03336_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \hyperlink{a01110_ae682d9cddc475c264bad6e05750f6122}{depth\+Range}}\label{a01110_ae682d9cddc475c264bad6e05750f6122}

\begin{DoxyCompactList}\small\item\em gl\+Depth\+Range\+: (znear, zmax) \end{DoxyCompactList}\item 
\hypertarget{a01110_a08fc568dbdec1c7eb910b9eb90612064}{\hyperlink{a03336_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} {\bfseries patch\+Default\+Inner\+Level}}\label{a01110_a08fc568dbdec1c7eb910b9eb90612064}

\item 
\hypertarget{a01110_a66fdba53221e6346c7a272dc1c7622d5}{\hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{Vec4f} {\bfseries patch\+Default\+Outer\+Level}}\label{a01110_a66fdba53221e6346c7a272dc1c7622d5}

\item 
\hypertarget{a01110_a09bd989efc0ee8c25a4213f6718088bf}{\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} \hyperlink{a01110_a09bd989efc0ee8c25a4213f6718088bf}{diffuse}}\label{a01110_a09bd989efc0ee8c25a4213f6718088bf}

\begin{DoxyCompactList}\small\item\em material definitions \end{DoxyCompactList}\item 
\hypertarget{a01110_a793ab437b01b3fb3591c6991a59a8930}{\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} {\bfseries ambient}}\label{a01110_a793ab437b01b3fb3591c6991a59a8930}

\item 
\hypertarget{a01110_aa0995271c5af258e8db037a457021020}{\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} {\bfseries specular}}\label{a01110_aa0995271c5af258e8db037a457021020}

\item 
\hypertarget{a01110_a4d97cf9988675e7e5a9ab12659d6e56d}{\hyperlink{a03336_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} {\bfseries emissive}}\label{a01110_a4d97cf9988675e7e5a9ab12659d6e56d}

\item 
\hypertarget{a01110_a8da969128e2f1ce9a38be74d1526eba6}{float {\bfseries alpha}}\label{a01110_a8da969128e2f1ce9a38be74d1526eba6}

\item 
\hypertarget{a01110_acb5a3d2ae1a968434add2b0fcb25c105}{float {\bfseries shininess}}\label{a01110_acb5a3d2ae1a968434add2b0fcb25c105}

\item 
bool \hyperlink{a01110_a853c58fa35c2f02821180a2614b3fd52}{in\+Z\+Pre\+Pass}
\begin{DoxyCompactList}\small\item\em Specify whether this object should be rendered in a z-\/prepass. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{a01110_a03fbc76adf483d126eabed5abd8945c7}{depth\+Map\+Uniform\+Name}
\begin{DoxyCompactList}\small\item\em Uniform name of the depth map in the used shader. \end{DoxyCompactList}\item 
\hypertarget{a01110_a017bb6ded287db391e3ab26aa228a0f6}{int \hyperlink{a01110_a017bb6ded287db391e3ab26aa228a0f6}{debug\+I\+D}}\label{a01110_a017bb6ded287db391e3ab26aa228a0f6}

\begin{DoxyCompactList}\small\item\em used internally for renderer debugging \end{DoxyCompactList}\item 
\hypertarget{a01110_a4d256a54e54888188b2615ba772295dd}{const char $\ast$ {\bfseries debug\+Name}}\label{a01110_a4d256a54e54888188b2615ba772295dd}

\item 
\hypertarget{a01110_ae38a304ab438f3c93ef24e333c9b2f95}{unsigned int \hyperlink{a01110_ae38a304ab438f3c93ef24e333c9b2f95}{internal\+Flags\+\_\+}}\label{a01110_ae38a304ab438f3c93ef24e333c9b2f95}

\begin{DoxyCompactList}\small\item\em may be used internally by the renderer \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}{\bf Geometry definition}\par
\begin{DoxyCompactItemize}
\item 
G\+Luint \hyperlink{a01110_a10a263d6c5dd73bf8133f59ae8792c7f}{vertex\+Array\+Object}
\begin{DoxyCompactList}\small\item\em Use vertex array object. \end{DoxyCompactList}\item 
\hypertarget{a01110_a9bf3cdd4f2034feba39e9a414022a9c1}{G\+Luint \hyperlink{a01110_a9bf3cdd4f2034feba39e9a414022a9c1}{vertex\+Buffer}}\label{a01110_a9bf3cdd4f2034feba39e9a414022a9c1}

\begin{DoxyCompactList}\small\item\em V\+B\+O, I\+B\+O ids, ignored if V\+A\+O is provided. \end{DoxyCompactList}\item 
G\+Luint \hyperlink{a01110_a60a28ef4751b7f312204452295376e91}{index\+Buffer}
\begin{DoxyCompactList}\small\item\em Use vertex array object. \end{DoxyCompactList}\item 
const void $\ast$ \hyperlink{a01110_a245a685860596916fef3ae4ff194fafb}{sysmem\+Index\+Buffer}
\begin{DoxyCompactList}\small\item\em Use system memory index buffer. \end{DoxyCompactList}\item 
G\+Lenum \hyperlink{a01110_aa5eaa707aa9a9c7b0c70c38bf3c98c93}{primitive\+Mode}
\begin{DoxyCompactList}\small\item\em Primitive type. \end{DoxyCompactList}\item 
\hypertarget{a01110_ad193c8b45199fb263222432991910a17}{unsigned int \hyperlink{a01110_ad193c8b45199fb263222432991910a17}{patch\+Vertices}}\label{a01110_ad193c8b45199fb263222432991910a17}

\begin{DoxyCompactList}\small\item\em patch size if primitive\+Mode is G\+L\+\_\+\+P\+A\+T\+C\+H\+E\+S for rendering with tessellation shaders \end{DoxyCompactList}\item 
\hypertarget{a01110_a66bd22443e9e145ce79e10ea17b1687f}{unsigned int \hyperlink{a01110_a66bd22443e9e145ce79e10ea17b1687f}{num\+Indices}}\label{a01110_a66bd22443e9e145ce79e10ea17b1687f}

\begin{DoxyCompactList}\small\item\em Number indices to render. \end{DoxyCompactList}\item 
\hypertarget{a01110_a969581cdefad0ee4054ac2c236d81239}{unsigned int \hyperlink{a01110_a969581cdefad0ee4054ac2c236d81239}{index\+Offset}}\label{a01110_a969581cdefad0ee4054ac2c236d81239}

\begin{DoxyCompactList}\small\item\em Offset to first index in the index buffer or vertex buffer respectively. \end{DoxyCompactList}\item 
G\+Lenum \hyperlink{a01110_aecb578caf57fd9e5e60549671455c498}{index\+Type}
\begin{DoxyCompactList}\small\item\em Index element type. \end{DoxyCompactList}\item 
G\+Lsizei \hyperlink{a01110_a4edecdc48d4c35df3cae5e74d11cdf65}{num\+Instances}
\item 
\hypertarget{a01110_a1393913c3062965f43d44446d4b74c06}{const \hyperlink{a01417}{Vertex\+Declaration} $\ast$ \hyperlink{a01110_a1393913c3062965f43d44446d4b74c06}{vertex\+Decl}}\label{a01110_a1393913c3062965f43d44446d4b74c06}

\begin{DoxyCompactList}\small\item\em Defines the vertex buffer layout, ignored if V\+A\+O is provided. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01110_a7eafe3eacefb43b7e69644392cefca15}{std\+::map$<$ size\+\_\+t, \hyperlink{a01283}{Texture} $>$ \hyperlink{a01110_a7eafe3eacefb43b7e69644392cefca15}{textures\+\_\+}}\label{a01110_a7eafe3eacefb43b7e69644392cefca15}

\begin{DoxyCompactList}\small\item\em holds the textures (second) and the stage id (first) \end{DoxyCompactList}\item 
\hypertarget{a01110_aad9235de2dac7db06bbc3870fe61db50}{\hyperlink{a01384}{G\+L\+S\+L\+::\+Uniform\+Pool} {\bfseries uniform\+Pool\+\_\+}}\label{a01110_aad9235de2dac7db06bbc3870fe61db50}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01110_a927c03c6373c76b5adbb3c4ccb7b79c8}{class {\bfseries I\+Renderer}}\label{a01110_a927c03c6373c76b5adbb3c4ccb7b79c8}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Interface class between scenegraph and renderer. 

\hyperlink{a01110}{Render\+Object} is the primary interface between scenegraph and renderer.

Scenegraph nodes have to declare any renderable geometry objects by providing\+:
\begin{DoxyItemize}
\item geometry type (triangles, lines, points, triangle strips, ...)
\item geometry buffers (vertex/index buffers, vbo, ibo, sysmem and non-\/indexed supported )
\item vertex buffer layout ( via vertex declaration, eventually declare sysmem vertex buffer here )
\item draw mode
\item Open\+G\+L render states
\item material properties
\item texture
\end{DoxyItemize}

Quick initialization for default values is recommended. \hyperlink{a01110_aece5682dc59f93acc79ad8f8e7a87430}{Render\+Object\+::init\+From\+State()} grabs transforms, material and render states from a \hyperlink{a00643}{G\+L\+State}.

An Open\+G\+L style interface for geometry setup is available via\+: Render\+Object\+::gl\+Bind\+Buffer() Render\+Object\+::gl\+Draw\+Arrays() Render\+Object\+::gl\+Draw\+Array\+Elements()

You still have to create the \hyperlink{a01417}{Vertex\+Declaration} on your own first though.

Note that each \hyperlink{a01110}{Render\+Object} corresponds to exactly one deferred draw call. 

Definition at line 105 of file Render\+Object.\+hh.



\subsection{Constructor \& Destructor Documentation}
\hypertarget{a01110_a92d1e22700875e70a8addfd4ce20421d}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!Render\+Object@{Render\+Object}}
\index{Render\+Object@{Render\+Object}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{Render\+Object}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Render\+Object\+::\+Render\+Object (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a01110_a92d1e22700875e70a8addfd4ce20421d}
default constructor set all members to Open\+G\+L default values 

Definition at line 191 of file Render\+Object.\+cc.



\subsection{Member Function Documentation}
\hypertarget{a01110_a8c434f16d1c0e9fbcab23566ac2c0574}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!add\+Texture@{add\+Texture}}
\index{add\+Texture@{add\+Texture}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{add\+Texture}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::add\+Texture (
\begin{DoxyParamCaption}
\item[{const {\bf Texture} \&}]{\+\_\+t, }
\item[{const size\+\_\+t}]{\+\_\+stage, }
\item[{bool}]{\+\_\+add\+To\+Shader\+Gen = {\ttfamily true}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01110_a8c434f16d1c0e9fbcab23566ac2c0574}
adds a texture to an specific stage and enables texture support in shader\+Desc 

Definition at line 327 of file Render\+Object.\+hh.

\hypertarget{a01110_ae771d4c428ab39fc15ab36f5ccb4c185}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!add\+Uniform\+Pool@{add\+Uniform\+Pool}}
\index{add\+Uniform\+Pool@{add\+Uniform\+Pool}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{add\+Uniform\+Pool}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::add\+Uniform\+Pool (
\begin{DoxyParamCaption}
\item[{const {\bf G\+L\+S\+L\+::\+Uniform\+Pool} \&}]{\+\_\+pool}
\end{DoxyParamCaption}
)}}\label{a01110_ae771d4c428ab39fc15ab36f5ccb4c185}


add all uniforms from a pool 


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


Definition at line 441 of file Render\+Object.\+cc.

\hypertarget{a01110_aece5682dc59f93acc79ad8f8e7a87430}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!init\+From\+State@{init\+From\+State}}
\index{init\+From\+State@{init\+From\+State}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{init\+From\+State}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::init\+From\+State (
\begin{DoxyParamCaption}
\item[{{\bf G\+L\+State} $\ast$}]{\+\_\+gl\+State}
\end{DoxyParamCaption}
)}}\label{a01110_aece5682dc59f93acc79ad8f8e7a87430}


Initializes a \hyperlink{a01110}{Render\+Object} instance. 

Grabs material and transforms automatically if a \hyperlink{a00643}{G\+L\+State} is provided. 

Definition at line 69 of file Render\+Object.\+cc.

\hypertarget{a01110_ad12319347136c0b363f69b64dfd7d467}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!set\+Uniform@{set\+Uniform}}
\index{set\+Uniform@{set\+Uniform}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{set\+Uniform}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{\+\_\+name, }
\item[{G\+Lint}]{\+\_\+value}
\end{DoxyParamCaption}
)}}\label{a01110_ad12319347136c0b363f69b64dfd7d467}


set values for int uniforms 


\begin{DoxyParams}{Parameters}
{\em \+\_\+name} & Name of uniform in shader \\
\hline
{\em \+\_\+value} & value of the type \\
\hline
\end{DoxyParams}


Definition at line 396 of file Render\+Object.\+cc.

\hypertarget{a01110_afa1f1d6666fa0542f3dd1ec81cf0abc8}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!set\+Uniform@{set\+Uniform}}
\index{set\+Uniform@{set\+Uniform}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{set\+Uniform}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{\+\_\+name, }
\item[{G\+Lfloat}]{\+\_\+value}
\end{DoxyParamCaption}
)}}\label{a01110_afa1f1d6666fa0542f3dd1ec81cf0abc8}


set values for float uniforms 


\begin{DoxyParams}{Parameters}
{\em \+\_\+name} & Name of uniform in shader \\
\hline
{\em \+\_\+value} & value of the type \\
\hline
\end{DoxyParams}


Definition at line 401 of file Render\+Object.\+cc.

\hypertarget{a01110_aa4ae3f75103569c93012d30ac8006552}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!set\+Uniform@{set\+Uniform}}
\index{set\+Uniform@{set\+Uniform}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{set\+Uniform}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{\+\_\+name, }
\item[{const {\bf A\+C\+G\+::\+Vec2f} \&}]{\+\_\+value}
\end{DoxyParamCaption}
)}}\label{a01110_aa4ae3f75103569c93012d30ac8006552}


set values for Vec2f uniforms 


\begin{DoxyParams}{Parameters}
{\em \+\_\+name} & Name of uniform in shader \\
\hline
{\em \+\_\+value} & value of the type \\
\hline
\end{DoxyParams}


Definition at line 406 of file Render\+Object.\+cc.

\hypertarget{a01110_aac4e4e7fd028a478aec1007137d60ff7}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!set\+Uniform@{set\+Uniform}}
\index{set\+Uniform@{set\+Uniform}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{set\+Uniform}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{\+\_\+name, }
\item[{const {\bf A\+C\+G\+::\+Vec3f} \&}]{\+\_\+value}
\end{DoxyParamCaption}
)}}\label{a01110_aac4e4e7fd028a478aec1007137d60ff7}


set values for Vec3f uniforms 


\begin{DoxyParams}{Parameters}
{\em \+\_\+name} & Name of uniform in shader \\
\hline
{\em \+\_\+value} & value of the type \\
\hline
\end{DoxyParams}


Definition at line 411 of file Render\+Object.\+cc.

\hypertarget{a01110_a50e176d550a1218ab5551c89ad723717}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!set\+Uniform@{set\+Uniform}}
\index{set\+Uniform@{set\+Uniform}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{set\+Uniform}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{\+\_\+name, }
\item[{const {\bf A\+C\+G\+::\+Vec4f} \&}]{\+\_\+value}
\end{DoxyParamCaption}
)}}\label{a01110_a50e176d550a1218ab5551c89ad723717}


set values for Vec4f uniforms 


\begin{DoxyParams}{Parameters}
{\em \+\_\+name} & Name of uniform in shader \\
\hline
{\em \+\_\+value} & value of the type \\
\hline
\end{DoxyParams}


Definition at line 416 of file Render\+Object.\+cc.

\hypertarget{a01110_a100e05de8f12e85ea7571fdd9ad3a13f}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!setup\+Line\+Rendering@{setup\+Line\+Rendering}}
\index{setup\+Line\+Rendering@{setup\+Line\+Rendering}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{setup\+Line\+Rendering}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::setup\+Line\+Rendering (
\begin{DoxyParamCaption}
\item[{float}]{\+\_\+line\+Width, }
\item[{const {\bf Vec2f} \&}]{\+\_\+screen\+Size}
\end{DoxyParamCaption}
)}}\label{a01110_a100e05de8f12e85ea7571fdd9ad3a13f}


Setup rendering of thick lines. 

Two default rendering methods for line thickness are available\+:
\begin{DoxyItemize}
\item quad extrusion in geometry shader (anti-\/aliasing, clipping issue due to depth testing with scene)
\item manual rasterization via shader image load/store (no anti-\/aliasing, no clipping issue, requires gl4.\+2) The method used depends on renderer settings.
\end{DoxyItemize}

Also, this will overwrite the geometry and fragment shader template. Requires support for geometry shaders with glsl 150 

Definition at line 447 of file Render\+Object.\+cc.

\hypertarget{a01110_af723823ab8dcc3a3bb87b7df76b02fa7}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!setup\+Point\+Rendering@{setup\+Point\+Rendering}}
\index{setup\+Point\+Rendering@{setup\+Point\+Rendering}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{setup\+Point\+Rendering}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Render\+Object\+::setup\+Point\+Rendering (
\begin{DoxyParamCaption}
\item[{float}]{\+\_\+point\+Size, }
\item[{const {\bf Vec2f} \&}]{\+\_\+screen\+Size}
\end{DoxyParamCaption}
)}}\label{a01110_af723823ab8dcc3a3bb87b7df76b02fa7}


Setup rendering of circle points. 

Use default quad extrusion shader. This will overwrite geometry and fragment shader template. Requires support for geometry shaders with glsl 150 

Definition at line 467 of file Render\+Object.\+cc.

\hypertarget{a01110_ac80427aedced32d2d9435403929042c3}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!to\+String@{to\+String}}
\index{to\+String@{to\+String}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{to\+String}]{\setlength{\rightskip}{0pt plus 5cm}Q\+String A\+C\+G\+::\+Render\+Object\+::to\+String (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}\label{a01110_ac80427aedced32d2d9435403929042c3}
Returns a text representation of the \hyperlink{a01110}{Render\+Object} for debugging purposes. 

Definition at line 228 of file Render\+Object.\+cc.



\subsection{Member Data Documentation}
\hypertarget{a01110_a03fbc76adf483d126eabed5abd8945c7}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!depth\+Map\+Uniform\+Name@{depth\+Map\+Uniform\+Name}}
\index{depth\+Map\+Uniform\+Name@{depth\+Map\+Uniform\+Name}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{depth\+Map\+Uniform\+Name}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ A\+C\+G\+::\+Render\+Object\+::depth\+Map\+Uniform\+Name}}\label{a01110_a03fbc76adf483d126eabed5abd8945c7}


Uniform name of the depth map in the used shader. 

If a shader used by this object requires a depth map of the scene, you can specify the name of the texture sampler uniform used here. This depth map is automatically computed in a z-\/prepass of the scene later in the renderer and assigned to the shader. It will be a 2\+D texture storing the values of the depth buffer (gl\+\_\+\+Frag\+Coord.\+z) in G\+L\+\_\+\+T\+E\+X\+T\+U\+R\+E\+\_\+2\+D, G\+L\+\_\+\+R32\+F format. Should be set to 0 if the used shader does not require a depth map.

default\+: 0 

Definition at line 295 of file Render\+Object.\+hh.

\hypertarget{a01110_a60a28ef4751b7f312204452295376e91}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!index\+Buffer@{index\+Buffer}}
\index{index\+Buffer@{index\+Buffer}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{index\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}G\+Luint A\+C\+G\+::\+Render\+Object\+::index\+Buffer}}\label{a01110_a60a28ef4751b7f312204452295376e91}


Use vertex array object. 

Optionally, a V\+A\+O can be used to setup rendering buffers and attribute locations. If this is 0 (default), vertex-\/buffer, index-\/buffer, vertex-\/declarition etc. have to be provided individually. Otherwise, the V\+A\+O is used instead of vertex\+Buffer, index\+Buffer etc. In this case, it is not neccessary to specify a vertex-\/declaration and provide vertex-\/ and indexbuffer. This is also the only way to setup a renderobject that makes use of multiple vertexbuffers! 

Definition at line 169 of file Render\+Object.\+hh.

\hypertarget{a01110_aecb578caf57fd9e5e60549671455c498}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!index\+Type@{index\+Type}}
\index{index\+Type@{index\+Type}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{index\+Type}]{\setlength{\rightskip}{0pt plus 5cm}G\+Lenum A\+C\+G\+::\+Render\+Object\+::index\+Type}}\label{a01110_aecb578caf57fd9e5e60549671455c498}


Index element type. 

Has to be G\+L\+\_\+\+U\+N\+S\+I\+G\+N\+E\+D\+\_\+\+S\+H\+O\+R\+T or G\+L\+\_\+\+U\+N\+S\+I\+G\+N\+E\+D\+\_\+\+I\+N\+T 

Definition at line 204 of file Render\+Object.\+hh.

\hypertarget{a01110_a853c58fa35c2f02821180a2614b3fd52}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!in\+Z\+Pre\+Pass@{in\+Z\+Pre\+Pass}}
\index{in\+Z\+Pre\+Pass@{in\+Z\+Pre\+Pass}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{in\+Z\+Pre\+Pass}]{\setlength{\rightskip}{0pt plus 5cm}bool A\+C\+G\+::\+Render\+Object\+::in\+Z\+Pre\+Pass}}\label{a01110_a853c58fa35c2f02821180a2614b3fd52}


Specify whether this object should be rendered in a z-\/prepass. 

The renderer might do a z-\/prepass for some rendering techniques. You can control whether an object should be taken into account for a z-\/prepass or not. For instance, scene objects should be rendered in the z-\/prepass, but overlays (coordsys, selection stuff..) should not.

default\+: true 

Definition at line 284 of file Render\+Object.\+hh.

\hypertarget{a01110_a818e708d8af6517e61dfc0c9cf6c2d2e}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!name@{name}}
\index{name@{name}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{name}]{\setlength{\rightskip}{0pt plus 5cm}std\+::string A\+C\+G\+::\+Render\+Object\+::name}}\label{a01110_a818e708d8af6517e61dfc0c9cf6c2d2e}


Name for logging. 



Definition at line 128 of file Render\+Object.\+hh.

\hypertarget{a01110_a4edecdc48d4c35df3cae5e74d11cdf65}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!num\+Instances@{num\+Instances}}
\index{num\+Instances@{num\+Instances}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{num\+Instances}]{\setlength{\rightskip}{0pt plus 5cm}G\+Lsizei A\+C\+G\+::\+Render\+Object\+::num\+Instances}}\label{a01110_a4edecdc48d4c35df3cae5e74d11cdf65}
\textbackslash{} brief Instancing

Number of instances to render. numinstances $<$= 0, disables instancing. 

Definition at line 211 of file Render\+Object.\+hh.

\hypertarget{a01110_a8aebe7ad28b6cc2b0fd2e2885d872117}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!overlay@{overlay}}
\index{overlay@{overlay}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{overlay}]{\setlength{\rightskip}{0pt plus 5cm}bool A\+C\+G\+::\+Render\+Object\+::overlay}}\label{a01110_a8aebe7ad28b6cc2b0fd2e2885d872117}


Layer based rendering. 

The renderer currently supports two layers\+:
\begin{DoxyItemize}
\item scene layer
\item overlay layer
\end{DoxyItemize}

Usually a render plugin operates on the scene layer only and overlayed objects are rendered on top of the result. For instance, meshes are rendered in the scene layer while coordsys objects are overlayed.

\begin{DoxyNote}{Note}
default = false 
\end{DoxyNote}


Definition at line 142 of file Render\+Object.\+hh.

\hypertarget{a01110_aa5eaa707aa9a9c7b0c70c38bf3c98c93}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!primitive\+Mode@{primitive\+Mode}}
\index{primitive\+Mode@{primitive\+Mode}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{primitive\+Mode}]{\setlength{\rightskip}{0pt plus 5cm}G\+Lenum A\+C\+G\+::\+Render\+Object\+::primitive\+Mode}}\label{a01110_aa5eaa707aa9a9c7b0c70c38bf3c98c93}


Primitive type. 

Primitive\+Type must be one of the following\+: G\+L\+\_\+\+P\+O\+I\+N\+T\+S, G\+L\+\_\+\+L\+I\+N\+E\+\_\+\+S\+T\+R\+I\+P, G\+L\+\_\+\+L\+I\+N\+E\+\_\+\+L\+O\+O\+P, G\+L\+\_\+\+L\+I\+N\+E\+S, G\+L\+\_\+\+T\+R\+I\+A\+N\+G\+L\+E\+\_\+\+S\+T\+R\+I\+P, G\+L\+\_\+\+T\+R\+I\+A\+N\+G\+L\+E\+\_\+\+F\+A\+N, G\+L\+\_\+\+T\+R\+I\+A\+N\+G\+L\+E\+S, G\+L\+\_\+\+Q\+U\+A\+D\+\_\+\+S\+T\+R\+I\+P, G\+L\+\_\+\+Q\+U\+A\+D\+S, G\+L\+\_\+\+P\+O\+L\+Y\+G\+O\+N, G\+L\+\_\+\+T\+R\+I\+A\+N\+G\+L\+E\+S\+\_\+\+A\+D\+J\+A\+C\+E\+N\+C\+Y, G\+L\+\_\+\+L\+I\+N\+E\+S\+\_\+\+A\+D\+J\+A\+C\+E\+N\+C\+Y, G\+L\+\_\+\+P\+A\+T\+C\+H\+E\+S 

Definition at line 189 of file Render\+Object.\+hh.

\hypertarget{a01110_a6234c9e474ed11cc161674060b3c891b}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!priority@{priority}}
\index{priority@{priority}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{priority}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Render\+Object\+::priority}}\label{a01110_a6234c9e474ed11cc161674060b3c891b}


Priority to allow sorting of objects. 

The renderer sorts objects based on priority in ascending order before rendering.

\begin{DoxyNote}{Note}
negative values allowed 
\end{DoxyNote}


Definition at line 123 of file Render\+Object.\+hh.

\hypertarget{a01110_a0b18ae90eb61c68a40dbb497acf3a01d}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!shader\+Desc@{shader\+Desc}}
\index{shader\+Desc@{shader\+Desc}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{shader\+Desc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Shader\+Gen\+Desc} A\+C\+G\+::\+Render\+Object\+::shader\+Desc}}\label{a01110_a0b18ae90eb61c68a40dbb497acf3a01d}


Drawmode and other shader params. 


\begin{DoxyItemize}
\item setup the shade mode \+: shader\+Desc.\+shade\+Mode = .. (necessary)
\item enable lighting with all lights in the scene\+: shader\+Desc.\+num\+Lights = 0 (recommended)
\item disable lighting(only removes lighting code)\+: shader\+Desc.\+num\+Lights = -\/1
\item manual lighting setup\+: shader\+Desc.\+num\+Lights = n shader\+Desc.\+light\+Types\mbox{[}i\mbox{]} = ..
\item enable / disable texturing \+: shader\+Desc.\+textured = .. ... 
\end{DoxyItemize}

Definition at line 232 of file Render\+Object.\+hh.

\hypertarget{a01110_a245a685860596916fef3ae4ff194fafb}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!sysmem\+Index\+Buffer@{sysmem\+Index\+Buffer}}
\index{sysmem\+Index\+Buffer@{sysmem\+Index\+Buffer}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{sysmem\+Index\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}const void$\ast$ A\+C\+G\+::\+Render\+Object\+::sysmem\+Index\+Buffer}}\label{a01110_a245a685860596916fef3ae4ff194fafb}


Use system memory index buffer. 

If you don't want to use an I\+B\+O, simply assign your sysmem indexbuffer address here. If both index\+Buffer and sysmem\+Index\+Buffer are 0, the renderer will treat this \hyperlink{a01110}{Render\+Object} like an unfolded vertex buffer (e.\+g. 3 $\ast$ n\+Tris vertex buffer for G\+L\+\_\+\+T\+R\+I\+A\+N\+G\+L\+E\+S)

\begin{DoxyNote}{Note}
It is also possible to specify a sysmem vertex buffer by setting up the \hyperlink{a01417}{Vertex\+Declaration} accordingly use num\+Indices 
\end{DoxyNote}


Definition at line 180 of file Render\+Object.\+hh.

\hypertarget{a01110_a10a263d6c5dd73bf8133f59ae8792c7f}{\index{A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}!vertex\+Array\+Object@{vertex\+Array\+Object}}
\index{vertex\+Array\+Object@{vertex\+Array\+Object}!A\+C\+G\+::\+Render\+Object@{A\+C\+G\+::\+Render\+Object}}
\subsubsection[{vertex\+Array\+Object}]{\setlength{\rightskip}{0pt plus 5cm}G\+Luint A\+C\+G\+::\+Render\+Object\+::vertex\+Array\+Object}}\label{a01110_a10a263d6c5dd73bf8133f59ae8792c7f}


Use vertex array object. 

Optionally, a V\+A\+O can be used to setup rendering buffers and attribute locations. If this is 0 (default), vertex-\/buffer, index-\/buffer, vertex-\/declarition etc. have to be provided individually. Otherwise, the V\+A\+O is used instead of vertex\+Buffer, index\+Buffer etc. In this case, it is not neccessary to specify a vertex-\/declaration and provide vertex-\/ and indexbuffer. This is also the only way to setup a renderobject that makes use of multiple vertexbuffers! 

Definition at line 165 of file Render\+Object.\+hh.



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