\hypertarget{a00737}{\section{A\+C\+G\+:\+:Scene\+Graph\+:\+:A\+C\+G\+:\+:I\+Renderer Class Reference}
\label{a00737}\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{a00493}{Depth\+Map\+Pass}
\item 
struct \hyperlink{a00764}{Light\+Data}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{a00737_a324d31a754937164080b23e54a3a6bbe}{add\+Render\+Object} (\hyperlink{a01109}{Render\+Object} $\ast$\+\_\+render\+Object)
\begin{DoxyCompactList}\small\item\em Callback for the scenegraph nodes, which send new render objects via this function. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a6265c8a76dbbf5ec77c13edf2b083552}{add\+Light} (const \hyperlink{a00764}{Light\+Data} \&\+\_\+light)
\begin{DoxyCompactList}\small\item\em Callback for the scenegraph nodes, which send new lights to the renderer via this function. \end{DoxyCompactList}\item 
void \hyperlink{a00737_a6eaba43bce429e31e15b829039ff0022}{dump\+Render\+Objects\+To\+File} (const char $\ast$\+\_\+file\+Name, \hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$$\ast$\+\_\+sorted\+List=0) const 
\begin{DoxyCompactList}\small\item\em Debugging function to dump list of render objects into a file. \end{DoxyCompactList}\item 
virtual Q\+String \hyperlink{a00737_a28a45760f8e8d8a5234c6774fea5a817}{dump\+Current\+Render\+Objects\+To\+String} (\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$$\ast$\+\_\+list=0, bool \+\_\+output\+Shaders=false, std\+::vector$<$ \hyperlink{a01164}{A\+C\+G\+::\+Shader\+Modifier} $\ast$ $>$ $\ast$\+\_\+modifiers=0)
\begin{DoxyCompactList}\small\item\em Outputs the current render objects to the string. \end{DoxyCompactList}\item 
void \hyperlink{a00737_ab0838cff87588150b003d291522a3220}{set\+Error\+Detection\+Level} (int \+\_\+level)
\begin{DoxyCompactList}\small\item\em Control error detection for checking render objects. \end{DoxyCompactList}\item 
\hypertarget{a00737_a4e31ac38fa6ee96785e9b020fd24b3ea}{int \hyperlink{a00737_a4e31ac38fa6ee96785e9b020fd24b3ea}{get\+Error\+Detection\+Level} () const }\label{a00737_a4e31ac38fa6ee96785e9b020fd24b3ea}

\begin{DoxyCompactList}\small\item\em Get error detection level. \end{DoxyCompactList}\item 
void \hyperlink{a00737_a9d0dbf47fbb90b8c6185c94f1c155af8}{set\+Viewer\+I\+D} (int \+\_\+viewer\+I\+D)
\begin{DoxyCompactList}\small\item\em Set currently active viewer id. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{a00737_a655f157ff115d05514bbe070e443a851}{prepare\+Rendering\+Pipeline} (\hyperlink{a00642}{A\+C\+G\+::\+G\+L\+State} $\ast$\+\_\+gl\+State, \hyperlink{a00510}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode} \+\_\+draw\+Mode, \hyperlink{a00328}{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$\+\_\+scenegraph\+Root)
\begin{DoxyCompactList}\small\item\em Prepares renderer and Open\+G\+L for any draw-\/related calls including. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a92ef0b48237abe68a0315e0d630fdd68}{collect\+Render\+Objects} (\hyperlink{a00642}{A\+C\+G\+::\+G\+L\+State} $\ast$\+\_\+gl\+State, \hyperlink{a00510}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode} \+\_\+draw\+Mode, \hyperlink{a00328}{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$\+\_\+scene\+Graph\+Root)
\begin{DoxyCompactList}\small\item\em Traverse the scenegraph to collect render information. \end{DoxyCompactList}\item 
void \hyperlink{a00737_a5f7023c9a96734429864ba4fc3a1f993}{traverse\+Renderable\+Nodes} (\hyperlink{a00642}{A\+C\+G\+::\+G\+L\+State} $\ast$\+\_\+gl\+State, \hyperlink{a00510}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode} \+\_\+draw\+Mode, \hyperlink{a00328}{A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$\+\_\+node, const \hyperlink{a00790}{A\+C\+G\+::\+Scene\+Graph\+::\+Material} $\ast$\+\_\+mat)
\begin{DoxyCompactList}\small\item\em Scene graph traversal for render object collection. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a59db8da3beee718d37df58aa22a940f6}{sort\+Render\+Objects} ()
\begin{DoxyCompactList}\small\item\em Sort the renderobjects by priority. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a1c866267c6c6d9b1b7520d552cd2b997}{render\+Object} (\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$\+\_\+obj, \hyperlink{a01019}{G\+L\+S\+L\+::\+Program} $\ast$\+\_\+prog=0, bool \+\_\+const\+Render\+States=false, const std\+::vector$<$ unsigned int $>$ $\ast$\+\_\+shader\+Modifiers=0)
\begin{DoxyCompactList}\small\item\em Render one renderobject. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a1b125ef604a94e415cf34722c5baacc6}{bind\+Object\+V\+B\+O} (\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$\+\_\+obj, \hyperlink{a01019}{G\+L\+S\+L\+::\+Program} $\ast$\+\_\+prog)
\begin{DoxyCompactList}\small\item\em Binding V\+B\+Os (First state function) \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a051a3d9b9a35a7c6a9060e07993a8909}{bind\+Object\+Uniforms} (\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$\+\_\+obj, \hyperlink{a01019}{G\+L\+S\+L\+::\+Program} $\ast$\+\_\+prog)
\begin{DoxyCompactList}\small\item\em Binding Uniforms (Second state function) \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a52a7889ab065d6bf9bfff1b8125d488a}{bind\+Object\+Render\+States} (\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$\+\_\+obj)
\begin{DoxyCompactList}\small\item\em Binding Render state (Third state function) \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a4b0fd83b0e6ed538bf00bfe7c6434cc2}{draw\+Object} (\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$\+\_\+obj)
\begin{DoxyCompactList}\small\item\em Executes the opengl draw call for one object (Fourth function) \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_ae22237f3918c6633d3b0c91e346e5231}{finish\+Rendering\+Pipeline} (bool \+\_\+draw\+Overlay=true)
\begin{DoxyCompactList}\small\item\em Draw overlay objects and reset Open\+G\+L state. \end{DoxyCompactList}\item 
\hypertarget{a00737_a9622d860f7069a0416f5d3b620f82015}{virtual void \hyperlink{a00737_a9622d860f7069a0416f5d3b620f82015}{save\+Input\+Fbo} ()}\label{a00737_a9622d860f7069a0416f5d3b620f82015}

