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


Interface class between scenegraph and renderer.  




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

\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structACG_1_1RenderObject_1_1Texture}{Texture}
\begin{DoxyCompactList}\small\item\em \hyperlink{structACG_1_1RenderObject_1_1Texture}{Texture} to be used. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{structACG_1_1RenderObject_a92d1e22700875e70a8addfd4ce20421d}{Render\+Object} ()
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a38c5665d72e7ab7df2e3c5cf89d2584a}\label{structACG_1_1RenderObject_a38c5665d72e7ab7df2e3c5cf89d2584a}} 
void \hyperlink{structACG_1_1RenderObject_a38c5665d72e7ab7df2e3c5cf89d2584a}{add\+Texture} (const \hyperlink{structACG_1_1RenderObject_1_1Texture}{Texture} \&\+\_\+t)
\begin{DoxyCompactList}\small\item\em adds a texture to stage Render\+Objects\+::num\+Textures() \end{DoxyCompactList}\item 
void \hyperlink{structACG_1_1RenderObject_a8c434f16d1c0e9fbcab23566ac2c0574}{add\+Texture} (const \hyperlink{structACG_1_1RenderObject_1_1Texture}{Texture} \&\+\_\+t, const size\+\_\+t \+\_\+stage, bool \+\_\+add\+To\+Shader\+Gen=true)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_af3fe2119dc699aba798ea1aa33f261a1}\label{structACG_1_1RenderObject_af3fe2119dc699aba798ea1aa33f261a1}} 
void \hyperlink{structACG_1_1RenderObject_af3fe2119dc699aba798ea1aa33f261a1}{clear\+Textures} ()
\begin{DoxyCompactList}\small\item\em clear all textures. Also affected on shader\+Desc \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aa4cc6cf047e28cd59ac4ad92a4c5628e}\label{structACG_1_1RenderObject_aa4cc6cf047e28cd59ac4ad92a4c5628e}} 
const std\+::map$<$ size\+\_\+t, \hyperlink{structACG_1_1RenderObject_1_1Texture}{Texture} $>$ \& {\bfseries textures} ()
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_acb44f5c8e55eb1ae77edf99afbc7c971}\label{structACG_1_1RenderObject_acb44f5c8e55eb1ae77edf99afbc7c971}} 
size\+\_\+t {\bfseries num\+Textures} ()
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a0b213fcbe80fad650b0bcffde5452fa8}\label{structACG_1_1RenderObject_a0b213fcbe80fad650b0bcffde5452fa8}} 
void {\bfseries gl\+Bind\+Buffer} (G\+Lenum target, G\+Luint buffer)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a5fd1fa70802cbafe6174b5fcd5d6f449}\label{structACG_1_1RenderObject_a5fd1fa70802cbafe6174b5fcd5d6f449}} 
void {\bfseries gl\+Draw\+Arrays} (G\+Lenum mode, G\+Lint first, G\+Lsizei count)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a9896baa7ef3d494faf4a5c35555c6446}\label{structACG_1_1RenderObject_a9896baa7ef3d494faf4a5c35555c6446}} 
void {\bfseries gl\+Draw\+Instanced\+Arrays} (G\+Lenum mode, G\+Lint first, G\+Lsizei count, G\+Lsizei primcount)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a9db655abf33ff2f0d8179fd1505289ad}\label{structACG_1_1RenderObject_a9db655abf33ff2f0d8179fd1505289ad}} 
void {\bfseries gl\+Draw\+Elements} (G\+Lenum mode, G\+Lsizei count, G\+Lenum type, const G\+Lvoid $\ast$indices)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aea618149ea73cbb580b2e27adcbc32d7}\label{structACG_1_1RenderObject_aea618149ea73cbb580b2e27adcbc32d7}} 
void {\bfseries gl\+Draw\+Elements\+Instanced} (G\+Lenum mode, G\+Lsizei count, G\+Lenum type, const G\+Lvoid $\ast$indices, G\+Lsizei primcount)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a92bca5530e8400cf78a8d07600e881ad}\label{structACG_1_1RenderObject_a92bca5530e8400cf78a8d07600e881ad}} 
void {\bfseries gl\+Color\+Mask} (G\+Lboolean r, G\+Lboolean g, G\+Lboolean b, G\+Lboolean a)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a99712f796750098fab236acad793fa12}\label{structACG_1_1RenderObject_a99712f796750098fab236acad793fa12}} 
void {\bfseries gl\+Alpha\+Func} (G\+Lenum func, float ref)
\item 
void \hyperlink{structACG_1_1RenderObject_aece5682dc59f93acc79ad8f8e7a87430}{init\+From\+State} (\hyperlink{classACG_1_1GLState}{G\+L\+State} $\ast$\+\_\+gl\+State)
\begin{DoxyCompactList}\small\item\em Initializes a \hyperlink{structACG_1_1RenderObject}{Render\+Object} instance. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_af62c1d7d1b747c3d3c8d96db4eb77565}\label{structACG_1_1RenderObject_af62c1d7d1b747c3d3c8d96db4eb77565}} 
void {\bfseries set\+Material} (const \hyperlink{classACG_1_1SceneGraph_1_1Material}{Scene\+Graph\+::\+Material} $\ast$\+\_\+mat)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a1729a1ec74d828bde060e3b659f2deb5}\label{structACG_1_1RenderObject_a1729a1ec74d828bde060e3b659f2deb5}} 
void \hyperlink{structACG_1_1RenderObject_a1729a1ec74d828bde060e3b659f2deb5}{setup\+Shader\+Gen\+From\+Drawmode} (const \hyperlink{classACG_1_1SceneGraph_1_1DrawModes_1_1DrawModeProperties}{Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode\+Properties} $\ast$\+\_\+props)
\begin{DoxyCompactList}\small\item\em Fills out \hyperlink{classACG_1_1ShaderGenDesc}{Shader\+Gen\+Desc} parameters based on Drawmode properties. \end{DoxyCompactList}\item 
void \hyperlink{structACG_1_1RenderObject_a100e05de8f12e85ea7571fdd9ad3a13f}{setup\+Line\+Rendering} (float \+\_\+line\+Width, const \hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \&\+\_\+screen\+Size)
\begin{DoxyCompactList}\small\item\em Setup rendering of thick lines. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a0b7689a58b10632949852a23e1b61714}\label{structACG_1_1RenderObject_a0b7689a58b10632949852a23e1b61714}} 
bool \hyperlink{structACG_1_1RenderObject_a0b7689a58b10632949852a23e1b61714}{is\+Default\+Line\+Object} () const
\begin{DoxyCompactList}\small\item\em Test if the object is rendered with one of the default line thickness methods. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a25871c9774b87ab9dffd8ac558fc4f0a}\label{structACG_1_1RenderObject_a25871c9774b87ab9dffd8ac558fc4f0a}} 
void \hyperlink{structACG_1_1RenderObject_a25871c9774b87ab9dffd8ac558fc4f0a}{reset\+Line\+Rendering} ()
\begin{DoxyCompactList}\small\item\em Reset shader template names blocked by line rendering. \end{DoxyCompactList}\item 
void \hyperlink{structACG_1_1RenderObject_af723823ab8dcc3a3bb87b7df76b02fa7}{setup\+Point\+Rendering} (float \+\_\+point\+Size, const \hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \&\+\_\+screen\+Size)
\begin{DoxyCompactList}\small\item\em Setup rendering of circle points. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aa4e04d036ca5a34320bc50390627fc42}\label{structACG_1_1RenderObject_aa4e04d036ca5a34320bc50390627fc42}} 
bool \hyperlink{structACG_1_1RenderObject_aa4e04d036ca5a34320bc50390627fc42}{is\+Default\+Point\+Object} () const
\begin{DoxyCompactList}\small\item\em Test if the object is rendered with one of the default point extension methods. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a608879c8a195d3e32da42a4650a93c57}\label{structACG_1_1RenderObject_a608879c8a195d3e32da42a4650a93c57}} 
void \hyperlink{structACG_1_1RenderObject_a608879c8a195d3e32da42a4650a93c57}{reset\+Point\+Rendering} ()
\begin{DoxyCompactList}\small\item\em Reset shader template names blocked by point rendering. \end{DoxyCompactList}\item 
Q\+String \hyperlink{structACG_1_1RenderObject_a18c3e8e49a4c3b897ab44e5c5fd0f254}{to\+String} () const
\item 
void \hyperlink{structACG_1_1RenderObject_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{structACG_1_1RenderObject_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{structACG_1_1RenderObject_aa4ae3f75103569c93012d30ac8006552}{set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{A\+C\+G\+::\+Vec2f} \&\+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for Vec2f uniforms \end{DoxyCompactList}\item 
void \hyperlink{structACG_1_1RenderObject_aac4e4e7fd028a478aec1007137d60ff7}{set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{namespaceACG_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} \&\+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for Vec3f uniforms \end{DoxyCompactList}\item 
void \hyperlink{structACG_1_1RenderObject_a50e176d550a1218ab5551c89ad723717}{set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{namespaceACG_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} \&\+\_\+value)
\begin{DoxyCompactList}\small\item\em set values for Vec4f uniforms \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a28b86665601e1ff455cf97d11dc4be7c}\label{structACG_1_1RenderObject_a28b86665601e1ff455cf97d11dc4be7c}} 
void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{namespaceACG_a1e5dae9881df8fa0d42b985a8e7fad28}{A\+C\+G\+::\+G\+L\+Matrixf} \&\+\_\+value, bool \+\_\+transposed=false)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a97605dd7f8ef3e4f1a7aa830a81264d0}\label{structACG_1_1RenderObject_a97605dd7f8ef3e4f1a7aa830a81264d0}} 
void {\bfseries set\+Uniform\+Mat3} (const char $\ast$\+\_\+name, const \hyperlink{namespaceACG_a1e5dae9881df8fa0d42b985a8e7fad28}{A\+C\+G\+::\+G\+L\+Matrixf} \&\+\_\+value, bool \+\_\+transposed=false)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aaa5a2f3dc4e2c5e7da1ae82480ea4e1c}\label{structACG_1_1RenderObject_aaa5a2f3dc4e2c5e7da1ae82480ea4e1c}} 
void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, G\+Lint $\ast$\+\_\+values, int \+\_\+count)
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a1c14b02b885b71b55352f42297341325}\label{structACG_1_1RenderObject_a1c14b02b885b71b55352f42297341325}} 
void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, G\+Lfloat $\ast$\+\_\+values, int \+\_\+count)
\item 
void \hyperlink{structACG_1_1RenderObject_ae771d4c428ab39fc15ab36f5ccb4c185}{add\+Uniform\+Pool} (const \hyperlink{classGLSL_1_1UniformPool}{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{structACG_1_1RenderObject_a6234c9e474ed11cc161674060b3c891b}{priority}
\begin{DoxyCompactList}\small\item\em Priority to allow sorting of objects. \end{DoxyCompactList}\item 
std\+::string \hyperlink{structACG_1_1RenderObject_a818e708d8af6517e61dfc0c9cf6c2d2e}{name}
\begin{DoxyCompactList}\small\item\em Name for logging. \end{DoxyCompactList}\item 
bool \hyperlink{structACG_1_1RenderObject_a8aebe7ad28b6cc2b0fd2e2885d872117}{overlay}
\begin{DoxyCompactList}\small\item\em Layer based rendering. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a6e132c1b65c0f8b049966e5614934dea}\label{structACG_1_1RenderObject_a6e132c1b65c0f8b049966e5614934dea}} 
\hyperlink{namespaceACG_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \hyperlink{structACG_1_1RenderObject_a6e132c1b65c0f8b049966e5614934dea}{modelview}
\begin{DoxyCompactList}\small\item\em Modelview transform. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a6ef6fb5df32273ff32a1fb8c3493b4b0}\label{structACG_1_1RenderObject_a6ef6fb5df32273ff32a1fb8c3493b4b0}} 
\hyperlink{namespaceACG_a574eaee6f4eff166845ff5c654b0b852}{G\+L\+Matrixd} \hyperlink{structACG_1_1RenderObject_a6ef6fb5df32273ff32a1fb8c3493b4b0}{proj}
\begin{DoxyCompactList}\small\item\em Projection transform. \end{DoxyCompactList}\item 
\hyperlink{classACG_1_1ShaderGenDesc}{Shader\+Gen\+Desc} \hyperlink{structACG_1_1RenderObject_a0b18ae90eb61c68a40dbb497acf3a01d}{shader\+Desc}
\begin{DoxyCompactList}\small\item\em Drawmode and other shader params. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aebf255946532fb6de72244cb7cc17c75}\label{structACG_1_1RenderObject_aebf255946532fb6de72244cb7cc17c75}} 
bool {\bfseries culling}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a6cd2a48742e9589c3f855bc163e65dc1}\label{structACG_1_1RenderObject_a6cd2a48742e9589c3f855bc163e65dc1}} 
bool {\bfseries blending}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a4060db397e5a0657a387331db46e3285}\label{structACG_1_1RenderObject_a4060db397e5a0657a387331db46e3285}} 
bool {\bfseries alpha\+Test}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_ae50aa09d3307e0fa6f1dd44b3285241d}\label{structACG_1_1RenderObject_ae50aa09d3307e0fa6f1dd44b3285241d}} 
bool {\bfseries depth\+Test}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a4864605f98830ccd3e6cfd922b635e40}\label{structACG_1_1RenderObject_a4864605f98830ccd3e6cfd922b635e40}} 
bool {\bfseries depth\+Write}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a5eea594647d8e5753fd35878991ba86e}\label{structACG_1_1RenderObject_a5eea594647d8e5753fd35878991ba86e}} 
G\+Lenum {\bfseries fill\+Mode}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a987aaf3b8a141acc7a5965cf995659ed}\label{structACG_1_1RenderObject_a987aaf3b8a141acc7a5965cf995659ed}} 
G\+Lboolean {\bfseries color\+Write\+Mask} \mbox{[}4\mbox{]}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aee5d09825695cbd23eadb0a58d0eb777}\label{structACG_1_1RenderObject_aee5d09825695cbd23eadb0a58d0eb777}} 
G\+Lenum \hyperlink{structACG_1_1RenderObject_aee5d09825695cbd23eadb0a58d0eb777}{depth\+Func}
\begin{DoxyCompactList}\small\item\em G\+L\+\_\+\+L\+E\+SS, G\+L\+\_\+\+L\+E\+Q\+U\+AL, G\+L\+\_\+\+G\+R\+E\+A\+T\+ER .. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_abdadb2da4be0c5b6651919c5f8d5fc80}\label{structACG_1_1RenderObject_abdadb2da4be0c5b6651919c5f8d5fc80}} 
G\+Lenum \hyperlink{structACG_1_1RenderObject_abdadb2da4be0c5b6651919c5f8d5fc80}{alpha\+Func}
\begin{DoxyCompactList}\small\item\em G\+L\+\_\+\+L\+E\+SS, G\+L\+\_\+\+L\+E\+Q\+U\+AL, G\+L\+\_\+\+G\+R\+E\+A\+T\+ER .. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a16f477afef8c73371df7b3fca0202dd1}\label{structACG_1_1RenderObject_a16f477afef8c73371df7b3fca0202dd1}} 
float {\bfseries alpha\+Ref}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_ab0f86a1db973fb19832a1fc5660a9f65}\label{structACG_1_1RenderObject_ab0f86a1db973fb19832a1fc5660a9f65}} 
G\+Lenum {\bfseries blend\+Src}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_ad3d4b459a4ec0e97ea04edbdbf8f3dc5}\label{structACG_1_1RenderObject_ad3d4b459a4ec0e97ea04edbdbf8f3dc5}} 
G\+Lenum \hyperlink{structACG_1_1RenderObject_ad3d4b459a4ec0e97ea04edbdbf8f3dc5}{blend\+Dest}
\begin{DoxyCompactList}\small\item\em gl\+Blend\+Func\+: G\+L\+\_\+\+S\+R\+C\+\_\+\+A\+L\+P\+HA, G\+L\+\_\+\+Z\+E\+RO, G\+L\+\_\+\+O\+NE, G\+L\+\_\+\+O\+N\+E\+\_\+\+M\+I\+N\+U\+S\+\_\+\+S\+R\+C\+\_\+\+A\+L\+P\+HA ... \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_ae682d9cddc475c264bad6e05750f6122}\label{structACG_1_1RenderObject_ae682d9cddc475c264bad6e05750f6122}} 
\hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \hyperlink{structACG_1_1RenderObject_ae682d9cddc475c264bad6e05750f6122}{depth\+Range}
\begin{DoxyCompactList}\small\item\em gl\+Depth\+Range\+: (znear, zmax) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_ab5ab57dd06443178c9532da57a068f10}\label{structACG_1_1RenderObject_ab5ab57dd06443178c9532da57a068f10}} 
G\+Luint {\bfseries clip\+Distance\+Mask}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_af1865b689ce33f29a4c41c2fb442e2b1}\label{structACG_1_1RenderObject_af1865b689ce33f29a4c41c2fb442e2b1}} 
bool {\bfseries program\+Point\+Size}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a0dfaed39704cbfe12dedca08cf836e2e}\label{structACG_1_1RenderObject_a0dfaed39704cbfe12dedca08cf836e2e}} 
float {\bfseries point\+Size}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a08fc568dbdec1c7eb910b9eb90612064}\label{structACG_1_1RenderObject_a08fc568dbdec1c7eb910b9eb90612064}} 
\hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} {\bfseries patch\+Default\+Inner\+Level}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a66fdba53221e6346c7a272dc1c7622d5}\label{structACG_1_1RenderObject_a66fdba53221e6346c7a272dc1c7622d5}} 
\hyperlink{namespaceACG_a4850d8bd22bf3ccf7088b80adc17c989}{Vec4f} {\bfseries patch\+Default\+Outer\+Level}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a09bd989efc0ee8c25a4213f6718088bf}\label{structACG_1_1RenderObject_a09bd989efc0ee8c25a4213f6718088bf}} 
\hyperlink{namespaceACG_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} \hyperlink{structACG_1_1RenderObject_a09bd989efc0ee8c25a4213f6718088bf}{diffuse}
\begin{DoxyCompactList}\small\item\em material definitions \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a793ab437b01b3fb3591c6991a59a8930}\label{structACG_1_1RenderObject_a793ab437b01b3fb3591c6991a59a8930}} 
\hyperlink{namespaceACG_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} {\bfseries ambient}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aa0995271c5af258e8db037a457021020}\label{structACG_1_1RenderObject_aa0995271c5af258e8db037a457021020}} 
\hyperlink{namespaceACG_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} {\bfseries specular}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a4d97cf9988675e7e5a9ab12659d6e56d}\label{structACG_1_1RenderObject_a4d97cf9988675e7e5a9ab12659d6e56d}} 
\hyperlink{namespaceACG_a86c28120e8596ee7d03e58b7300f59bc}{Vec3f} {\bfseries emissive}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a8da969128e2f1ce9a38be74d1526eba6}\label{structACG_1_1RenderObject_a8da969128e2f1ce9a38be74d1526eba6}} 
float {\bfseries alpha}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_acb5a3d2ae1a968434add2b0fcb25c105}\label{structACG_1_1RenderObject_acb5a3d2ae1a968434add2b0fcb25c105}} 
float {\bfseries shininess}
\item 
bool \hyperlink{structACG_1_1RenderObject_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{structACG_1_1RenderObject_a03fbc76adf483d126eabed5abd8945c7}{depth\+Map\+Uniform\+Name}
\begin{DoxyCompactList}\small\item\em Uniform name of the depth map in the used shader. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a017bb6ded287db391e3ab26aa228a0f6}\label{structACG_1_1RenderObject_a017bb6ded287db391e3ab26aa228a0f6}} 
int \hyperlink{structACG_1_1RenderObject_a017bb6ded287db391e3ab26aa228a0f6}{debug\+ID}
\begin{DoxyCompactList}\small\item\em used internally for renderer debugging \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a167823cadb22920de60f751d7d091fd2}\label{structACG_1_1RenderObject_a167823cadb22920de60f751d7d091fd2}} 
std\+::string {\bfseries debug\+Name}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_ae38a304ab438f3c93ef24e333c9b2f95}\label{structACG_1_1RenderObject_ae38a304ab438f3c93ef24e333c9b2f95}} 
unsigned int \hyperlink{structACG_1_1RenderObject_ae38a304ab438f3c93ef24e333c9b2f95}{internal\+Flags\+\_\+}
\begin{DoxyCompactList}\small\item\em may be used internally by the renderer \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{Indent}\textbf{ Geometry definition}\par
\begin{DoxyCompactItemize}
\item 
G\+Luint \hyperlink{structACG_1_1RenderObject_a10a263d6c5dd73bf8133f59ae8792c7f}{vertex\+Array\+Object}
\begin{DoxyCompactList}\small\item\em Use vertex array object. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a9bf3cdd4f2034feba39e9a414022a9c1}\label{structACG_1_1RenderObject_a9bf3cdd4f2034feba39e9a414022a9c1}} 
G\+Luint \hyperlink{structACG_1_1RenderObject_a9bf3cdd4f2034feba39e9a414022a9c1}{vertex\+Buffer}
\begin{DoxyCompactList}\small\item\em V\+BO, I\+BO ids, ignored if V\+AO is provided. \end{DoxyCompactList}\item 
G\+Luint \hyperlink{structACG_1_1RenderObject_a60a28ef4751b7f312204452295376e91}{index\+Buffer}
\begin{DoxyCompactList}\small\item\em Use vertex array object. \end{DoxyCompactList}\item 
const void $\ast$ \hyperlink{structACG_1_1RenderObject_a245a685860596916fef3ae4ff194fafb}{sysmem\+Index\+Buffer}
\begin{DoxyCompactList}\small\item\em Use system memory index buffer. \end{DoxyCompactList}\item 
G\+Lenum \hyperlink{structACG_1_1RenderObject_aa5eaa707aa9a9c7b0c70c38bf3c98c93}{primitive\+Mode}
\begin{DoxyCompactList}\small\item\em Primitive type. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_ad193c8b45199fb263222432991910a17}\label{structACG_1_1RenderObject_ad193c8b45199fb263222432991910a17}} 
unsigned int \hyperlink{structACG_1_1RenderObject_ad193c8b45199fb263222432991910a17}{patch\+Vertices}
\begin{DoxyCompactList}\small\item\em patch size if primitive\+Mode is G\+L\+\_\+\+P\+A\+T\+C\+H\+ES for rendering with tessellation shaders \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a66bd22443e9e145ce79e10ea17b1687f}\label{structACG_1_1RenderObject_a66bd22443e9e145ce79e10ea17b1687f}} 
unsigned int \hyperlink{structACG_1_1RenderObject_a66bd22443e9e145ce79e10ea17b1687f}{num\+Indices}
\begin{DoxyCompactList}\small\item\em Number indices to render. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a969581cdefad0ee4054ac2c236d81239}\label{structACG_1_1RenderObject_a969581cdefad0ee4054ac2c236d81239}} 
unsigned int \hyperlink{structACG_1_1RenderObject_a969581cdefad0ee4054ac2c236d81239}{index\+Offset}
\begin{DoxyCompactList}\small\item\em Offset to first index in the index buffer or vertex buffer respectively. \end{DoxyCompactList}\item 
G\+Lenum \hyperlink{structACG_1_1RenderObject_aecb578caf57fd9e5e60549671455c498}{index\+Type}
\begin{DoxyCompactList}\small\item\em Index element type. \end{DoxyCompactList}\item 
G\+Lsizei \hyperlink{structACG_1_1RenderObject_a4edecdc48d4c35df3cae5e74d11cdf65}{num\+Instances}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a1393913c3062965f43d44446d4b74c06}\label{structACG_1_1RenderObject_a1393913c3062965f43d44446d4b74c06}} 
const \hyperlink{classACG_1_1VertexDeclaration}{Vertex\+Declaration} $\ast$ \hyperlink{structACG_1_1RenderObject_a1393913c3062965f43d44446d4b74c06}{vertex\+Decl}
\begin{DoxyCompactList}\small\item\em Defines the vertex buffer layout, ignored if V\+AO is provided. \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a7eafe3eacefb43b7e69644392cefca15}\label{structACG_1_1RenderObject_a7eafe3eacefb43b7e69644392cefca15}} 
std\+::map$<$ size\+\_\+t, \hyperlink{structACG_1_1RenderObject_1_1Texture}{Texture} $>$ \hyperlink{structACG_1_1RenderObject_a7eafe3eacefb43b7e69644392cefca15}{textures\+\_\+}
\begin{DoxyCompactList}\small\item\em holds the textures (second) and the stage id (first) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_aad9235de2dac7db06bbc3870fe61db50}\label{structACG_1_1RenderObject_aad9235de2dac7db06bbc3870fe61db50}} 
\hyperlink{classGLSL_1_1UniformPool}{G\+L\+S\+L\+::\+Uniform\+Pool} {\bfseries uniform\+Pool\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{structACG_1_1RenderObject_a927c03c6373c76b5adbb3c4ccb7b79c8}\label{structACG_1_1RenderObject_a927c03c6373c76b5adbb3c4ccb7b79c8}} 
class {\bfseries I\+Renderer}
\end{DoxyCompactItemize}


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

