\hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_manager}{}\doxysection{Ogre\+::G\+L\+S\+L\+E\+S\+Program\+Manager Class Reference}
\label{class_ogre_1_1_g_l_s_l_e_s_program_manager}\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}


\mbox{\hyperlink{namespace_ogre}{Ogre}} assumes that there are separate vertex and fragment programs to deal with but \mbox{\hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL}} ES has one program object that represents the active vertex and fragment shader objects during a rendering state.  




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



Inheritance diagram for Ogre\+::G\+L\+S\+L\+E\+S\+Program\+Manager\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{class_ogre_1_1_g_l_s_l_e_s_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_e_s_program_manager_a50e82b988e643c514337513b59754847}{G\+L\+S\+L\+E\+S\+Program\+Manager}} (void)
\item 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_a76217491cb339b9f6f2b3417d00493f3}{$\sim$\+G\+L\+S\+L\+E\+S\+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 
bool \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_af75ad939d192837c5ac1051347258aaa}{destroy\+Link\+Program}} (\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common}{G\+L\+S\+L\+E\+S\+Program\+Common}} $\ast$link\+Program)
\begin{DoxyCompactList}\small\item\em Destroy and remove the linker program from the local cache. \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_e_s_program_common}{G\+L\+S\+L\+E\+S\+Program\+Common}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_aee7cca093ec93e57f5c7107a3bcddbc7}{get\+Active\+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 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common}{G\+L\+S\+L\+E\+S\+Program\+Common}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_a6879429b01f7f1f4706503232e785142}{get\+By\+Program}} (\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program}} $\ast$gpu\+Program)
\begin{DoxyCompactList}\small\item\em Get the linker program by a gpu program. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_a066e3e9ba0fb1683de917888aa38f447}{optimise\+Shader\+Source}} (G\+L\+S\+L\+E\+S\+Gpu\+Program $\ast$gpu\+Program)
\item 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_a471eb29f5d0f7858344b63c76e7e9af6}{set\+Active\+Shader}} (\mbox{\hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type}} type, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program}} $\ast$fragment\+Gpu\+Program)
\begin{DoxyCompactList}\small\item\em Set the active 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_e_s_program_manager_a7865d3c924d0aaa014ebf1e379a285b8}{extract\+Uniforms}} (G\+Luint 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$fragment\+Constant\+Defs, \mbox{\hyperlink{namespace_ogre_ab6bb0d65dc078300d6e0459f926292b4}{G\+L\+Uniform\+Reference\+List}} \&\mbox{\hyperlink{struct_ogre_1_1list}{list}}, \mbox{\hyperlink{namespace_ogre_a0013629ba7e62b9f0ffb427b0db06059}{Shared\+Params\+Buffer\+Map}} \&shared\+Params\+Buffer\+Map)
\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_e_s_program_manager}{G\+L\+S\+L\+E\+S\+Program\+Manager}} \& \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_a8eeedc8c4ea706d891f508b02e00c515}{get\+Singleton}} (void)
\item 
static \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager}{G\+L\+S\+L\+E\+S\+Program\+Manager}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager_aa307dd417d976c725d04b9b2dadf82e3}{get\+Singleton\+Ptr}} (void)
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\mbox{\hyperlink{namespace_ogre}{Ogre}} assumes that there are separate vertex and fragment programs to deal with but \mbox{\hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL}} ES has one program object that represents the active vertex and fragment shader objects during a rendering state. 

\mbox{\hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL}} Vertex and fragment shader objects are compiled separately and then attached to a program object and then the program object is linked. Since \mbox{\hyperlink{namespace_ogre}{Ogre}} can only handle one vertex program and one fragment program being active in a pass, the \mbox{\hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL}} ES Link Program Manager does the same. The \mbox{\hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL}} ES Link program manager acts as a state machine and activates a program object based on the active vertex and fragment program. Previously created program objects are stored along with a unique key in a hash\+\_\+map for quick retrieval the next time the program object is required. 

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

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



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_manager_a471eb29f5d0f7858344b63c76e7e9af6}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_a471eb29f5d0f7858344b63c76e7e9af6}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!setActiveShader@{setActiveShader}}
\index{setActiveShader@{setActiveShader}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{setActiveShader()}{setActiveShader()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+E\+S\+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_e_s_program}{G\+L\+S\+L\+E\+S\+Program}} $\ast$}]{fragment\+Gpu\+Program }\end{DoxyParamCaption})}



Set the active shader for the next rendering state. 