\begin{DoxyCompactList}\small\item\em Save input Fbo configuration (fbo id + viewport) \end{DoxyCompactList}\item 
\hypertarget{a00737_a2c132c0a72327971b580a303bec4dc55}{virtual void \hyperlink{a00737_a2c132c0a72327971b580a303bec4dc55}{restore\+Input\+Fbo} ()}\label{a00737_a2c132c0a72327971b580a303bec4dc55}

\begin{DoxyCompactList}\small\item\em Restore the previously saved input Fbo configuration (fbo id + viewport) \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_afa9ef610312c2d5d25b47966097157ec}{save\+Active\+Fbo} (G\+Lint $\ast$\+\_\+out\+Fbo\+Id, G\+Lint $\ast$\+\_\+out\+Viewport, G\+Lint $\ast$\+\_\+out\+Draw\+Buffer) const 
\begin{DoxyCompactList}\small\item\em Save active Fbo configuration (fbo id + viewport) \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a73531dc371a39c5fd9871e8e7cf3ff44}{restore\+Fbo} (G\+Lint \+\_\+fbo\+Id, const G\+Lint $\ast$\+\_\+out\+Viewport, G\+Lint \+\_\+draw\+Buffer) const 
\begin{DoxyCompactList}\small\item\em Restore a previously saved input Fbo configuration (fbo id + viewport) \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_aa79a59e2b8d22e1255efe2205fe6c194}{clear\+Input\+Fbo} (const \hyperlink{a01409}{A\+C\+G\+::\+Vec4f} \&\+\_\+clear\+Color)
\begin{DoxyCompactList}\small\item\em Clear input Fbo. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_a7f9c77aafd45734d4d52b4906d09b906}{copy\+Depth\+To\+Back\+Buffer} (G\+Luint \+\_\+depth\+Tex, float \+\_\+scale=1.\+0f)
\begin{DoxyCompactList}\small\item\em Copy texture to depth buffer. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00737_aa18ac9e3a8d34fd3a61663fe42b23c24}{render\+Depth\+Map} (int \+\_\+viewer\+I\+D, int \+\_\+width, int \+\_\+height)
\begin{DoxyCompactList}\small\item\em Render the depth map of the scene. \end{DoxyCompactList}\item 
\hypertarget{a00737_a13675f13ab91ea95ed8892f3cda24f4b}{int \hyperlink{a00737_a13675f13ab91ea95ed8892f3cda24f4b}{get\+Num\+Render\+Objects} () const }\label{a00737_a13675f13ab91ea95ed8892f3cda24f4b}

\begin{DoxyCompactList}\small\item\em Get the number of collected render objects (not including overlay objects or gl4.\+2 line objects) \end{DoxyCompactList}\item 
\hypertarget{a00737_aacde64dc99cc69ca70339eaad0f2ec44}{int \hyperlink{a00737_aacde64dc99cc69ca70339eaad0f2ec44}{get\+Num\+Overlay\+Objects} () const }\label{a00737_aacde64dc99cc69ca70339eaad0f2ec44}

\begin{DoxyCompactList}\small\item\em Get the number of render objects in the overlay (for instance objects from coordsys are overlayed) \end{DoxyCompactList}\item 
\hypertarget{a00737_a81f768d2e99a0be303df0bc97f02c009}{int \hyperlink{a00737_a81f768d2e99a0be303df0bc97f02c009}{get\+Num\+Line\+G\+L42\+Objects} () const }\label{a00737_a81f768d2e99a0be303df0bc97f02c009}

\begin{DoxyCompactList}\small\item\em Get the number of default line objects rendered with opengl 4.\+2. \end{DoxyCompactList}\item 
\hypertarget{a00737_ac96db160a2e070da8b14130e8b7c3484}{int \hyperlink{a00737_ac96db160a2e070da8b14130e8b7c3484}{get\+Num\+Lights} () const }\label{a00737_ac96db160a2e070da8b14130e8b7c3484}

\begin{DoxyCompactList}\small\item\em Get the number of current light sources. \end{DoxyCompactList}\item 
\hypertarget{a00737_af266fa3a203390282217fee5bdc13da7}{\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$ \hyperlink{a00737_af266fa3a203390282217fee5bdc13da7}{get\+Render\+Object} (int i)}\label{a00737_af266fa3a203390282217fee5bdc13da7}

\begin{DoxyCompactList}\small\item\em Get render objects in the sorted list by index (not including overlay objects) \end{DoxyCompactList}\item 
\hypertarget{a00737_a85a02591231460581b362bcc06214efa}{\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$ \hyperlink{a00737_a85a02591231460581b362bcc06214efa}{get\+Overlay\+Render\+Object} (int i)}\label{a00737_a85a02591231460581b362bcc06214efa}

\begin{DoxyCompactList}\small\item\em Get render objects in the sorted list by index (only overlay objects) \end{DoxyCompactList}\item 
\hypertarget{a00737_a6d21f7ab4c462e4cfe8f8f3dc79193d6}{\hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$ \hyperlink{a00737_a6d21f7ab4c462e4cfe8f8f3dc79193d6}{get\+Line\+G\+L42\+Render\+Object} (int i)}\label{a00737_a6d21f7ab4c462e4cfe8f8f3dc79193d6}

\begin{DoxyCompactList}\small\item\em Get render objects in the sorted list by index (only line objects rendered with gl4.\+2) \end{DoxyCompactList}\item 
\hypertarget{a00737_acb12816165b057089fa8591d10c40a21}{\hyperlink{a00764}{Light\+Data} $\ast$ \hyperlink{a00737_acb12816165b057089fa8591d10c40a21}{get\+Light} (int i)}\label{a00737_acb12816165b057089fa8591d10c40a21}