\hyperlink{structACG_1_1RenderObject}{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\+GL render states
\item material properties
\item texture
\end{DoxyItemize}

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

An Open\+GL 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{classACG_1_1VertexDeclaration}{Vertex\+Declaration} on your own first though.

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

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



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structACG_1_1RenderObject_a92d1e22700875e70a8addfd4ce20421d}\label{structACG_1_1RenderObject_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{\texorpdfstring{Render\+Object()}{RenderObject()}}
{\footnotesize\ttfamily A\+C\+G\+::\+Render\+Object\+::\+Render\+Object (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

default constructor set all members to Open\+GL default values 

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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{structACG_1_1RenderObject_a8c434f16d1c0e9fbcab23566ac2c0574}\label{structACG_1_1RenderObject_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{\texorpdfstring{add\+Texture()}{addTexture()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::add\+Texture (\begin{DoxyParamCaption}\item[{const \hyperlink{structACG_1_1RenderObject_1_1Texture}{Texture} \&}]{\+\_\+t,  }\item[{const size\+\_\+t}]{\+\_\+stage,  }\item[{bool}]{\+\_\+add\+To\+Shader\+Gen = {\ttfamily true} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

adds a texture to an specific stage and enables texture support in shader\+Desc 

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

\mbox{\Hypertarget{structACG_1_1RenderObject_ae771d4c428ab39fc15ab36f5ccb4c185}\label{structACG_1_1RenderObject_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{\texorpdfstring{add\+Uniform\+Pool()}{addUniformPool()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::add\+Uniform\+Pool (\begin{DoxyParamCaption}\item[{const \hyperlink{classGLSL_1_1UniformPool}{G\+L\+S\+L\+::\+Uniform\+Pool} \&}]{\+\_\+pool }\end{DoxyParamCaption})}



add all uniforms from a pool 


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


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

\mbox{\Hypertarget{structACG_1_1RenderObject_aece5682dc59f93acc79ad8f8e7a87430}\label{structACG_1_1RenderObject_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{\texorpdfstring{init\+From\+State()}{initFromState()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::init\+From\+State (\begin{DoxyParamCaption}\item[{\hyperlink{classACG_1_1GLState}{G\+L\+State} $\ast$}]{\+\_\+gl\+State }\end{DoxyParamCaption})}



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

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

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

\mbox{\Hypertarget{structACG_1_1RenderObject_ad12319347136c0b363f69b64dfd7d467}\label{structACG_1_1RenderObject_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{\texorpdfstring{set\+Uniform()}{setUniform()}\hspace{0.1cm}{\footnotesize\ttfamily [1/5]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (\begin{DoxyParamCaption}\item[{const char $\ast$}]{\+\_\+name,  }\item[{G\+Lint}]{\+\_\+value }\end{DoxyParamCaption})}



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 413 of file Render\+Object.\+cc.

\mbox{\Hypertarget{structACG_1_1RenderObject_afa1f1d6666fa0542f3dd1ec81cf0abc8}\label{structACG_1_1RenderObject_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{\texorpdfstring{set\+Uniform()}{setUniform()}\hspace{0.1cm}{\footnotesize\ttfamily [2/5]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (\begin{DoxyParamCaption}\item[{const char $\ast$}]{\+\_\+name,  }\item[{G\+Lfloat}]{\+\_\+value }\end{DoxyParamCaption})}



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 418 of file Render\+Object.\+cc.

\mbox{\Hypertarget{structACG_1_1RenderObject_aa4ae3f75103569c93012d30ac8006552}\label{structACG_1_1RenderObject_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{\texorpdfstring{set\+Uniform()}{setUniform()}\hspace{0.1cm}{\footnotesize\ttfamily [3/5]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (\begin{DoxyParamCaption}\item[{const char $\ast$}]{\+\_\+name,  }\item[{const \hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{A\+C\+G\+::\+Vec2f} \&}]{\+\_\+value }\end{DoxyParamCaption})}



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 423 of file Render\+Object.\+cc.

\mbox{\Hypertarget{structACG_1_1RenderObject_aac4e4e7fd028a478aec1007137d60ff7}\label{structACG_1_1RenderObject_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{\texorpdfstring{set\+Uniform()}{setUniform()}\hspace{0.1cm}{\footnotesize\ttfamily [4/5]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (\begin{DoxyParamCaption}\item[{const char $\ast$}]{\+\_\+name,  }\item[{const \hyperlink{namespaceACG_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} \&}]{\+\_\+value }\end{DoxyParamCaption})}



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 428 of file Render\+Object.\+cc.

\mbox{\Hypertarget{structACG_1_1RenderObject_a50e176d550a1218ab5551c89ad723717}\label{structACG_1_1RenderObject_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{\texorpdfstring{set\+Uniform()}{setUniform()}\hspace{0.1cm}{\footnotesize\ttfamily [5/5]}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::set\+Uniform (\begin{DoxyParamCaption}\item[{const char $\ast$}]{\+\_\+name,  }\item[{const \hyperlink{namespaceACG_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} \&}]{\+\_\+value }\end{DoxyParamCaption})}



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 433 of file Render\+Object.\+cc.

\mbox{\Hypertarget{structACG_1_1RenderObject_a100e05de8f12e85ea7571fdd9ad3a13f}\label{structACG_1_1RenderObject_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{\texorpdfstring{setup\+Line\+Rendering()}{setupLineRendering()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::setup\+Line\+Rendering (\begin{DoxyParamCaption}\item[{float}]{\+\_\+line\+Width,  }\item[{const \hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \&}]{\+\_\+screen\+Size }\end{DoxyParamCaption})}



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 464 of file Render\+Object.\+cc.

\mbox{\Hypertarget{structACG_1_1RenderObject_af723823ab8dcc3a3bb87b7df76b02fa7}\label{structACG_1_1RenderObject_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{\texorpdfstring{setup\+Point\+Rendering()}{setupPointRendering()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Render\+Object\+::setup\+Point\+Rendering (\begin{DoxyParamCaption}\item[{float}]{\+\_\+point\+Size,  }\item[{const \hyperlink{namespaceACG_a8b858737aebd55e312149cf208a0b3f3}{Vec2f} \&}]{\+\_\+screen\+Size }\end{DoxyParamCaption})}



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 484 of file Render\+Object.\+cc.

\mbox{\Hypertarget{structACG_1_1RenderObject_a18c3e8e49a4c3b897ab44e5c5fd0f254}\label{structACG_1_1RenderObject_a18c3e8e49a4c3b897ab44e5c5fd0f254}} 
\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{\texorpdfstring{to\+String()}{toString()}}
{\footnotesize\ttfamily Q\+String A\+C\+G\+::\+Render\+Object\+::to\+String (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

Returns a text representation of the \hyperlink{structACG_1_1RenderObject}{Render\+Object} for debugging purposes. 

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



\subsection{Member Data Documentation}
\mbox{\Hypertarget{structACG_1_1RenderObject_a03fbc76adf483d126eabed5abd8945c7}\label{structACG_1_1RenderObject_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{\texorpdfstring{depth\+Map\+Uniform\+Name}{depthMapUniformName}}
{\footnotesize\ttfamily const char$\ast$ A\+C\+G\+::\+Render\+Object\+::depth\+Map\+Uniform\+Name}



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 2D texture storing the values of the depth buffer (gl\+\_\+\+Frag\+Coord.\+z) in G\+L\+\_\+\+T\+E\+X\+T\+U\+R\+E\+\_\+2D, G\+L\+\_\+\+R32F format. Should be set to 0 if the used shader does not require a depth map.

default\+: 0 

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

\mbox{\Hypertarget{structACG_1_1RenderObject_a60a28ef4751b7f312204452295376e91}\label{structACG_1_1RenderObject_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{\texorpdfstring{index\+Buffer}{indexBuffer}}
{\footnotesize\ttfamily G\+Luint A\+C\+G\+::\+Render\+Object\+::index\+Buffer}



Use vertex array object. 

Optionally, a V\+AO 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\+AO 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 162 of file Render\+Object.\+hh.

\mbox{\Hypertarget{structACG_1_1RenderObject_aecb578caf57fd9e5e60549671455c498}\label{structACG_1_1RenderObject_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{\texorpdfstring{index\+Type}{indexType}}
{\footnotesize\ttfamily G\+Lenum A\+C\+G\+::\+Render\+Object\+::index\+Type}



Index element type. 

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

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

\mbox{\Hypertarget{structACG_1_1RenderObject_a853c58fa35c2f02821180a2614b3fd52}\label{structACG_1_1RenderObject_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{\texorpdfstring{in\+Z\+Pre\+Pass}{inZPrePass}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Render\+Object\+::in\+Z\+Pre\+Pass}



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 291 of file Render\+Object.\+hh.

\mbox{\Hypertarget{structACG_1_1RenderObject_a818e708d8af6517e61dfc0c9cf6c2d2e}\label{structACG_1_1RenderObject_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{\texorpdfstring{name}{name}}
{\footnotesize\ttfamily std\+::string A\+C\+G\+::\+Render\+Object\+::name}



Name for logging. 



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

\mbox{\Hypertarget{structACG_1_1RenderObject_a4edecdc48d4c35df3cae5e74d11cdf65}\label{structACG_1_1RenderObject_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{\texorpdfstring{num\+Instances}{numInstances}}
{\footnotesize\ttfamily G\+Lsizei A\+C\+G\+::\+Render\+Object\+::num\+Instances}

\textbackslash{} brief Instancing

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

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

\mbox{\Hypertarget{structACG_1_1RenderObject_a8aebe7ad28b6cc2b0fd2e2885d872117}\label{structACG_1_1RenderObject_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{\texorpdfstring{overlay}{overlay}}
{\footnotesize\ttfamily bool A\+C\+G\+::\+Render\+Object\+::overlay}



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 135 of file Render\+Object.\+hh.

\mbox{\Hypertarget{structACG_1_1RenderObject_aa5eaa707aa9a9c7b0c70c38bf3c98c93}\label{structACG_1_1RenderObject_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{\texorpdfstring{primitive\+Mode}{primitiveMode}}
{\footnotesize\ttfamily G\+Lenum A\+C\+G\+::\+Render\+Object\+::primitive\+Mode}



Primitive type. 

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

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

\mbox{\Hypertarget{structACG_1_1RenderObject_a6234c9e474ed11cc161674060b3c891b}\label{structACG_1_1RenderObject_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{\texorpdfstring{priority}{priority}}
{\footnotesize\ttfamily int A\+C\+G\+::\+Render\+Object\+::priority}



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 116 of file Render\+Object.\+hh.

\mbox{\Hypertarget{structACG_1_1RenderObject_a0b18ae90eb61c68a40dbb497acf3a01d}\label{structACG_1_1RenderObject_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{\texorpdfstring{shader\+Desc}{shaderDesc}}
{\footnotesize\ttfamily \hyperlink{classACG_1_1ShaderGenDesc}{Shader\+Gen\+Desc} A\+C\+G\+::\+Render\+Object\+::shader\+Desc}



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 225 of file Render\+Object.\+hh.

\mbox{\Hypertarget{structACG_1_1RenderObject_a245a685860596916fef3ae4ff194fafb}\label{structACG_1_1RenderObject_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{\texorpdfstring{sysmem\+Index\+Buffer}{sysmemIndexBuffer}}
{\footnotesize\ttfamily const void$\ast$ A\+C\+G\+::\+Render\+Object\+::sysmem\+Index\+Buffer}



Use system memory index buffer. 

If you don\textquotesingle{}t want to use an I\+BO, simply assign your sysmem indexbuffer address here. If both index\+Buffer and sysmem\+Index\+Buffer are 0, the renderer will treat this \hyperlink{structACG_1_1RenderObject}{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\+ES)

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


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

\mbox{\Hypertarget{structACG_1_1RenderObject_a10a263d6c5dd73bf8133f59ae8792c7f}\label{structACG_1_1RenderObject_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{\texorpdfstring{vertex\+Array\+Object}{vertexArrayObject}}
{\footnotesize\ttfamily G\+Luint A\+C\+G\+::\+Render\+Object\+::vertex\+Array\+Object}



Use vertex array object. 

Optionally, a V\+AO 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\+AO 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 158 of file Render\+Object.\+hh.



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