\hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{}\doxysection{Ogre\+::G\+L\+SL\+::G\+L\+S\+L\+Link\+Program\+Manager Class Reference}
\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}


{\ttfamily \#include $<$Ogre\+G\+L\+S\+L\+Link\+Program\+Manager.\+h$>$}



Inheritance diagram for Ogre\+::G\+L\+SL\+::G\+L\+S\+L\+Link\+Program\+Manager\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager__inherit__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_aa19f5f6782aa02ef1486de45d13e2646}{G\+L\+S\+L\+Link\+Program\+Manager}} (void)
\item 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a240412fc8977a7de077756fb280abbfc}{$\sim$\+G\+L\+S\+L\+Link\+Program\+Manager}} (void)
\item 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_program_manager_common_af0074b30d327b54e5f352ca64612a043}{destroy\+All\+By\+Shader}} (\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_shader_common}{G\+L\+S\+L\+Shader\+Common}} $\ast$shader)
\begin{DoxyCompactList}\small\item\em Destroy all programs which referencing this shader. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_program_manager_common_ae8a109b69705dcab009b69f6334c58b1}{extract\+Uniforms\+From\+G\+L\+SL}} (const \mbox{\hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}} \&src, \mbox{\hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants}} \&constant\+Defs, const \mbox{\hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}} \&filename)
\begin{DoxyCompactList}\small\item\em Populate a list of uniforms based on \mbox{\hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL}} source and store them in \mbox{\hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants}}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program}{G\+L\+S\+L\+Link\+Program}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a0e53b3cfa2d6953dfa256d6be2edad23}{get\+Active\+Link\+Program}} (void)
\begin{DoxyCompactList}\small\item\em Get the program object that links the two active shader objects together if a program object was not already created and linked a new one is created and linked. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a539589e8cad521c68267365856b703e5}{set\+Active\+Shader}} (\mbox{\hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type}} type, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$gpu\+Program)
\begin{DoxyCompactList}\small\item\em Set the active fragment shader for the next rendering state. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a131bff56193f87fd404488f91a6ddb60}{extract\+Uniforms}} (G\+Lhandle\+A\+RB program\+Object, const \mbox{\hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map}} $\ast$vertex\+Constant\+Defs, const \mbox{\hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map}} $\ast$geometry\+Constant\+Defs, const \mbox{\hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map}} $\ast$fragment\+Constant\+Defs, \mbox{\hyperlink{namespace_ogre_ab6bb0d65dc078300d6e0459f926292b4}{G\+L\+Uniform\+Reference\+List}} \&\mbox{\hyperlink{struct_ogre_1_1list}{list}})
\begin{DoxyCompactList}\small\item\em Populate a list of uniforms based on a program object. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{G\+L\+S\+L\+Link\+Program\+Manager}} \& \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a1ef283a86b06d0ebfb0ce1dbf085c9b4}{get\+Singleton}} (void)
\item 
static \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{G\+L\+S\+L\+Link\+Program\+Manager}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a7206d3a68127a05f37b7e4fde979490b}{get\+Singleton\+Ptr}} (void)
\end{DoxyCompactItemize}


\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_aa19f5f6782aa02ef1486de45d13e2646}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_aa19f5f6782aa02ef1486de45d13e2646}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!GLSLLinkProgramManager@{GLSLLinkProgramManager}}
\index{GLSLLinkProgramManager@{GLSLLinkProgramManager}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{GLSLLinkProgramManager()}{GLSLLinkProgramManager()}}
{\footnotesize\ttfamily Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::\+G\+L\+S\+L\+Link\+Program\+Manager (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a240412fc8977a7de077756fb280abbfc}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a240412fc8977a7de077756fb280abbfc}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!````~GLSLLinkProgramManager@{$\sim$GLSLLinkProgramManager}}
\index{````~GLSLLinkProgramManager@{$\sim$GLSLLinkProgramManager}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{$\sim$GLSLLinkProgramManager()}{~GLSLLinkProgramManager()}}
{\footnotesize\ttfamily Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::$\sim$\+G\+L\+S\+L\+Link\+Program\+Manager (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a0e53b3cfa2d6953dfa256d6be2edad23}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a0e53b3cfa2d6953dfa256d6be2edad23}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!getActiveLinkProgram@{getActiveLinkProgram}}
\index{getActiveLinkProgram@{getActiveLinkProgram}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{getActiveLinkProgram()}{getActiveLinkProgram()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program}{G\+L\+S\+L\+Link\+Program}}$\ast$ Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::get\+Active\+Link\+Program (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Get the program object that links the two active shader objects together if a program object was not already created and linked a new one is created and linked. 

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a539589e8cad521c68267365856b703e5}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a539589e8cad521c68267365856b703e5}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!setActiveShader@{setActiveShader}}
\index{setActiveShader@{setActiveShader}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{setActiveShader()}{setActiveShader()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::set\+Active\+Shader (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type}}}]{type,  }\item[{\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$}]{gpu\+Program }\end{DoxyParamCaption})}