\begin{DoxyCompactList}\small\item\em Get light by index. \end{DoxyCompactList}\item 
\hypertarget{a00737_a2ca7bf22eaa85b8efe803436e77e00b7}{const \hyperlink{a01409}{A\+C\+G\+::\+Vec3f} \& \hyperlink{a00737_a2ca7bf22eaa85b8efe803436e77e00b7}{get\+Global\+Ambient\+Scale} () const }\label{a00737_a2ca7bf22eaa85b8efe803436e77e00b7}

\begin{DoxyCompactList}\small\item\em Get global ambient light contribution from G\+L\+\_\+\+L\+I\+G\+H\+T\+\_\+\+M\+O\+D\+E\+L\+\_\+\+A\+M\+B\+I\+E\+N\+T. \end{DoxyCompactList}\item 
void \hyperlink{a00737_ad848a3405dbf002e1a0180e16ed3b735}{set\+Line\+Thickness\+Rendering\+G\+L42} (bool \+\_\+enable)
\end{DoxyCompactItemize}
\subsection*{Static Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
static int \hyperlink{a00737_ad26899ce2e61417ba5253604ecf47359}{cmp\+Priority} (const void $\ast$, const void $\ast$)
\begin{DoxyCompactList}\small\item\em Compare priority of render objects. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00737_a88ae3021cd8fc7ae4a7ac054993063d0}{int \hyperlink{a00737_a88ae3021cd8fc7ae4a7ac054993063d0}{num\+Lights\+\_\+}}\label{a00737_a88ae3021cd8fc7ae4a7ac054993063d0}

\begin{DoxyCompactList}\small\item\em Number of Lights. \end{DoxyCompactList}\item 
\hypertarget{a00737_a64929d8caa73c542667ea26959a4610f}{\hyperlink{a00764}{Light\+Data} \hyperlink{a00737_a64929d8caa73c542667ea26959a4610f}{lights\+\_\+} \mbox{[}S\+G\+\_\+\+M\+A\+X\+\_\+\+S\+H\+A\+D\+E\+R\+\_\+\+L\+I\+G\+H\+T\+S\mbox{]}}\label{a00737_a64929d8caa73c542667ea26959a4610f}

\begin{DoxyCompactList}\small\item\em Light sources ( Filled by \hyperlink{a00737_a6265c8a76dbbf5ec77c13edf2b083552}{add\+Light()} ) \end{DoxyCompactList}\item 
\hyperlink{a01409}{A\+C\+G\+::\+Vec3f} \hyperlink{a00737_adf1cf7aef8592ffee557ea0177f1ae08}{global\+Light\+Model\+Ambient\+\_\+}
\item 
\hypertarget{a00737_a391863f39faa85a8a886a7167e580680}{std\+::vector$<$ \hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $>$ \hyperlink{a00737_a391863f39faa85a8a886a7167e580680}{render\+Objects\+\_\+}}\label{a00737_a391863f39faa85a8a886a7167e580680}

\begin{DoxyCompactList}\small\item\em array of renderobjects, filled by \hyperlink{a00737_a324d31a754937164080b23e54a3a6bbe}{add\+Render\+Object()} \end{DoxyCompactList}\item 
\hypertarget{a00737_ac90734b87b85e15225a8a44885fb23bd}{std\+::vector$<$ \hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$ $>$ \hyperlink{a00737_ac90734b87b85e15225a8a44885fb23bd}{sorted\+Objects\+\_\+}}\label{a00737_ac90734b87b85e15225a8a44885fb23bd}

\begin{DoxyCompactList}\small\item\em sorted list of renderobjects without overlay objects (sorted in rendering order) \end{DoxyCompactList}\item 
\hypertarget{a00737_a7f358bf87ba5bdaa53f13ceea3bfb59f}{std\+::vector$<$ \hyperlink{a01109}{A\+C\+G\+::\+Render\+Object} $\ast$ $>$ \hyperlink{a00737_a7f358bf87ba5bdaa53f13ceea3bfb59f}{overlay\+Objects\+\_\+}}\label{a00737_a7f358bf87ba5bdaa53f13ceea3bfb59f}

\begin{DoxyCompactList}\small\item\em sorted list of overlay-\/only renderobjects (sorted in rendering order) \end{DoxyCompactList}\item 
std\+::map$<$ int, \hyperlink{a00562}{A\+C\+G\+::\+F\+B\+O} $\ast$ $>$ \hyperlink{a00737_a51b0b35096bc8afb261f0df4de39e3ba}{depth\+Maps\+\_\+}
\item 
\hypertarget{a00737_a876bdd18c1c95230b7620dc42a5ffbb4}{bool \hyperlink{a00737_a876bdd18c1c95230b7620dc42a5ffbb4}{depth\+Map\+Used\+\_\+}}\label{a00737_a876bdd18c1c95230b7620dc42a5ffbb4}

\begin{DoxyCompactList}\small\item\em true if at least one renderobject requires a scene depthmap, false otherwise \end{DoxyCompactList}\item 
\hypertarget{a00737_a34abdfad65823d4b0f57bd59e0ad3423}{int \hyperlink{a00737_a34abdfad65823d4b0f57bd59e0ad3423}{cur\+Viewer\+I\+D\+\_\+}}\label{a00737_a34abdfad65823d4b0f57bd59e0ad3423}

\begin{DoxyCompactList}\small\item\em currently active viewer I\+D as specified in prepare\+Render\+Objects() \end{DoxyCompactList}\item 
\hypertarget{a00737_aa2432edc72dfd78b2020e92b7a92e8c8}{\hyperlink{a00637}{G\+L\+Matrixf} \hyperlink{a00737_aa2432edc72dfd78b2020e92b7a92e8c8}{view\+Matrix\+\_\+}}\label{a00737_aa2432edc72dfd78b2020e92b7a92e8c8}

\begin{DoxyCompactList}\small\item\em view transform \end{DoxyCompactList}\item 
\hypertarget{a00737_ae90ac5ee0f80ce7c8d509788ac5f4472}{\hyperlink{a01409}{Vec3f} \hyperlink{a00737_ae90ac5ee0f80ce7c8d509788ac5f4472}{cam\+Pos\+W\+S\+\_\+}}\label{a00737_ae90ac5ee0f80ce7c8d509788ac5f4472}

