summaryrefslogtreecommitdiffstats
path: root/dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html1202
1 files changed, 1202 insertions, 0 deletions
diff --git a/dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html b/dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html
new file mode 100644
index 0000000..26f8de9
--- /dev/null
+++ b/dev/MinGfx/docs/html/classmingfx_1_1_shader_program.html
@@ -0,0 +1,1202 @@
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: mingfx::ShaderProgram Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="namespacemingfx.html">mingfx</a></li><li class="navelem"><a class="el" href="classmingfx_1_1_shader_program.html">ShaderProgram</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classmingfx_1_1_shader_program-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">mingfx::ShaderProgram Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A wrapper around GLSL shader programs. </p>
+<p>This class supports loading vertex and fragment shaders from files or strings, compiling them, and then linking them into a shader program. Uniform variables within the shader programs can be set in order to pass parameters from C++ code into the shader program. Textures can also be bound to the shader. Example usage: </p><div class="fragment"><div class="line"><a class="code" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">ShaderProgram</a> shader_prog;</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::InitOpenGL() {</div>
+<div class="line"> shader_prog.AddVertexShaderFromFile(Platform::findFile(<span class="stringliteral">&quot;my_shader.vert&quot;</span>, searchPath));</div>
+<div class="line"> shader_prog.AddFragmentShaderFromFile(Platform::findFile(<span class="stringliteral">&quot;my_shader.frag&quot;</span>, searchPath));</div>
+<div class="line"> shader_prog.LinkProgram();</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> MyGraphicsApp::DrawUsingOpenGL() {</div>
+<div class="line"> <span class="comment">// Activate the shader program</span></div>
+<div class="line"> shader_prog.UseProgram();</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// Pass uniforms and textures from C++ to the GPU Shader Program</span></div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;ModelMatrix&quot;</span>, modelMat);</div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;ViewMatrix&quot;</span>, viewMat);</div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;ProjectionMatrix&quot;</span>, projMat);</div>
+<div class="line"> shader_prog.SetUniform(<span class="stringliteral">&quot;LightPosition&quot;</span>, Point3(2,2,2));</div>
+<div class="line"> shader_prog.BindTexture(<span class="stringliteral">&quot;SurfaceTexture&quot;</span>, my_tex);</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// Draw whatever geometry you want now</span></div>
+<div class="line"> mesh1.Draw();</div>
+<div class="line"> mesh2.Draw();</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// Deactivate the shader program</span></div>
+<div class="line"> shader_prog.StopProgram();</div>
+<div class="line">}</div>
+<div class="ttc" id="aclassmingfx_1_1_shader_program_html_a0c3d86656c464223dc615cbec0943700"><div class="ttname"><a href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">mingfx::ShaderProgram::ShaderProgram</a></div><div class="ttdeci">ShaderProgram()</div><div class="ttdoc">Creates an empty ShaderProgram object.</div></div>
+</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="shader__program_8h_source.html#l00066">66</a> of file <a class="el" href="shader__program_8h_source.html">shader_program.h</a>.</p>
+</div>
+<p><code>#include &lt;<a class="el" href="shader__program_8h_source.html">shader_program.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0c3d86656c464223dc615cbec0943700"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">ShaderProgram</a> ()</td></tr>
+<tr class="memdesc:a0c3d86656c464223dc615cbec0943700"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an empty <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> object. <a href="classmingfx_1_1_shader_program.html#a0c3d86656c464223dc615cbec0943700">More...</a><br /></td></tr>
+<tr class="separator:a0c3d86656c464223dc615cbec0943700"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96da0dede354f2511084eeb25428edb4"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a96da0dede354f2511084eeb25428edb4">~ShaderProgram</a> ()</td></tr>
+<tr class="separator:a96da0dede354f2511084eeb25428edb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a63ac061271fad9338e922389d4a179e5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">AddVertexShaderFromFile</a> (const std::string &amp;file)</td></tr>
+<tr class="memdesc:a63ac061271fad9338e922389d4a179e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors. <a href="classmingfx_1_1_shader_program.html#a63ac061271fad9338e922389d4a179e5">More...</a><br /></td></tr>
+<tr class="separator:a63ac061271fad9338e922389d4a179e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5fed4904a59c6e83ebb43aebf4c043d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">AddVertexShaderFromSource</a> (const std::string &amp;code)</td></tr>
+<tr class="memdesc:ab5fed4904a59c6e83ebb43aebf4c043d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. <a href="classmingfx_1_1_shader_program.html#ab5fed4904a59c6e83ebb43aebf4c043d">More...</a><br /></td></tr>
+<tr class="separator:ab5fed4904a59c6e83ebb43aebf4c043d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acd94fc12beb85fe57aa80d3b825018b0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">AddFragmentShaderFromFile</a> (const std::string &amp;file)</td></tr>
+<tr class="memdesc:acd94fc12beb85fe57aa80d3b825018b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors. <a href="classmingfx_1_1_shader_program.html#acd94fc12beb85fe57aa80d3b825018b0">More...</a><br /></td></tr>
+<tr class="separator:acd94fc12beb85fe57aa80d3b825018b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7a3063ec42798c076e1ab0c0e6411e9c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">AddFragmentShaderFromSource</a> (const std::string &amp;code)</td></tr>
+<tr class="memdesc:a7a3063ec42798c076e1ab0c0e6411e9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. <a href="classmingfx_1_1_shader_program.html#a7a3063ec42798c076e1ab0c0e6411e9c">More...</a><br /></td></tr>
+<tr class="separator:a7a3063ec42798c076e1ab0c0e6411e9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad14c3a9a4ee1eef39f933bc46260c794"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">LinkProgram</a> ()</td></tr>
+<tr class="memdesc:ad14c3a9a4ee1eef39f933bc46260c794"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this after adding vertex and fragment shaders in order to link them together to create the full shader program. An error will be printed to stderr if there are any linking errors. <a href="classmingfx_1_1_shader_program.html#ad14c3a9a4ee1eef39f933bc46260c794">More...</a><br /></td></tr>
+<tr class="separator:ad14c3a9a4ee1eef39f933bc46260c794"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af1c968f1c79f70e183c9d1239d3d205e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">UseProgram</a> ()</td></tr>
+<tr class="memdesc:af1c968f1c79f70e183c9d1239d3d205e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this first to make the shader program active, then call <a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a" title="Passes the x,y values of point p to the shader program and stores the result in the shader variable n...">SetUniform()</a> to pass data from your C++ program into the shader code via the named uniform variables that appear in the code. Then render whatever geometry you wish with your own glDrawArrays() call(s). Finally, call <a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da" title="Call this after rendering geometry to deactivate the shader.">StopProgram()</a> to turn off the shader program. <a href="classmingfx_1_1_shader_program.html#af1c968f1c79f70e183c9d1239d3d205e">More...</a><br /></td></tr>
+<tr class="separator:af1c968f1c79f70e183c9d1239d3d205e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a461ba9368ad89fe1e9749b14b099027a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;p)</td></tr>
+<tr class="memdesc:a461ba9368ad89fe1e9749b14b099027a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the x,y values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec2. <a href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a">More...</a><br /></td></tr>
+<tr class="separator:a461ba9368ad89fe1e9749b14b099027a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aef58537d81bdb9d88a5f1c56a2b98b25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;v)</td></tr>
+<tr class="memdesc:aef58537d81bdb9d88a5f1c56a2b98b25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the x,y values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec2. <a href="classmingfx_1_1_shader_program.html#aef58537d81bdb9d88a5f1c56a2b98b25">More...</a><br /></td></tr>
+<tr class="separator:aef58537d81bdb9d88a5f1c56a2b98b25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac59b3d0542ce45631876615eabf66487"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;p)</td></tr>
+<tr class="memdesc:ac59b3d0542ce45631876615eabf66487"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the x,y,z,1 values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec4. <a href="classmingfx_1_1_shader_program.html#ac59b3d0542ce45631876615eabf66487">More...</a><br /></td></tr>
+<tr class="separator:ac59b3d0542ce45631876615eabf66487"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b3e6285354e007bf79a9ac1587f86f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;v)</td></tr>
+<tr class="memdesc:a0b3e6285354e007bf79a9ac1587f86f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the x,y,z,0 values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec4. <a href="classmingfx_1_1_shader_program.html#a0b3e6285354e007bf79a9ac1587f86f5">More...</a><br /></td></tr>
+<tr class="separator:a0b3e6285354e007bf79a9ac1587f86f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a766988eac957e9d810fdf2cbd2eafae0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;m)</td></tr>
+<tr class="memdesc:a766988eac957e9d810fdf2cbd2eafae0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the column-major 16 float values of matrix m to the shader program and stores the result in the shader variable named name, which should be of type mat4. <a href="classmingfx_1_1_shader_program.html#a766988eac957e9d810fdf2cbd2eafae0">More...</a><br /></td></tr>
+<tr class="separator:a766988eac957e9d810fdf2cbd2eafae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ec2b53ba4bea7e48ef459530b8c6d60"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60">SetUniform</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;c)</td></tr>
+<tr class="memdesc:a9ec2b53ba4bea7e48ef459530b8c6d60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the r,g,b,a values of color c to the shader program and stores the result in the shader variable named name, which should be of type vec4. <a href="classmingfx_1_1_shader_program.html#a9ec2b53ba4bea7e48ef459530b8c6d60">More...</a><br /></td></tr>
+<tr class="separator:a9ec2b53ba4bea7e48ef459530b8c6d60"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab547dadc25582bec157b39de29d1419e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e">SetUniform</a> (const std::string &amp;name, int i)</td></tr>
+<tr class="memdesc:ab547dadc25582bec157b39de29d1419e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the int to the shader program and stores the result in the shader variable named name, which should be of type int. <a href="classmingfx_1_1_shader_program.html#ab547dadc25582bec157b39de29d1419e">More...</a><br /></td></tr>
+<tr class="separator:ab547dadc25582bec157b39de29d1419e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a707d2cb51a54151959c6570d6bfc7840"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840">SetUniform</a> (const std::string &amp;name, unsigned int ui)</td></tr>
+<tr class="memdesc:a707d2cb51a54151959c6570d6bfc7840"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the unsigned int to the shader program and stores the result in the shader variable named name, which should be of type uint. <a href="classmingfx_1_1_shader_program.html#a707d2cb51a54151959c6570d6bfc7840">More...</a><br /></td></tr>
+<tr class="separator:a707d2cb51a54151959c6570d6bfc7840"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a680fa87cb30343bb56abc48a090e823c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c">SetUniform</a> (const std::string &amp;name, float f)</td></tr>
+<tr class="memdesc:a680fa87cb30343bb56abc48a090e823c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes the float to the shader program and stores the result in the shader variable named name, which should be of type float. <a href="classmingfx_1_1_shader_program.html#a680fa87cb30343bb56abc48a090e823c">More...</a><br /></td></tr>
+<tr class="separator:a680fa87cb30343bb56abc48a090e823c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a51cd1c1d194b2f5c07e81d4f579f2f2b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">SetUniformArray1</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:a51cd1c1d194b2f5c07e81d4f579f2f2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count ints to the shader program and stores the result in the shader variable named name, which should be of type int name[count]. <a href="classmingfx_1_1_shader_program.html#a51cd1c1d194b2f5c07e81d4f579f2f2b">More...</a><br /></td></tr>
+<tr class="separator:a51cd1c1d194b2f5c07e81d4f579f2f2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abba87d2b0baca89232dbd1d6331875de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de">SetUniformArray1</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:abba87d2b0baca89232dbd1d6331875de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count unsigned ints to the shader program and stores the result in the shader variable named name, which should be of type uint name[count]. <a href="classmingfx_1_1_shader_program.html#abba87d2b0baca89232dbd1d6331875de">More...</a><br /></td></tr>
+<tr class="separator:abba87d2b0baca89232dbd1d6331875de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c7891252d6b6c40982b56543820cd19"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19">SetUniformArray1</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:a5c7891252d6b6c40982b56543820cd19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count floats to the shader program and stores the result in the shader variable named name, which should be of type float name[count]. <a href="classmingfx_1_1_shader_program.html#a5c7891252d6b6c40982b56543820cd19">More...</a><br /></td></tr>
+<tr class="separator:a5c7891252d6b6c40982b56543820cd19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9bab504c74a1c4258258b91afe9a9623"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">SetUniformArray2</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:a9bab504c74a1c4258258b91afe9a9623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 2D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec2 name[count]. <a href="classmingfx_1_1_shader_program.html#a9bab504c74a1c4258258b91afe9a9623">More...</a><br /></td></tr>
+<tr class="separator:a9bab504c74a1c4258258b91afe9a9623"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6fdca4b0ccaa8a0b2c8c68fd7645727c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c">SetUniformArray2</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:a6fdca4b0ccaa8a0b2c8c68fd7645727c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 2D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec2 name[count]. <a href="classmingfx_1_1_shader_program.html#a6fdca4b0ccaa8a0b2c8c68fd7645727c">More...</a><br /></td></tr>
+<tr class="separator:a6fdca4b0ccaa8a0b2c8c68fd7645727c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93914cad6d8e751218c88010c51cf657"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657">SetUniformArray2</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:a93914cad6d8e751218c88010c51cf657"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 2D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec2 name[count]. <a href="classmingfx_1_1_shader_program.html#a93914cad6d8e751218c88010c51cf657">More...</a><br /></td></tr>
+<tr class="separator:a93914cad6d8e751218c88010c51cf657"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac582a2aa74a83095e0b8e359ce432511"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">SetUniformArray3</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:ac582a2aa74a83095e0b8e359ce432511"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 3D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec3 name[count]. <a href="classmingfx_1_1_shader_program.html#ac582a2aa74a83095e0b8e359ce432511">More...</a><br /></td></tr>
+<tr class="separator:ac582a2aa74a83095e0b8e359ce432511"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c31de93b17f050baecb5323a69bdbfa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa">SetUniformArray3</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:a8c31de93b17f050baecb5323a69bdbfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 3D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec3 name[count]. <a href="classmingfx_1_1_shader_program.html#a8c31de93b17f050baecb5323a69bdbfa">More...</a><br /></td></tr>
+<tr class="separator:a8c31de93b17f050baecb5323a69bdbfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc84377716296a57299ebbc01884b65d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d">SetUniformArray3</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:afc84377716296a57299ebbc01884b65d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 3D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec3 name[count]. <a href="classmingfx_1_1_shader_program.html#afc84377716296a57299ebbc01884b65d">More...</a><br /></td></tr>
+<tr class="separator:afc84377716296a57299ebbc01884b65d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab06ef4682f801fca080a8f67dc6345ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">SetUniformArray4</a> (const std::string &amp;name, int *i, int count)</td></tr>
+<tr class="memdesc:ab06ef4682f801fca080a8f67dc6345ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 4D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec4 name[count]. <a href="classmingfx_1_1_shader_program.html#ab06ef4682f801fca080a8f67dc6345ba">More...</a><br /></td></tr>
+<tr class="separator:ab06ef4682f801fca080a8f67dc6345ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2854ad947f74432edc0b730462b7f695"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695">SetUniformArray4</a> (const std::string &amp;name, unsigned int *ui, int count)</td></tr>
+<tr class="memdesc:a2854ad947f74432edc0b730462b7f695"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 4D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec4 name[count]. <a href="classmingfx_1_1_shader_program.html#a2854ad947f74432edc0b730462b7f695">More...</a><br /></td></tr>
+<tr class="separator:a2854ad947f74432edc0b730462b7f695"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9710cf4c72a7321b9a1ff1b86ae42da1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1">SetUniformArray4</a> (const std::string &amp;name, float *f, int count)</td></tr>
+<tr class="memdesc:a9710cf4c72a7321b9a1ff1b86ae42da1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Passes an array of count 4D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec4 name[count]. <a href="classmingfx_1_1_shader_program.html#a9710cf4c72a7321b9a1ff1b86ae42da1">More...</a><br /></td></tr>
+<tr class="separator:a9710cf4c72a7321b9a1ff1b86ae42da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e5a2659f66f29433b15748f36c61ea2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">BindTexture</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;tex)</td></tr>
+<tr class="memdesc:a4e5a2659f66f29433b15748f36c61ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> to a sampler2D in the shader program. This version automatically selects an available texture unit, i.e., one not already used by this shader program. <a href="classmingfx_1_1_shader_program.html#a4e5a2659f66f29433b15748f36c61ea2">More...</a><br /></td></tr>
+<tr class="separator:a4e5a2659f66f29433b15748f36c61ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af81d97c2843278eb40cdcdf8e5d54a96"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96">BindTexture</a> (const std::string &amp;name, const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;tex, int texUnit)</td></tr>
+<tr class="memdesc:af81d97c2843278eb40cdcdf8e5d54a96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> to a sampler2D in the shader program. This version allows you to specify the texture unit to use. <a href="classmingfx_1_1_shader_program.html#af81d97c2843278eb40cdcdf8e5d54a96">More...</a><br /></td></tr>
+<tr class="separator:af81d97c2843278eb40cdcdf8e5d54a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2e4d6db720bf22038270cf8c51cdf7da"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">StopProgram</a> ()</td></tr>
+<tr class="memdesc:a2e4d6db720bf22038270cf8c51cdf7da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call this after rendering geometry to deactivate the shader. <a href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da">More...</a><br /></td></tr>
+<tr class="separator:a2e4d6db720bf22038270cf8c51cdf7da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2eddd93e446ad2079d1c57676655ffbe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">initialized</a> ()</td></tr>
+<tr class="memdesc:a2eddd93e446ad2079d1c57676655ffbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the shader program has been successfully compiled and linked. <a href="classmingfx_1_1_shader_program.html#a2eddd93e446ad2079d1c57676655ffbe">More...</a><br /></td></tr>
+<tr class="separator:a2eddd93e446ad2079d1c57676655ffbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a0c3d86656c464223dc615cbec0943700"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c3d86656c464223dc615cbec0943700">&#9670;&nbsp;</a></span>ShaderProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">mingfx::ShaderProgram::ShaderProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates an empty <a class="el" href="classmingfx_1_1_shader_program.html" title="A wrapper around GLSL shader programs.">ShaderProgram</a> object. </p>
+
+</div>
+</div>
+<a id="a96da0dede354f2511084eeb25428edb4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96da0dede354f2511084eeb25428edb4">&#9670;&nbsp;</a></span>~ShaderProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual mingfx::ShaderProgram::~ShaderProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="acd94fc12beb85fe57aa80d3b825018b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd94fc12beb85fe57aa80d3b825018b0">&#9670;&nbsp;</a></span>AddFragmentShaderFromFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddFragmentShaderFromFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>file</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors. </p>
+
+</div>
+</div>
+<a id="a7a3063ec42798c076e1ab0c0e6411e9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7a3063ec42798c076e1ab0c0e6411e9c">&#9670;&nbsp;</a></span>AddFragmentShaderFromSource()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddFragmentShaderFromSource </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>code</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. </p>
+
+</div>
+</div>
+<a id="a63ac061271fad9338e922389d4a179e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a63ac061271fad9338e922389d4a179e5">&#9670;&nbsp;</a></span>AddVertexShaderFromFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddVertexShaderFromFile </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>file</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call during initialization but after the OpenGL context has been created (e.g., inside InitOpenGL()). This loads the shader from the file and compiles it. An error will be printed to stderr if there are any compilation errors. </p>
+
+</div>
+</div>
+<a id="ab5fed4904a59c6e83ebb43aebf4c043d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab5fed4904a59c6e83ebb43aebf4c043d">&#9670;&nbsp;</a></span>AddVertexShaderFromSource()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::AddVertexShaderFromSource </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>code</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>This loads and compiles a shader from a string. An error will be printed to stderr if there are any compilation errors. </p>
+
+</div>
+</div>
+<a id="a4e5a2659f66f29433b15748f36c61ea2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e5a2659f66f29433b15748f36c61ea2">&#9670;&nbsp;</a></span>BindTexture() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::BindTexture </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;&#160;</td>
+ <td class="paramname"><em>tex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> to a sampler2D in the shader program. This version automatically selects an available texture unit, i.e., one not already used by this shader program. </p>
+
+</div>
+</div>
+<a id="af81d97c2843278eb40cdcdf8e5d54a96"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af81d97c2843278eb40cdcdf8e5d54a96">&#9670;&nbsp;</a></span>BindTexture() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::BindTexture </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_texture2_d.html">Texture2D</a> &amp;&#160;</td>
+ <td class="paramname"><em>tex</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>texUnit</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Binds a <a class="el" href="classmingfx_1_1_texture2_d.html" title="A wrapper around a 2D texture that supports loading images from files or setting texture color data d...">Texture2D</a> to a sampler2D in the shader program. This version allows you to specify the texture unit to use. </p>
+
+</div>
+</div>
+<a id="a2eddd93e446ad2079d1c57676655ffbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2eddd93e446ad2079d1c57676655ffbe">&#9670;&nbsp;</a></span>initialized()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::initialized </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns true if the shader program has been successfully compiled and linked. </p>
+
+</div>
+</div>
+<a id="ad14c3a9a4ee1eef39f933bc46260c794"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad14c3a9a4ee1eef39f933bc46260c794">&#9670;&nbsp;</a></span>LinkProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool mingfx::ShaderProgram::LinkProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this after adding vertex and fragment shaders in order to link them together to create the full shader program. An error will be printed to stderr if there are any linking errors. </p>
+
+</div>
+</div>
+<a id="a9ec2b53ba4bea7e48ef459530b8c6d60"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ec2b53ba4bea7e48ef459530b8c6d60">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[1/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_color.html">Color</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the r,g,b,a values of color c to the shader program and stores the result in the shader variable named name, which should be of type vec4. </p>
+
+</div>
+</div>
+<a id="a766988eac957e9d810fdf2cbd2eafae0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a766988eac957e9d810fdf2cbd2eafae0">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[2/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_matrix4.html">Matrix4</a> &amp;&#160;</td>
+ <td class="paramname"><em>m</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the column-major 16 float values of matrix m to the shader program and stores the result in the shader variable named name, which should be of type mat4. </p>
+
+</div>
+</div>
+<a id="a461ba9368ad89fe1e9749b14b099027a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a461ba9368ad89fe1e9749b14b099027a">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[3/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point2.html">Point2</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the x,y values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec2. </p>
+
+</div>
+</div>
+<a id="ac59b3d0542ce45631876615eabf66487"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac59b3d0542ce45631876615eabf66487">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[4/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_point3.html">Point3</a> &amp;&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the x,y,z,1 values of point p to the shader program and stores the result in the shader variable named name, which should be of type vec4. </p>
+
+</div>
+</div>
+<a id="aef58537d81bdb9d88a5f1c56a2b98b25"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aef58537d81bdb9d88a5f1c56a2b98b25">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[5/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the x,y values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec2. </p>
+
+</div>
+</div>
+<a id="a0b3e6285354e007bf79a9ac1587f86f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b3e6285354e007bf79a9ac1587f86f5">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[6/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classmingfx_1_1_vector3.html">Vector3</a> &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the x,y,z,0 values of vector v to the shader program and stores the result in the shader variable named name, which should be of type vec4. </p>
+
+</div>
+</div>
+<a id="a680fa87cb30343bb56abc48a090e823c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a680fa87cb30343bb56abc48a090e823c">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[7/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>f</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the float to the shader program and stores the result in the shader variable named name, which should be of type float. </p>
+
+</div>
+</div>
+<a id="ab547dadc25582bec157b39de29d1419e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab547dadc25582bec157b39de29d1419e">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[8/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the int to the shader program and stores the result in the shader variable named name, which should be of type int. </p>
+
+</div>
+</div>
+<a id="a707d2cb51a54151959c6570d6bfc7840"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a707d2cb51a54151959c6570d6bfc7840">&#9670;&nbsp;</a></span>SetUniform() <span class="overload">[9/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniform </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>ui</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes the unsigned int to the shader program and stores the result in the shader variable named name, which should be of type uint. </p>
+
+</div>
+</div>
+<a id="a5c7891252d6b6c40982b56543820cd19"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c7891252d6b6c40982b56543820cd19">&#9670;&nbsp;</a></span>SetUniformArray1() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray1 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count floats to the shader program and stores the result in the shader variable named name, which should be of type float name[count]. </p>
+
+</div>
+</div>
+<a id="a51cd1c1d194b2f5c07e81d4f579f2f2b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a51cd1c1d194b2f5c07e81d4f579f2f2b">&#9670;&nbsp;</a></span>SetUniformArray1() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray1 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count ints to the shader program and stores the result in the shader variable named name, which should be of type int name[count]. </p>
+
+</div>
+</div>
+<a id="abba87d2b0baca89232dbd1d6331875de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abba87d2b0baca89232dbd1d6331875de">&#9670;&nbsp;</a></span>SetUniformArray1() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray1 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count unsigned ints to the shader program and stores the result in the shader variable named name, which should be of type uint name[count]. </p>
+
+</div>
+</div>
+<a id="a93914cad6d8e751218c88010c51cf657"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93914cad6d8e751218c88010c51cf657">&#9670;&nbsp;</a></span>SetUniformArray2() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray2 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 2D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec2 name[count]. </p>
+
+</div>
+</div>
+<a id="a9bab504c74a1c4258258b91afe9a9623"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9bab504c74a1c4258258b91afe9a9623">&#9670;&nbsp;</a></span>SetUniformArray2() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray2 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 2D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec2 name[count]. </p>
+
+</div>
+</div>
+<a id="a6fdca4b0ccaa8a0b2c8c68fd7645727c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6fdca4b0ccaa8a0b2c8c68fd7645727c">&#9670;&nbsp;</a></span>SetUniformArray2() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray2 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 2D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec2 name[count]. </p>
+
+</div>
+</div>
+<a id="afc84377716296a57299ebbc01884b65d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc84377716296a57299ebbc01884b65d">&#9670;&nbsp;</a></span>SetUniformArray3() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray3 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 3D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec3 name[count]. </p>
+
+</div>
+</div>
+<a id="ac582a2aa74a83095e0b8e359ce432511"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac582a2aa74a83095e0b8e359ce432511">&#9670;&nbsp;</a></span>SetUniformArray3() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray3 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 3D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec3 name[count]. </p>
+
+</div>
+</div>
+<a id="a8c31de93b17f050baecb5323a69bdbfa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c31de93b17f050baecb5323a69bdbfa">&#9670;&nbsp;</a></span>SetUniformArray3() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray3 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 3D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec3 name[count]. </p>
+
+</div>
+</div>
+<a id="a9710cf4c72a7321b9a1ff1b86ae42da1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9710cf4c72a7321b9a1ff1b86ae42da1">&#9670;&nbsp;</a></span>SetUniformArray4() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray4 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 4D float arrays to the shader program and stores the result in the shader variable named name, which should be of type vec4 name[count]. </p>
+
+</div>
+</div>
+<a id="ab06ef4682f801fca080a8f67dc6345ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab06ef4682f801fca080a8f67dc6345ba">&#9670;&nbsp;</a></span>SetUniformArray4() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray4 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 4D int arrays to the shader program and stores the result in the shader variable named name, which should be of type ivec4 name[count]. </p>
+
+</div>
+</div>
+<a id="a2854ad947f74432edc0b730462b7f695"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2854ad947f74432edc0b730462b7f695">&#9670;&nbsp;</a></span>SetUniformArray4() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::SetUniformArray4 </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>ui</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Passes an array of count 4D unsigned int arrays to the shader program and stores the result in the shader variable named name, which should be of type uivec4 name[count]. </p>
+
+</div>
+</div>
+<a id="a2e4d6db720bf22038270cf8c51cdf7da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2e4d6db720bf22038270cf8c51cdf7da">&#9670;&nbsp;</a></span>StopProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::StopProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this after rendering geometry to deactivate the shader. </p>
+
+</div>
+</div>
+<a id="af1c968f1c79f70e183c9d1239d3d205e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af1c968f1c79f70e183c9d1239d3d205e">&#9670;&nbsp;</a></span>UseProgram()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void mingfx::ShaderProgram::UseProgram </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Call this first to make the shader program active, then call <a class="el" href="classmingfx_1_1_shader_program.html#a461ba9368ad89fe1e9749b14b099027a" title="Passes the x,y values of point p to the shader program and stores the result in the shader variable n...">SetUniform()</a> to pass data from your C++ program into the shader code via the named uniform variables that appear in the code. Then render whatever geometry you wish with your own glDrawArrays() call(s). Finally, call <a class="el" href="classmingfx_1_1_shader_program.html#a2e4d6db720bf22038270cf8c51cdf7da" title="Call this after rendering geometry to deactivate the shader.">StopProgram()</a> to turn off the shader program. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>src/<a class="el" href="shader__program_8h_source.html">shader_program.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>