Set the active fragment shader for the next rendering state. 

The active program object will be cleared. Normally called from the \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_gpu_program_a8448f53facf57d527a1121b89fb541ce}{G\+L\+S\+L\+Gpu\+Program\+::bind\+Program}} and unbind\+Program methods \mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a131bff56193f87fd404488f91a6ddb60}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a131bff56193f87fd404488f91a6ddb60}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!extractUniforms@{extractUniforms}}
\index{extractUniforms@{extractUniforms}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{extractUniforms()}{extractUniforms()}}
{\footnotesize\ttfamily static void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::extract\+Uniforms (\begin{DoxyParamCaption}\item[{G\+Lhandle\+A\+RB}]{program\+Object,  }\item[{const \mbox{\hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map}} $\ast$}]{vertex\+Constant\+Defs,  }\item[{const \mbox{\hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map}} $\ast$}]{geometry\+Constant\+Defs,  }\item[{const \mbox{\hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map}} $\ast$}]{fragment\+Constant\+Defs,  }\item[{\mbox{\hyperlink{namespace_ogre_ab6bb0d65dc078300d6e0459f926292b4}{G\+L\+Uniform\+Reference\+List}} \&}]{list }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Populate a list of uniforms based on a program object. 


\begin{DoxyParams}{Parameters}
{\em program\+Object} & Handle to the program object to query \\
\hline
{\em vertex\+Constant\+Defs} & Definition of the constants extracted from the vertex program, used to match up physical buffer indexes with program uniforms. May be null if there is no vertex program. \\
\hline
{\em geometry\+Constant\+Defs} & Definition of the constants extracted from the geometry program, used to match up physical buffer indexes with program uniforms. May be null if there is no geometry program. \\
\hline
{\em fragment\+Constant\+Defs} & Definition of the constants extracted from the fragment program, used to match up physical buffer indexes with program uniforms. May be null if there is no fragment program. \\
\hline
{\em list} & The list to populate (will not be cleared before adding, clear it yourself before calling this if that\textquotesingle{}s what you want). \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a1ef283a86b06d0ebfb0ce1dbf085c9b4}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a1ef283a86b06d0ebfb0ce1dbf085c9b4}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!getSingleton@{getSingleton}}
\index{getSingleton@{getSingleton}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{getSingleton()}{getSingleton()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{G\+L\+S\+L\+Link\+Program\+Manager}}\& Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::get\+Singleton (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a7206d3a68127a05f37b7e4fde979490b}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a7206d3a68127a05f37b7e4fde979490b}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!getSingletonPtr@{getSingletonPtr}}
\index{getSingletonPtr@{getSingletonPtr}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{getSingletonPtr()}{getSingletonPtr()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{G\+L\+S\+L\+Link\+Program\+Manager}}$\ast$ Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::get\+Singleton\+Ptr (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_manager_common_ae8a109b69705dcab009b69f6334c58b1}\label{class_ogre_1_1_g_l_s_l_program_manager_common_ae8a109b69705dcab009b69f6334c58b1}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!extractUniformsFromGLSL@{extractUniformsFromGLSL}}
\index{extractUniformsFromGLSL@{extractUniformsFromGLSL}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{extractUniformsFromGLSL()}{extractUniformsFromGLSL()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+Program\+Manager\+Common\+::extract\+Uniforms\+From\+G\+L\+SL (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}} \&}]{src,  }\item[{\mbox{\hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants}} \&}]{constant\+Defs,  }\item[{const \mbox{\hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}} \&}]{filename }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}



Populate a list of uniforms based on \mbox{\hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL}} source and store them in \mbox{\hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants}}. 

~\newline
 
\begin{DoxyParams}{Parameters}
{\em src} & Reference to the source code. \\
\hline
{\em constant\+Defs} & The defs to populate (will not be cleared before adding, clear it yourself before calling this if that\textquotesingle{}s what you want). ~\newline
 \\
\hline
{\em filename} & The file name this came from, for logging errors. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_manager_common_af0074b30d327b54e5f352ca64612a043}\label{class_ogre_1_1_g_l_s_l_program_manager_common_af0074b30d327b54e5f352ca64612a043}} 
\index{Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}!destroyAllByShader@{destroyAllByShader}}
\index{destroyAllByShader@{destroyAllByShader}!Ogre::GLSL::GLSLLinkProgramManager@{Ogre::GLSL::GLSLLinkProgramManager}}
\doxysubsubsection{\texorpdfstring{destroyAllByShader()}{destroyAllByShader()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+Program\+Manager\+Common\+::destroy\+All\+By\+Shader (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_shader_common}{G\+L\+S\+L\+Shader\+Common}} $\ast$}]{shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}



Destroy all programs which referencing this shader. 



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{_ogre_g_l_s_l_link_program_manager_8h}{Ogre\+G\+L\+S\+L\+Link\+Program\+Manager.\+h}}\end{DoxyCompactItemize}