\begin{DoxyCompactList}\small\item\em cam position in world-\/space \end{DoxyCompactList}\item 
\hypertarget{a00737_a08e9ed19aa0d7a4318882ae73fc4f2bf}{\hyperlink{a01409}{Vec3f} \hyperlink{a00737_a08e9ed19aa0d7a4318882ae73fc4f2bf}{cam\+Dir\+W\+S\+\_\+}}\label{a00737_a08e9ed19aa0d7a4318882ae73fc4f2bf}

\begin{DoxyCompactList}\small\item\em direction the camera is looking to in world-\/space \end{DoxyCompactList}\item 
\hypertarget{a00737_a6dbcffde1708282904b2880534229dfb}{G\+Lint \hyperlink{a00737_a6dbcffde1708282904b2880534229dfb}{prev\+Fbo\+\_\+}}\label{a00737_a6dbcffde1708282904b2880534229dfb}

\begin{DoxyCompactList}\small\item\em previous fbo \end{DoxyCompactList}\item 
\hypertarget{a00737_af50842cc555d0e1d8bf2b08ad0a21f76}{G\+Lint \hyperlink{a00737_af50842cc555d0e1d8bf2b08ad0a21f76}{prev\+Draw\+Buffer\+\_\+}}\label{a00737_af50842cc555d0e1d8bf2b08ad0a21f76}

\begin{DoxyCompactList}\small\item\em previous drawbuffer target (ie G\+L\+\_\+\+B\+A\+C\+K, G\+L\+\_\+\+C\+O\+L\+O\+R\+\_\+\+A\+T\+T\+A\+C\+H\+M\+E\+N\+Ti...) \end{DoxyCompactList}\item 
\hypertarget{a00737_a90d835e3f0f53a85421ce47920801688}{G\+Lint \hyperlink{a00737_a90d835e3f0f53a85421ce47920801688}{prev\+Viewport\+\_\+} \mbox{[}4\mbox{]}}\label{a00737_a90d835e3f0f53a85421ce47920801688}

\begin{DoxyCompactList}\small\item\em previous viewport \end{DoxyCompactList}\item 
\hypertarget{a00737_a3691ecfbf9e3b6ee1cccd89e0f8894aa}{bool \hyperlink{a00737_a3691ecfbf9e3b6ee1cccd89e0f8894aa}{prev\+Fbo\+Saved\+\_\+}}\label{a00737_a3691ecfbf9e3b6ee1cccd89e0f8894aa}

\begin{DoxyCompactList}\small\item\em flag indicating a that save\+Current\+Fbo() has been called prior \hyperlink{a00737_a73531dc371a39c5fd9871e8e7cf3ff44}{restore\+Fbo()} \end{DoxyCompactList}\item 
\hypertarget{a00737_a3919a40a6ed352c6811609081f1833fb}{\hyperlink{a01019}{G\+L\+S\+L\+::\+Program} $\ast$ \hyperlink{a00737_a3919a40a6ed352c6811609081f1833fb}{depth\+Copy\+Shader\+\_\+}}\label{a00737_a3919a40a6ed352c6811609081f1833fb}

\begin{DoxyCompactList}\small\item\em shader copies depth of the first front layer to the back buffer \end{DoxyCompactList}\item 
\hypertarget{a00737_a446c2b8b0767ea3eaa2c521d951cab60}{int \hyperlink{a00737_a446c2b8b0767ea3eaa2c521d951cab60}{error\+Detection\+Level\+\_\+}}\label{a00737_a446c2b8b0767ea3eaa2c521d951cab60}

\begin{DoxyCompactList}\small\item\em error-\/detection level for checking render objects \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00737_a14809f045fef13689f1dcc268d571823}{void {\bfseries render\+Line\+Thickness\+G\+L42} ()}\label{a00737_a14809f045fef13689f1dcc268d571823}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
bool \hyperlink{a00737_afc6bf78f6a24d9d13195f80bbe41dc84}{enable\+Line\+Thickness\+G\+L42\+\_\+}
\begin{DoxyCompactList}\small\item\em Enable/disable gl4.\+2 based technique for rendering thick lines. \end{DoxyCompactList}\item 
\hypertarget{a00737_ae787d38d36d95f9ec22cfd518fe90017}{std\+::vector$<$ \hyperlink{a01109}{Render\+Object} $\ast$ $>$ \hyperlink{a00737_ae787d38d36d95f9ec22cfd518fe90017}{line\+G\+L42\+Objects\+\_\+}}\label{a00737_ae787d38d36d95f9ec22cfd518fe90017}

\begin{DoxyCompactList}\small\item\em default line render objects that are rendered with gl4.\+2 \end{DoxyCompactList}\item 
\hypertarget{a00737_aa8ecefc2f8f610dd47d04f07ac0e13be}{std\+::map$<$ int, \hyperlink{a01284}{Texture} $\ast$ $>$ \hyperlink{a00737_aa8ecefc2f8f610dd47d04f07ac0e13be}{line\+Color\+Buffers\+\_\+}}\label{a00737_aa8ecefc2f8f610dd47d04f07ac0e13be}

\begin{DoxyCompactList}\small\item\em map from viewport id to line buffer \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}


Definition at line 84 of file Mesh\+Node2\+T.\+cc.



