\hypertarget{a01019}{\section{A\+C\+G\+:\+:Scene\+Graph\+:\+:G\+L\+S\+L\+:\+:Program Class Reference}
\label{a01019}\index{A\+C\+G\+::\+Scene\+Graph\+::\+G\+L\+S\+L\+::\+Program@{A\+C\+G\+::\+Scene\+Graph\+::\+G\+L\+S\+L\+::\+Program}}
}


\hyperlink{a03348}{G\+L\+S\+L} program class.  


\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_ac64c8a98c637add10ca66ab202f27886}{G\+Luint {\bfseries get\+Program\+Id} ()}\label{a01019_ac64c8a98c637add10ca66ab202f27886}

\end{DoxyCompactItemize}
\begin{Indent}{\bf Compilation/\+Linking}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_abf253c244fd7c881b187cfb2c4334aa1}{void {\bfseries attach} (\hyperlink{a01154}{Ptr\+Const\+Shader} \+\_\+shader)}\label{a01019_abf253c244fd7c881b187cfb2c4334aa1}

\item 
\hypertarget{a01019_a95bf0c7f81b61c626780493700c1c760}{void {\bfseries detach} (\hyperlink{a01154}{Ptr\+Const\+Shader} \+\_\+shader)}\label{a01019_a95bf0c7f81b61c626780493700c1c760}

\item 
\hypertarget{a01019_a0b46a4efda9911a14165a5c4c1bddd5c}{void {\bfseries link} ()}\label{a01019_a0b46a4efda9911a14165a5c4c1bddd5c}

\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Localizations}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_a6afb13fcb81565f9dc991762a1c4c564}{int {\bfseries get\+Attribute\+Location} (const char $\ast$\+\_\+name)}\label{a01019_a6afb13fcb81565f9dc991762a1c4c564}

\item 
\hypertarget{a01019_a020755d34008c8b0a757d9e0c2cf0374}{int {\bfseries get\+Uniform\+Location} (const char $\ast$\+\_\+name)}\label{a01019_a020755d34008c8b0a757d9e0c2cf0374}

\item 
\hypertarget{a01019_a9da780060ff4f4f4988592d5cbfe51aa}{int {\bfseries get\+Frag\+Data\+Location} (const char $\ast$\+\_\+name)}\label{a01019_a9da780060ff4f4f4988592d5cbfe51aa}

\item 
\hypertarget{a01019_a50525e2c17ec3655749c48f4424c9d39}{void {\bfseries bind\+Attribute\+Location} (unsigned int \+\_\+index, const char $\ast$\+\_\+name)}\label{a01019_a50525e2c17ec3655749c48f4424c9d39}

\item 
\hypertarget{a01019_a696bc500f156151fe45c28ca163cb262}{void {\bfseries bind\+Frag\+Data\+Location} (unsigned int \+\_\+index, const char $\ast$\+\_\+name)}\label{a01019_a696bc500f156151fe45c28ca163cb262}

\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Uniform setters}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_acbafad3d1bde1b6e833557322cd4974c}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, G\+Lint \+\_\+value)}\label{a01019_acbafad3d1bde1b6e833557322cd4974c}

\item 
\hypertarget{a01019_a5eedb99e0669ce934a67ee87f5226cbe}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec2i} \&\+\_\+value)}\label{a01019_a5eedb99e0669ce934a67ee87f5226cbe}

\item 
\hypertarget{a01019_ac6e64074d2b50102ad5b8905fbfe6aac}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec3i} \&\+\_\+value)}\label{a01019_ac6e64074d2b50102ad5b8905fbfe6aac}

\item 
\hypertarget{a01019_ade81ce0f4035da40e1fc3ba1e5a2aa6c}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01410}{A\+C\+G\+::\+Vec4i} \&\+\_\+value)}\label{a01019_ade81ce0f4035da40e1fc3ba1e5a2aa6c}