The active program object will be cleared. Normally called from the G\+L\+S\+L\+E\+S\+Gpu\+Program\+::bind\+Program and unbind\+Program methods \mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_manager_aee7cca093ec93e57f5c7107a3bcddbc7}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_aee7cca093ec93e57f5c7107a3bcddbc7}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!getActiveProgram@{getActiveProgram}}
\index{getActiveProgram@{getActiveProgram}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{getActiveProgram()}{getActiveProgram()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common}{G\+L\+S\+L\+E\+S\+Program\+Common}}$\ast$ Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Manager\+::get\+Active\+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_e_s_program_manager_a6879429b01f7f1f4706503232e785142}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_a6879429b01f7f1f4706503232e785142}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!getByProgram@{getByProgram}}
\index{getByProgram@{getByProgram}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{getByProgram()}{getByProgram()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common}{G\+L\+S\+L\+E\+S\+Program\+Common}}$\ast$ Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Manager\+::get\+By\+Program (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program}} $\ast$}]{gpu\+Program }\end{DoxyParamCaption})}



Get the linker program by a gpu program. 

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_manager_af75ad939d192837c5ac1051347258aaa}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_af75ad939d192837c5ac1051347258aaa}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!destroyLinkProgram@{destroyLinkProgram}}
\index{destroyLinkProgram@{destroyLinkProgram}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{destroyLinkProgram()}{destroyLinkProgram()}}
{\footnotesize\ttfamily bool Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Manager\+::destroy\+Link\+Program (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common}{G\+L\+S\+L\+E\+S\+Program\+Common}} $\ast$}]{link\+Program }\end{DoxyParamCaption})}



Destroy and remove the linker program from the local cache. 

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_manager_a066e3e9ba0fb1683de917888aa38f447}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_a066e3e9ba0fb1683de917888aa38f447}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!optimiseShaderSource@{optimiseShaderSource}}
\index{optimiseShaderSource@{optimiseShaderSource}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{optimiseShaderSource()}{optimiseShaderSource()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Manager\+::optimise\+Shader\+Source (\begin{DoxyParamCaption}\item[{G\+L\+S\+L\+E\+S\+Gpu\+Program $\ast$}]{gpu\+Program }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_manager_a7865d3c924d0aaa014ebf1e379a285b8}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_a7865d3c924d0aaa014ebf1e379a285b8}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!extractUniforms@{extractUniforms}}
\index{extractUniforms@{extractUniforms}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{extractUniforms()}{extractUniforms()}}
{\footnotesize\ttfamily static void Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Manager\+::extract\+Uniforms (\begin{DoxyParamCaption}\item[{G\+Luint}]{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$}]{fragment\+Constant\+Defs,  }\item[{\mbox{\hyperlink{namespace_ogre_ab6bb0d65dc078300d6e0459f926292b4}{G\+L\+Uniform\+Reference\+List}} \&}]{list,  }\item[{\mbox{\hyperlink{namespace_ogre_a0013629ba7e62b9f0ffb427b0db06059}{Shared\+Params\+Buffer\+Map}} \&}]{shared\+Params\+Buffer\+Map }\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 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_e_s_program_manager_a8eeedc8c4ea706d891f508b02e00c515}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_a8eeedc8c4ea706d891f508b02e00c515}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!getSingleton@{getSingleton}}
\index{getSingleton@{getSingleton}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{getSingleton()}{getSingleton()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager}{G\+L\+S\+L\+E\+S\+Program\+Manager}}\& Ogre\+::\+G\+L\+S\+L\+E\+S\+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_e_s_program_manager_aa307dd417d976c725d04b9b2dadf82e3}\label{class_ogre_1_1_g_l_s_l_e_s_program_manager_aa307dd417d976c725d04b9b2dadf82e3}} 
\index{Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!getSingletonPtr@{getSingletonPtr}}
\index{getSingletonPtr@{getSingletonPtr}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\doxysubsubsection{\texorpdfstring{getSingletonPtr()}{getSingletonPtr()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_manager}{G\+L\+S\+L\+E\+S\+Program\+Manager}}$\ast$ Ogre\+::\+G\+L\+S\+L\+E\+S\+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::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!extractUniformsFromGLSL@{extractUniformsFromGLSL}}
\index{extractUniformsFromGLSL@{extractUniformsFromGLSL}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\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::GLSLESProgramManager@{Ogre::GLSLESProgramManager}!destroyAllByShader@{destroyAllByShader}}
\index{destroyAllByShader@{destroyAllByShader}!Ogre::GLSLESProgramManager@{Ogre::GLSLESProgramManager}}
\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_e_s_program_manager_8h}{Ogre\+G\+L\+S\+L\+E\+S\+Program\+Manager.\+h}}\end{DoxyCompactItemize}