\subsection{Member Function Documentation}
\hypertarget{a00737_a6265c8a76dbbf5ec77c13edf2b083552}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!add\+Light@{add\+Light}}
\index{add\+Light@{add\+Light}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{add\+Light}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::add\+Light (
\begin{DoxyParamCaption}
\item[{const {\bf Light\+Data} \&}]{\+\_\+light}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a00737_a6265c8a76dbbf5ec77c13edf2b083552}


Callback for the scenegraph nodes, which send new lights to the renderer via this function. 

Scenegraph nodes are able to add new light sources to the renderer with this function. To so, the node should implement get\+Render\+Objects() and call add\+Light in there. Light\+Nodes use this for example.


\begin{DoxyParams}{Parameters}
{\em \+\_\+light} & Newly added light \\
\hline
\end{DoxyParams}
\hypertarget{a00737_a324d31a754937164080b23e54a3a6bbe}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!add\+Render\+Object@{add\+Render\+Object}}
\index{add\+Render\+Object@{add\+Render\+Object}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{add\+Render\+Object}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::add\+Render\+Object (
\begin{DoxyParamCaption}
\item[{{\bf Render\+Object} $\ast$}]{\+\_\+render\+Object}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a00737_a324d31a754937164080b23e54a3a6bbe}


Callback for the scenegraph nodes, which send new render objects via this function. 

Add\+Render\+Object is typically called by a scenegraph nodes during the collection of renderable objects. A renderobject is a collection of opengl states, buffers and parameters, that correspond to exactly one draw call.

Creates another \hyperlink{a01109}{Render\+Object} instance internally, safe for temporary local \hyperlink{a01109}{Render\+Object} instances.

\begin{DoxyNote}{Note}
The \hyperlink{a01418}{Vertex\+Declaration} address must be permanently valid.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em \+\_\+render\+Object} & Newly added render object \\
\hline
\end{DoxyParams}
\hypertarget{a00737_a52a7889ab065d6bf9bfff1b8125d488a}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!bind\+Object\+Render\+States@{bind\+Object\+Render\+States}}
\index{bind\+Object\+Render\+States@{bind\+Object\+Render\+States}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{bind\+Object\+Render\+States}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::bind\+Object\+Render\+States (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Render\+Object} $\ast$}]{\+\_\+obj}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a52a7889ab065d6bf9bfff1b8125d488a}


Binding Render state (Third state function) 

This is the third function called by \hyperlink{a00737_a1c866267c6c6d9b1b7520d552cd2b997}{render\+Object()}.

Prepare the opengl state machine for a renderobject draw call.

This includes any gl\+Enable/gl\+Disable states, depth-\/cmp functions, blend equation.. \hypertarget{a00737_a051a3d9b9a35a7c6a9060e07993a8909}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!bind\+Object\+Uniforms@{bind\+Object\+Uniforms}}
\index{bind\+Object\+Uniforms@{bind\+Object\+Uniforms}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{bind\+Object\+Uniforms}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::bind\+Object\+Uniforms (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Render\+Object} $\ast$}]{\+\_\+obj, }
\item[{{\bf G\+L\+S\+L\+::\+Program} $\ast$}]{\+\_\+prog}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a051a3d9b9a35a7c6a9060e07993a8909}


Binding Uniforms (Second state function) 

This is the second function called by \hyperlink{a00737_a1c866267c6c6d9b1b7520d552cd2b997}{render\+Object()}.

Set common shader constants like model-\/view-\/projection matrix, material colors and light params. \hypertarget{a00737_a1b125ef604a94e415cf34722c5baacc6}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!bind\+Object\+V\+B\+O@{bind\+Object\+V\+B\+O}}
\index{bind\+Object\+V\+B\+O@{bind\+Object\+V\+B\+O}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{bind\+Object\+V\+B\+O}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::bind\+Object\+V\+B\+O (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Render\+Object} $\ast$}]{\+\_\+obj, }
\item[{{\bf G\+L\+S\+L\+::\+Program} $\ast$}]{\+\_\+prog}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a1b125ef604a94e415cf34722c5baacc6}


Binding V\+B\+Os (First state function) 

This is the first function called by \hyperlink{a00737_a1c866267c6c6d9b1b7520d552cd2b997}{render\+Object()}.

It binds vertex, index buffer and vertex format of a render object. \hypertarget{a00737_aa79a59e2b8d22e1255efe2205fe6c194}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!clear\+Input\+Fbo@{clear\+Input\+Fbo}}
\index{clear\+Input\+Fbo@{clear\+Input\+Fbo}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{clear\+Input\+Fbo}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::clear\+Input\+Fbo (
\begin{DoxyParamCaption}
\item[{const {\bf A\+C\+G\+::\+Vec4f} \&}]{\+\_\+clear\+Color}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_aa79a59e2b8d22e1255efe2205fe6c194}


Clear input Fbo. 

Clears color and depth buffer of input Fbo (using a scissor test to only clear viewport area). 
\begin{DoxyParams}{Parameters}
{\em \+\_\+clear\+Color} & clear color \\
\hline
\end{DoxyParams}
\hypertarget{a00737_ad26899ce2e61417ba5253604ecf47359}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!cmp\+Priority@{cmp\+Priority}}
\index{cmp\+Priority@{cmp\+Priority}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{cmp\+Priority}]{\setlength{\rightskip}{0pt plus 5cm}static int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::cmp\+Priority (
\begin{DoxyParamCaption}
\item[{const void $\ast$}]{, }
\item[{const void $\ast$}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [protected]}}}\label{a00737_ad26899ce2e61417ba5253604ecf47359}


Compare priority of render objects. 

compare function for qsort. This is required to compare render objects based on their prioerity and render them in the right order \hypertarget{a00737_a92ef0b48237abe68a0315e0d630fdd68}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!collect\+Render\+Objects@{collect\+Render\+Objects}}
\index{collect\+Render\+Objects@{collect\+Render\+Objects}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{collect\+Render\+Objects}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::collect\+Render\+Objects (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} $\ast$}]{\+\_\+gl\+State, }
\item[{{\bf A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode}}]{\+\_\+draw\+Mode, }
\item[{{\bf A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$}]{\+\_\+scene\+Graph\+Root}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a92ef0b48237abe68a0315e0d630fdd68}


Traverse the scenegraph to collect render information. 

Traverses the scenegraph and calls the get\+Render\+Object function of each node. Each node can then add multiple renderobjects via add\+Render\+Object to this renderer.