\item 
\hypertarget{a01019_ab52368970bb8610cd28be9c66c987e41}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, G\+Luint \+\_\+value)}\label{a01019_ab52368970bb8610cd28be9c66c987e41}

\item 
\hypertarget{a01019_aed43d26c7331bf18f235d11c5e763bd4}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec2ui} \&\+\_\+value)}\label{a01019_aed43d26c7331bf18f235d11c5e763bd4}

\item 
\hypertarget{a01019_a7109902d5ba82d0a37b776a89dd2f13c}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec3ui} \&\+\_\+value)}\label{a01019_a7109902d5ba82d0a37b776a89dd2f13c}

\item 
\hypertarget{a01019_a08d3246c165c9e46d3ef7956f045eee8}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec4ui} \&\+\_\+value)}\label{a01019_a08d3246c165c9e46d3ef7956f045eee8}

\item 
\hypertarget{a01019_ad19113c30a22f5cf362998ef0d49c2a6}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, G\+Lfloat \+\_\+value)}\label{a01019_ad19113c30a22f5cf362998ef0d49c2a6}

\item 
\hypertarget{a01019_a2d23ce0b159ee5ffe42f8ccbf317ca14}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec2f} \&\+\_\+value)}\label{a01019_a2d23ce0b159ee5ffe42f8ccbf317ca14}

\item 
\hypertarget{a01019_a2c1d63dff1ba50fba64e60cb43995c5e}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec3f} \&\+\_\+value)}\label{a01019_a2c1d63dff1ba50fba64e60cb43995c5e}

\item 
\hypertarget{a01019_a5db090d9d76fb580631dc216cdfb766d}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec4f} \&\+\_\+value)}\label{a01019_a5db090d9d76fb580631dc216cdfb766d}

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

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

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

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

\item 
\hypertarget{a01019_a7e225f1344210827052a66611f2b4561}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec2f} $\ast$\+\_\+values, int \+\_\+count)}\label{a01019_a7e225f1344210827052a66611f2b4561}

\item 
\hypertarget{a01019_ad8f87d76b6a067a75c75bd82d0f4979e}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec3f} $\ast$\+\_\+values, int \+\_\+count)}\label{a01019_ad8f87d76b6a067a75c75bd82d0f4979e}

\item 
\hypertarget{a01019_aeecb79cf95b4272e425bbaf35578d690}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, const \hyperlink{a01409}{A\+C\+G\+::\+Vec4f} $\ast$\+\_\+values, int \+\_\+count)}\label{a01019_aeecb79cf95b4272e425bbaf35578d690}

\item 
\hypertarget{a01019_a50081de034343d19416304b0740b26bf}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, int \+\_\+index, bool \+\_\+value)}\label{a01019_a50081de034343d19416304b0740b26bf}

\item 
\hypertarget{a01019_a928da6cbd740824d3d2d8dda99be72c5}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, int \+\_\+index, int \+\_\+value)}\label{a01019_a928da6cbd740824d3d2d8dda99be72c5}

\item 
\hypertarget{a01019_a65e2e5a27eeaee92fab57b4115134a89}{void {\bfseries set\+Uniform} (const char $\ast$\+\_\+name, int \+\_\+index, float \+\_\+value)}\label{a01019_a65e2e5a27eeaee92fab57b4115134a89}

\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Uniform buffer blocks}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_af6b7ba827ea70d0fb52d2169b31f4ecd}{G\+Luint {\bfseries get\+Uniform\+Block\+Index} (const char $\ast$\+\_\+name)}\label{a01019_af6b7ba827ea70d0fb52d2169b31f4ecd}

\item 
\hypertarget{a01019_afd394cfa6854819bd70d4f62027ff3be}{void {\bfseries set\+Uniform\+Block\+Binding} (G\+Luint \+\_\+index, int \+\_\+binding)}\label{a01019_afd394cfa6854819bd70d4f62027ff3be}