Also collects all light sources in the scenegraph. The currently active list of renderobjects is invalidated too. \hypertarget{a00737_a7f9c77aafd45734d4d52b4906d09b906}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!copy\+Depth\+To\+Back\+Buffer@{copy\+Depth\+To\+Back\+Buffer}}
\index{copy\+Depth\+To\+Back\+Buffer@{copy\+Depth\+To\+Back\+Buffer}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{copy\+Depth\+To\+Back\+Buffer}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::copy\+Depth\+To\+Back\+Buffer (
\begin{DoxyParamCaption}
\item[{G\+Luint}]{\+\_\+depth\+Tex, }
\item[{float}]{\+\_\+scale = {\ttfamily 1.0f}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a7f9c77aafd45734d4d52b4906d09b906}


Copy texture to depth buffer. 

Copies depth values from a texture to the input depth buffer. These are the changes made to the Open\+G\+L state, which are not restored upon return\+:
\begin{DoxyItemize}
\item active texture stage is 0 with \+\_\+depth\+Tex bound
\item internal shader program active
\item internal screen quad vbo active
\item filling mode is set to gl\+Polygon\+Mode(\+G\+L\+\_\+\+F\+R\+O\+N\+T, G\+L\+\_\+\+F\+I\+L\+L)
\end{DoxyItemize}


\begin{DoxyParams}{Parameters}
{\em \+\_\+depth\+Tex} & texture containing depth values \\
\hline
{\em \+\_\+scale} & scaling factor for the depth values from \+\_\+depth\+Tex \\
\hline
\end{DoxyParams}
\hypertarget{a00737_a4b0fd83b0e6ed538bf00bfe7c6434cc2}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!draw\+Object@{draw\+Object}}
\index{draw\+Object@{draw\+Object}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{draw\+Object}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::draw\+Object (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Render\+Object} $\ast$}]{\+\_\+obj}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a4b0fd83b0e6ed538bf00bfe7c6434cc2}


Executes the opengl draw call for one object (Fourth function) 

This is the fourth function called by \hyperlink{a00737_a1c866267c6c6d9b1b7520d552cd2b997}{render\+Object()}.

Executes one draw call for the given render object \hypertarget{a00737_a28a45760f8e8d8a5234c6774fea5a817}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!dump\+Current\+Render\+Objects\+To\+String@{dump\+Current\+Render\+Objects\+To\+String}}
\index{dump\+Current\+Render\+Objects\+To\+String@{dump\+Current\+Render\+Objects\+To\+String}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{dump\+Current\+Render\+Objects\+To\+String}]{\setlength{\rightskip}{0pt plus 5cm}virtual Q\+String A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::dump\+Current\+Render\+Objects\+To\+String (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Render\+Object} $\ast$$\ast$}]{\+\_\+list = {\ttfamily 0}, }
\item[{bool}]{\+\_\+output\+Shaders = {\ttfamily false}, }
\item[{std\+::vector$<$ {\bf A\+C\+G\+::\+Shader\+Modifier} $\ast$ $>$ $\ast$}]{\+\_\+modifiers = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{a00737_a28a45760f8e8d8a5234c6774fea5a817}


Outputs the current render objects to the string. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+list} & Pointer to a list of render objects used for output (defaults to unsorted internal list) \\
\hline
{\em \+\_\+output\+Shaders} & Output the shaders used for the objects? \\
\hline
{\em \+\_\+modifiers} & Pointer to vector of registered \hyperlink{a01164}{Shader\+Modifier} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Render object data in a Q\+String 
\end{DoxyReturn}
\hypertarget{a00737_a6eaba43bce429e31e15b829039ff0022}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!dump\+Render\+Objects\+To\+File@{dump\+Render\+Objects\+To\+File}}
\index{dump\+Render\+Objects\+To\+File@{dump\+Render\+Objects\+To\+File}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{dump\+Render\+Objects\+To\+File}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::dump\+Render\+Objects\+To\+File (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{\+\_\+file\+Name, }
\item[{{\bf A\+C\+G\+::\+Render\+Object} $\ast$$\ast$}]{\+\_\+sorted\+List = {\ttfamily 0}}
\end{DoxyParamCaption}
) const}}\label{a00737_a6eaba43bce429e31e15b829039ff0022}


Debugging function to dump list of render objects into a file. 

Dump list of render objects to text file. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+file\+Name} & name of text file to write to \\
\hline
{\em \+\_\+sorted\+List} & dump sorted render objects in order, may be 0 to use the unsorted list instead \\
\hline
\end{DoxyParams}
\hypertarget{a00737_ae22237f3918c6633d3b0c91e346e5231}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!finish\+Rendering\+Pipeline@{finish\+Rendering\+Pipeline}}
\index{finish\+Rendering\+Pipeline@{finish\+Rendering\+Pipeline}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{finish\+Rendering\+Pipeline}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::finish\+Rendering\+Pipeline (
\begin{DoxyParamCaption}
\item[{bool}]{\+\_\+draw\+Overlay = {\ttfamily true}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_ae22237f3918c6633d3b0c91e346e5231}


Draw overlay objects and reset Open\+G\+L state. 

Optionally renders overlay objects. Resets critical Open\+G\+L states to default to prevent crashes.
\begin{DoxyItemize}
\item deactivate framebuffer
\item disable shaders
\item disable vbo 
\end{DoxyItemize}\hypertarget{a00737_a655f157ff115d05514bbe070e443a851}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!prepare\+Rendering\+Pipeline@{prepare\+Rendering\+Pipeline}}
\index{prepare\+Rendering\+Pipeline@{prepare\+Rendering\+Pipeline}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{prepare\+Rendering\+Pipeline}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::prepare\+Rendering\+Pipeline (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} $\ast$}]{\+\_\+gl\+State, }
\item[{{\bf A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode}}]{\+\_\+draw\+Mode, }
\item[{{\bf A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$}]{\+\_\+scenegraph\+Root}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a655f157ff115d05514bbe070e443a851}


Prepares renderer and Open\+G\+L for any draw-\/related calls including. 

Prepares renderer and Open\+G\+L for any draw-\/related calls including\+:
\begin{DoxyItemize}
\item collecting renderobjects ( \hyperlink{a00737_a92ef0b48237abe68a0315e0d630fdd68}{collect\+Render\+Objects()} )
\item sorting renderobjects ( \hyperlink{a00737_a59db8da3beee718d37df58aa22a940f6}{sort\+Render\+Objects()} )
\item resetting Open\+G\+L state machine for shader-\/based rendering
\end{DoxyItemize}


\begin{DoxyParams}{Parameters}
{\em \+\_\+gl\+State} & pointer to glstate \\
\hline
{\em \+\_\+draw\+Mode} & default drawmode \\
\hline
{\em \+\_\+scenegraph\+Root} & root node of scenegraph \\
\hline
\end{DoxyParams}
\hypertarget{a00737_aa18ac9e3a8d34fd3a61663fe42b23c24}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!render\+Depth\+Map@{render\+Depth\+Map}}
\index{render\+Depth\+Map@{render\+Depth\+Map}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{render\+Depth\+Map}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::render\+Depth\+Map (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+viewer\+I\+D, }
\item[{int}]{\+\_\+width, }
\item[{int}]{\+\_\+height}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_aa18ac9e3a8d34fd3a61663fe42b23c24}


Render the depth map of the scene. 

When setting up a shader of a render-\/object, a scenegraph node can use the depth map for custom rendering techniques. If at least one render object calls this function, the depth map is later rendered before the scene pass. and bound to the shader of an renderobject in bind\+Object\+Uniforms according to the provided \char`\"{}depth\+Map\+Uniform\+Name\char`\"{}. Depth Map format\+: G\+L\+\_\+\+T\+E\+X\+T\+U\+R\+E\+\_\+2\+D, G\+L\+\_\+\+R32\+F, depth value = gl\+\_\+\+Frag\+Coord.\+z This function is automatically called in \hyperlink{a00737_a655f157ff115d05514bbe070e443a851}{prepare\+Rendering\+Pipeline()} when required.


\begin{DoxyParams}{Parameters}
{\em \+\_\+viewer\+I\+D} & id of viewport, \\
\hline
{\em \+\_\+width} & viewport width \\
\hline
{\em \+\_\+height} & viewport height \\
\hline
\end{DoxyParams}
\hypertarget{a00737_a1c866267c6c6d9b1b7520d552cd2b997}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!render\+Object@{render\+Object}}
\index{render\+Object@{render\+Object}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{render\+Object}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::render\+Object (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Render\+Object} $\ast$}]{\+\_\+obj, }
\item[{{\bf G\+L\+S\+L\+::\+Program} $\ast$}]{\+\_\+prog = {\ttfamily 0}, }
\item[{bool}]{\+\_\+const\+Render\+States = {\ttfamily false}, }
\item[{const std\+::vector$<$ unsigned int $>$ $\ast$}]{\+\_\+shader\+Modifiers = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a1c866267c6c6d9b1b7520d552cd2b997}


Render one renderobject. 

Fully prepares opengl for a renderobject and executes the draw call. This combines bind\+Object\+V\+B\+O, bind\+Object\+Uniforms...

Optionally render-\/states may not be changed, in case depth-\/peeling or similar global shader operations may require a fixed state setting.

Shader modifiers can be combined and applied to this pass. \hypertarget{a00737_a73531dc371a39c5fd9871e8e7cf3ff44}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!restore\+Fbo@{restore\+Fbo}}
\index{restore\+Fbo@{restore\+Fbo}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{restore\+Fbo}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::restore\+Fbo (
\begin{DoxyParamCaption}
\item[{G\+Lint}]{\+\_\+fbo\+Id, }
\item[{const G\+Lint $\ast$}]{\+\_\+out\+Viewport, }
\item[{G\+Lint}]{\+\_\+draw\+Buffer}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a73531dc371a39c5fd9871e8e7cf3ff44}


Restore a previously saved input Fbo configuration (fbo id + viewport) 


\begin{DoxyParams}{Parameters}
{\em \+\_\+fbo\+Id} & fbo id \\
\hline
{\em \+\_\+out\+Viewport} & \mbox{[}in\mbox{]} pointer to address of 4 G\+Lint values receiving the currently active viewport \\
\hline
{\em \+\_\+draw\+Buffer} & draw-\/buffer target of fbo \\
\hline
\end{DoxyParams}
\hypertarget{a00737_afa9ef610312c2d5d25b47966097157ec}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!save\+Active\+Fbo@{save\+Active\+Fbo}}
\index{save\+Active\+Fbo@{save\+Active\+Fbo}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{save\+Active\+Fbo}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::save\+Active\+Fbo (
\begin{DoxyParamCaption}
\item[{G\+Lint $\ast$}]{\+\_\+out\+Fbo\+Id, }
\item[{G\+Lint $\ast$}]{\+\_\+out\+Viewport, }
\item[{G\+Lint $\ast$}]{\+\_\+out\+Draw\+Buffer}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_afa9ef610312c2d5d25b47966097157ec}


Save active Fbo configuration (fbo id + viewport) 


\begin{DoxyParams}{Parameters}
{\em \+\_\+out\+Fbo\+Id} & \mbox{[}out\mbox{]} pointer to address receiving the currently active fbo id \\
\hline
{\em \+\_\+out\+Viewport} & \mbox{[}out\mbox{]} pointer to address of 4 G\+Lint values receiving the currently active viewport \\
\hline
{\em \+\_\+out\+Draw\+Buffer} & \mbox{[}out\mbox{]} pointer to address receiving the currently active drawbuffer target (ie G\+L\+\_\+\+B\+A\+C\+K, G\+L\+\_\+\+C\+O\+L\+O\+R\+\_\+\+A\+T\+T\+A\+C\+H\+M\+E\+N\+Ti ..) \\
\hline
\end{DoxyParams}
\hypertarget{a00737_ab0838cff87588150b003d291522a3220}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!set\+Error\+Detection\+Level@{set\+Error\+Detection\+Level}}
\index{set\+Error\+Detection\+Level@{set\+Error\+Detection\+Level}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{set\+Error\+Detection\+Level}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::set\+Error\+Detection\+Level (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+level}
\end{DoxyParamCaption}
)}}\label{a00737_ab0838cff87588150b003d291522a3220}


Control error detection for checking render objects. 

Levels\+: 0 -\/ disable error detection 1 -\/ fast check (obvious stuff that does not require much time to check) 2 -\/ intensive check (do additional check, possibly false positives and impact on performance)

Default level is 1


\begin{DoxyParams}{Parameters}
{\em \+\_\+level} & detection level \\
\hline
\end{DoxyParams}
\hypertarget{a00737_ad848a3405dbf002e1a0180e16ed3b735}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!set\+Line\+Thickness\+Rendering\+G\+L42@{set\+Line\+Thickness\+Rendering\+G\+L42}}
\index{set\+Line\+Thickness\+Rendering\+G\+L42@{set\+Line\+Thickness\+Rendering\+G\+L42}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{set\+Line\+Thickness\+Rendering\+G\+L42}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::set\+Line\+Thickness\+Rendering\+G\+L42 (
\begin{DoxyParamCaption}
\item[{bool}]{\+\_\+enable}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}}\label{a00737_ad848a3405dbf002e1a0180e16ed3b735}
Enable/disable line thickness rendering with opengl4.\+2