\item 
\hypertarget{a01019_aedf6f92eb31cc138d398f70546f9f256}{void {\bfseries set\+Uniform\+Block\+Binding} (const char $\ast$\+\_\+name, int \+\_\+binding)}\label{a01019_aedf6f92eb31cc138d398f70546f9f256}

\item 
\hypertarget{a01019_a9c3fc5e7998b3db708e1f2e254202893}{int {\bfseries get\+Uniform\+Block\+Size} (G\+Luint \+\_\+index)}\label{a01019_a9c3fc5e7998b3db708e1f2e254202893}

\item 
\hypertarget{a01019_a6557ccaa9744676ed7b29c29db57b484}{int {\bfseries get\+Uniform\+Block\+Size} (const char $\ast$\+\_\+name)}\label{a01019_a6557ccaa9744676ed7b29c29db57b484}

\item 
\hypertarget{a01019_a793fdf89efaa054f885fcece3df7420a}{void {\bfseries get\+Uniform\+Block\+Offsets} (int \+\_\+num\+Uniforms, const char $\ast$$\ast$\+\_\+names, int $\ast$\+\_\+out\+Offsets)}\label{a01019_a793fdf89efaa054f885fcece3df7420a}

\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Geometry shader parameters}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_ac6e04c701d48a6651ab579c0caf8143b}{void {\bfseries set\+Geometry\+Input\+Type} (G\+Lint \+\_\+type)}\label{a01019_ac6e04c701d48a6651ab579c0caf8143b}

\item 
\hypertarget{a01019_a699591122e4e066c4040bfd6240720b0}{void {\bfseries set\+Geometry\+Output\+Type} (G\+Lint \+\_\+type)}\label{a01019_a699591122e4e066c4040bfd6240720b0}

\item 
\hypertarget{a01019_aad6d99b138d4424e8075c455e7db942b}{void {\bfseries set\+Geometry\+Vertex\+Count} (G\+Lint \+\_\+num\+Vertices\+Out)}\label{a01019_aad6d99b138d4424e8075c455e7db942b}

\end{DoxyCompactItemize}
\end{Indent}
\begin{Indent}{\bf Enable/disable functions}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_a29440d28c4c21e8ae9fe09a3f3552304}{void {\bfseries use} ()}\label{a01019_a29440d28c4c21e8ae9fe09a3f3552304}

\item 
\hypertarget{a01019_ac71a6dd12bd50b16da697cd1249057e9}{void {\bfseries disable} ()}\label{a01019_ac71a6dd12bd50b16da697cd1249057e9}

\item 
\hypertarget{a01019_a593b46fb51d7f51ea2d01bd748560a03}{bool {\bfseries is\+Active} ()}\label{a01019_a593b46fb51d7f51ea2d01bd748560a03}

\item 
\hypertarget{a01019_a3cc18a680c1f282ba2bc9f93bf360170}{bool {\bfseries is\+Linked} ()}\label{a01019_a3cc18a680c1f282ba2bc9f93bf360170}

\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01019_ae9f40d38d36570cf9eedfe0bd76b3852}{std\+::list$<$ \hyperlink{a01154}{Ptr\+Const\+Shader} $>$ {\bfseries m\+\_\+linked\+Shaders}}\label{a01019_ae9f40d38d36570cf9eedfe0bd76b3852}

\item 
\hypertarget{a01019_a48e27c8ee955e7f3d9497b0b4c23f2c0}{G\+Lint {\bfseries m\+\_\+program\+Id}}\label{a01019_a48e27c8ee955e7f3d9497b0b4c23f2c0}

\item 
\hypertarget{a01019_a181e9d8dc70ecf3c7205c723a3935308}{G\+Lint {\bfseries m\+\_\+link\+Status}}\label{a01019_a181e9d8dc70ecf3c7205c723a3935308}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\hyperlink{a03348}{G\+L\+S\+L} program class. 

A \hyperlink{a03348}{G\+L\+S\+L} program links together the vertex and fragment shaders. 

Definition at line 217 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}