Instead of quad extrusion in a geometry shader, thick lines are manually rasterized in a load/store image. This image is then composited with the back buffer. If the gpu does not support image load/store, the default quad extrusion is used anyway and this function has no effect.


\begin{DoxyParams}{Parameters}
{\em \+\_\+enable} & enable/disable \\
\hline
\end{DoxyParams}
\hypertarget{a00737_a9d0dbf47fbb90b8c6185c94f1c155af8}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!set\+Viewer\+I\+D@{set\+Viewer\+I\+D}}
\index{set\+Viewer\+I\+D@{set\+Viewer\+I\+D}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{set\+Viewer\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::set\+Viewer\+I\+D (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+viewer\+I\+D}
\end{DoxyParamCaption}
)}}\label{a00737_a9d0dbf47fbb90b8c6185c94f1c155af8}


Set currently active viewer id. 

If the scenegraph makes use of the z-\/prepass feature and the application uses multiple viewports, the currently active viewport should be set prior rendering. Otherwise, this function can be ignored.


\begin{DoxyParams}{Parameters}
{\em \+\_\+viewer\+I\+D} & unique id of the current viewport (i.\+e. Viewer\+Properties\+::viewer\+I\+D() ) \\
\hline
\end{DoxyParams}
\hypertarget{a00737_a59db8da3beee718d37df58aa22a940f6}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!sort\+Render\+Objects@{sort\+Render\+Objects}}
\index{sort\+Render\+Objects@{sort\+Render\+Objects}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{sort\+Render\+Objects}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::sort\+Render\+Objects (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}}}\label{a00737_a59db8da3beee718d37df58aa22a940f6}


Sort the renderobjects by priority. 

Sort array of renderobjects by priority and store the result in sorted\+Objects\+\_\+. \hypertarget{a00737_a5f7023c9a96734429864ba4fc3a1f993}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!traverse\+Renderable\+Nodes@{traverse\+Renderable\+Nodes}}
\index{traverse\+Renderable\+Nodes@{traverse\+Renderable\+Nodes}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{traverse\+Renderable\+Nodes}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::traverse\+Renderable\+Nodes (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+G\+L\+State} $\ast$}]{\+\_\+gl\+State, }
\item[{{\bf A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode}}]{\+\_\+draw\+Mode, }
\item[{{\bf A\+C\+G\+::\+Scene\+Graph\+::\+Base\+Node} $\ast$}]{\+\_\+node, }
\item[{const {\bf A\+C\+G\+::\+Scene\+Graph\+::\+Material} $\ast$}]{\+\_\+mat}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}}\label{a00737_a5f7023c9a96734429864ba4fc3a1f993}


Scene graph traversal for render object collection. 

Calls get\+Render\+Objects on each node of the scenegraph recursively.\+Calls get\+Render\+Objects on each node of the scenegraph recursively. Each node then triggers the callbacks. 

\subsection{Member Data Documentation}
\hypertarget{a00737_a51b0b35096bc8afb261f0df4de39e3ba}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!depth\+Maps\+\_\+@{depth\+Maps\+\_\+}}
\index{depth\+Maps\+\_\+@{depth\+Maps\+\_\+}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{depth\+Maps\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}std\+::map$<$int, {\bf A\+C\+G\+::\+F\+B\+O}$\ast$$>$ A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::depth\+Maps\+\_\+\hspace{0.3cm}{\ttfamily [protected]}}}\label{a00737_a51b0b35096bc8afb261f0df4de39e3ba}
Stores fbo containing a depth map for each viewport. The depth map is computed in a z-\/prepass if at least one \hyperlink{a01109}{Render\+Object} makes use of the scene depth map. (optional convenience feature) 

Definition at line 473 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a00737_afc6bf78f6a24d9d13195f80bbe41dc84}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!enable\+Line\+Thickness\+G\+L42\+\_\+@{enable\+Line\+Thickness\+G\+L42\+\_\+}}
\index{enable\+Line\+Thickness\+G\+L42\+\_\+@{enable\+Line\+Thickness\+G\+L42\+\_\+}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{enable\+Line\+Thickness\+G\+L42\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}bool A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::enable\+Line\+Thickness\+G\+L42\+\_\+\hspace{0.3cm}{\ttfamily [private]}}}\label{a00737_afc6bf78f6a24d9d13195f80bbe41dc84}


Enable/disable gl4.\+2 based technique for rendering thick lines. 

If enabled, default line objects are not returned via \hyperlink{a00737_af266fa3a203390282217fee5bdc13da7}{get\+Render\+Object()}, but are rendered in \hyperlink{a00737_ae22237f3918c6633d3b0c91e346e5231}{finish\+Rendering\+Pipeline()} just before drawing overlays. 

Definition at line 519 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a00737_adf1cf7aef8592ffee557ea0177f1ae08}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}!global\+Light\+Model\+Ambient\+\_\+@{global\+Light\+Model\+Ambient\+\_\+}}
\index{global\+Light\+Model\+Ambient\+\_\+@{global\+Light\+Model\+Ambient\+\_\+}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer}}
\subsubsection[{global\+Light\+Model\+Ambient\+\_\+}]{\setlength{\rightskip}{0pt plus 5cm}{\bf A\+C\+G\+::\+Vec3f} A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::global\+Light\+Model\+Ambient\+\_\+\hspace{0.3cm}{\ttfamily [protected]}}}\label{a00737_adf1cf7aef8592ffee557ea0177f1ae08}
ambient color scale for global light\+: this is set via gl\+Light\+Model(\+G\+L\+\_\+\+L\+I\+G\+H\+T\+\_\+\+M\+O\+D\+E\+L\+\_\+\+A\+M\+B\+I\+E\+N\+T, scale) 

Definition at line 456 of file Mesh\+Node2\+T.\+cc.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+Scenegraph/Mesh\+Node2\+T.\+cc\end{DoxyCompactItemize}
