Subversion

gpucv

[/] [web/] [gpucv_doc/] [1.0.0/] [classGCV_1_1ShaderDsc.html] - Rev 591

Compare with Previous - Blame


<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!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"/>
<title>GpuCV: GCV::ShaderDsc Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="twiki_style.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceGCV.html">GCV</a>::<a class="el" href="classGCV_1_1ShaderDsc.html">ShaderDsc</a>
  </div>
</div>
<div class="contents">
<h1>GCV::ShaderDsc Class Reference</h1><!-- doxytag: class="GCV::ShaderDsc" --><!-- doxytag: inherits="GCV::CL_Profiler" -->
<p>Class to describe and manipulate GLSL shader files and program(Frag/VERT/GEO).  
<a href="#_details">More...</a></p>

<p><code>#include &lt;GpuShaderDsc.h&gt;</code></p>
<div class="dynheader">
Inheritance diagram for GCV::ShaderDsc:</div>
<div class="dynsection">
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for GCV::ShaderDsc:</div>
<div class="dynsection">
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25">SHADER_TYPE</a> { <br/>
&nbsp;&nbsp;<a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25ae71f997b6df4f932eb99797c782d2c45">GEOMETRY_SHADER</a> =  GL_GEOMETRY_SHADER_EXT, 
<a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25aa370cb2032828383140f3d599bc9b022">VERTEX_SHADER</a> =  GL_VERTEX_SHADER_ARB, 
<a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25a6a55616e6ba10691dba9b169387dbaac">FRAGMENT_SHADER</a> =  GL_FRAGMENT_SHADER_ARB, 
<a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25a0c99223a03d20ba565dc70eae981b524">UNDEFINED</a> =  1, 
<br/>
&nbsp;&nbsp;<a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25aca40cd929d454595fe5fa6c1d3d4a133">NOT_SHADER</a> =  0, 
<a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25a3f2a422d2f75cd2113788cc33f606aed">FILE_ERROR</a> =  -1
<br/>
 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Shader type enum. </p>
 <a href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLhandleARB&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a45d0b75515901a6ec08c4e00e9471943">CompileShader</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compile the GLSL shader program using OpenGL.  <a href="#a45d0b75515901a6ec08c4e00e9471943"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a4a18dedc8657640e57635ff91f897c75">GetFullPath</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return full file path.  <a href="#a4a18dedc8657640e57635ff91f897c75"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">__GPUCV_INLINE const GLuint &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a802dce1b80f0a400d3b4bdb6b3464d11">GetGeoInputType</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return geometry shader input type.  <a href="#a802dce1b80f0a400d3b4bdb6b3464d11"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">__GPUCV_INLINE const GLuint &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a7ae5072628b4f0780996b450ee96316d">GetGeoOutputType</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return geometry shader output type.  <a href="#a7ae5072628b4f0780996b450ee96316d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">__GPUCV_INLINE const std::string &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#afdb691540cabc9b2f1bd3f54062342f4">GetMetaTags</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return META_TAG string.  <a href="#afdb691540cabc9b2f1bd3f54062342f4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">__GPUCV_INLINE const <a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25">SHADER_TYPE</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a49d4b15cf023f2821819fb144aa815c3">GetType</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return shader program type.  <a href="#a49d4b15cf023f2821819fb144aa815c3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#afaa527ff834d6a736e47eaf7ed2cca58">Load</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load file given <a class="el" href="classGCV_1_1ShaderDsc.html#a4a18dedc8657640e57635ff91f897c75" title="Return full file path.">GetFullPath()</a> into m_filebuffer.  <a href="#afaa527ff834d6a736e47eaf7ed2cca58"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual std::ostringstream &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#adf27f50da2f5027c2ac95da050a74e70">operator&lt;&lt;</a> (std::ostringstream &amp;_stream) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output shader program information to given ostringstream.  <a href="#adf27f50da2f5027c2ac95da050a74e70"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a6f5a1ce14b916d8a8cdf60f6b8162221">ParseMetaTag</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse meta_tags from filename and list them into vectors m_vKeywords and m_vValues. All GpuCV shader files contains some META_DATA that can be updated at compile time. Some of them are set with default values such as {GETTEX, IMGTYPE, GPUCV_FILTER}. It support also customized META_SHADER set by the calling operators, theses arguments are given in the filename. Calling syntax is : shaderfile($keyword1=value1$keyword2=value).frag / .vert The corresponding shader code must have:  <a href="#a6f5a1ce14b916d8a8cdf60f6b8162221"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#af115b0ee7fbcd6e279ffbae091730039">ParseShaderCode</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse shader code and replace all META_TAGS into source.  <a href="#af115b0ee7fbcd6e279ffbae091730039"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a29745a992c746d0a2e9b2b3fbfeb384f">PrintLocalLogInfo</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a9fdddd5f614af1e6e4dcc46f82c4f8c7">SetName</a> (const std::string &amp;_name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the shader progam name.  <a href="#a9fdddd5f614af1e6e4dcc46f82c4f8c7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#ac8dd46a8da0b33821e3e396bc410743c">ShaderDsc</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor.  <a href="#ac8dd46a8da0b33821e3e396bc410743c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a375707f314be2196fe1d438f73828c1a">ShaderDsc</a> (const std::string &amp;_name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor.  <a href="#a375707f314be2196fe1d438f73828c1a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">__GPUCV_INLINE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a853c7386e739414d5239ada35198d1a0">~ShaderDsc</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor.  <a href="#a853c7386e739414d5239ada35198d1a0"></a><br/></td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#ad84c39602e60e34d2c0f2f74543af884">m_filebuffer</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">String that contain source code when compiling.  <a href="#ad84c39602e60e34d2c0f2f74543af884"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLuint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a313219bfa7986bef9984adeaee636798">m_inputGeometryType</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used only in geometry shaders. Define geometry input type in {GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_EXT, GL_TRIANGLES, GL_TRIANGLES_ADJACENCY_EXT}.  <a href="#a313219bfa7986bef9984adeaee636798"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a148a25a929be4fe1ab27a37a518a128e">m_meta_tag</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">shader meta tags.  <a href="#a148a25a929be4fe1ab27a37a518a128e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLuint&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a2884b0dd2eb36afe5f9df7c26ccb811d">m_outputGeometryType</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used only in geometry shaders. Define geometry output type in {GL_POINTS, GL_LINE_STRIP, GL_TRIANGLE_STRIP}.  <a href="#a2884b0dd2eb36afe5f9df7c26ccb811d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">GLhandleARB&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a1034f6f0c4a39e708daa6916c4559cd5">m_shaderID</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">OpenGL shader ID.  <a href="#a1034f6f0c4a39e708daa6916c4559cd5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25">SHADER_TYPE</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a5424df23b587c3436613ce2841cf5be8">m_type</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Type of the shader.  <a href="#a5424df23b587c3436613ce2841cf5be8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">vector&lt; string &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#af1f9f6a99ce2227b5a7ceb0551c747e1">m_vKeywords</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List of meta tag name.  <a href="#af1f9f6a99ce2227b5a7ceb0551c747e1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">vector&lt; string &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGCV_1_1ShaderDsc.html#a7124bd03b434738ab1de57fa199b083a">m_vValues</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List of meta tag values.  <a href="#a7124bd03b434738ab1de57fa199b083a"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Class to describe and manipulate GLSL shader files and program(Frag/VERT/GEO). </p>
<dl class="author"><dt><b>Author:</b></dt><dd>Packaged into the class by Yannick Allusse </dd>
<dd>
Original source code from Jean-Philippe Farrugia and Erwan Guehenneux </dd></dl>
<hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a79e0b7b194ded6b1d5e264b854e1ce25"></a><!-- doxytag: member="GCV::ShaderDsc::SHADER_TYPE" ref="a79e0b7b194ded6b1d5e264b854e1ce25" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25">GCV::ShaderDsc::SHADER_TYPE</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Shader type enum. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a79e0b7b194ded6b1d5e264b854e1ce25ae71f997b6df4f932eb99797c782d2c45"></a><!-- doxytag: member="GEOMETRY_SHADER" ref="a79e0b7b194ded6b1d5e264b854e1ce25ae71f997b6df4f932eb99797c782d2c45" args="" -->GEOMETRY_SHADER</em>&nbsp;</td><td>
<p>GLSL Geometry shader. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a79e0b7b194ded6b1d5e264b854e1ce25aa370cb2032828383140f3d599bc9b022"></a><!-- doxytag: member="VERTEX_SHADER" ref="a79e0b7b194ded6b1d5e264b854e1ce25aa370cb2032828383140f3d599bc9b022" args="" -->VERTEX_SHADER</em>&nbsp;</td><td>
<p>GLSL Vertex shader. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a79e0b7b194ded6b1d5e264b854e1ce25a6a55616e6ba10691dba9b169387dbaac"></a><!-- doxytag: member="FRAGMENT_SHADER" ref="a79e0b7b194ded6b1d5e264b854e1ce25a6a55616e6ba10691dba9b169387dbaac" args="" -->FRAGMENT_SHADER</em>&nbsp;</td><td>
<p>GLSL Fragment shader. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a79e0b7b194ded6b1d5e264b854e1ce25a0c99223a03d20ba565dc70eae981b524"></a><!-- doxytag: member="UNDEFINED" ref="a79e0b7b194ded6b1d5e264b854e1ce25a0c99223a03d20ba565dc70eae981b524" args="" -->UNDEFINED</em>&nbsp;</td><td>
<p>Type is not defined. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a79e0b7b194ded6b1d5e264b854e1ce25aca40cd929d454595fe5fa6c1d3d4a133"></a><!-- doxytag: member="NOT_SHADER" ref="a79e0b7b194ded6b1d5e264b854e1ce25aca40cd929d454595fe5fa6c1d3d4a133" args="" -->NOT_SHADER</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a79e0b7b194ded6b1d5e264b854e1ce25a3f2a422d2f75cd2113788cc33f606aed"></a><!-- doxytag: member="FILE_ERROR" ref="a79e0b7b194ded6b1d5e264b854e1ce25a3f2a422d2f75cd2113788cc33f606aed" args="" -->FILE_ERROR</em>&nbsp;</td><td>
<p>Error occured when loading shader program. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a375707f314be2196fe1d438f73828c1a"></a><!-- doxytag: member="GCV::ShaderDsc::ShaderDsc" ref="a375707f314be2196fe1d438f73828c1a" args="(const std::string &amp;_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GCV::ShaderDsc::ShaderDsc </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>_name</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>_name</em>&nbsp;</td><td>=&gt; name of the shader file(including local path, filename, extension and meta tags). </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classGCV_1_1ShaderDsc.html#a9fdddd5f614af1e6e4dcc46f82c4f8c7" title="Set the shader progam name.">SetName()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ac8dd46a8da0b33821e3e396bc410743c"></a><!-- doxytag: member="GCV::ShaderDsc::ShaderDsc" ref="ac8dd46a8da0b33821e3e396bc410743c" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GCV::ShaderDsc::ShaderDsc </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Default constructor. </p>

</div>
</div>
<a class="anchor" id="a853c7386e739414d5239ada35198d1a0"></a><!-- doxytag: member="GCV::ShaderDsc::~ShaderDsc" ref="a853c7386e739414d5239ada35198d1a0" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GCV::ShaderDsc::~ShaderDsc </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destructor. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a45d0b75515901a6ec08c4e00e9471943"></a><!-- doxytag: member="GCV::ShaderDsc::CompileShader" ref="a45d0b75515901a6ec08c4e00e9471943" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLhandleARB GCV::ShaderDsc::CompileShader </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compile the GLSL shader program using OpenGL. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>LoadFile() </dd></dl>

</div>
</div>
<a class="anchor" id="a4a18dedc8657640e57635ff91f897c75"></a><!-- doxytag: member="GCV::ShaderDsc::GetFullPath" ref="a4a18dedc8657640e57635ff91f897c75" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string GCV::ShaderDsc::GetFullPath </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return full file path. </p>

</div>
</div>
<a class="anchor" id="a802dce1b80f0a400d3b4bdb6b3464d11"></a><!-- doxytag: member="GCV::ShaderDsc::GetGeoInputType" ref="a802dce1b80f0a400d3b4bdb6b3464d11" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const GLuint &amp; GCV::ShaderDsc::GetGeoInputType </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return geometry shader input type. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classGCV_1_1ShaderDsc.html#a313219bfa7986bef9984adeaee636798" title="Used only in geometry shaders. Define geometry input type in {GL_POINTS, GL_LINES...">m_inputGeometryType</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="a7ae5072628b4f0780996b450ee96316d"></a><!-- doxytag: member="GCV::ShaderDsc::GetGeoOutputType" ref="a7ae5072628b4f0780996b450ee96316d" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const GLuint &amp; GCV::ShaderDsc::GetGeoOutputType </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return geometry shader output type. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classGCV_1_1ShaderDsc.html#a2884b0dd2eb36afe5f9df7c26ccb811d" title="Used only in geometry shaders. Define geometry output type in {GL_POINTS, GL_LINE_STRIP...">m_outputGeometryType</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="afdb691540cabc9b2f1bd3f54062342f4"></a><!-- doxytag: member="GCV::ShaderDsc::GetMetaTags" ref="afdb691540cabc9b2f1bd3f54062342f4" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string &amp; GCV::ShaderDsc::GetMetaTags </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return META_TAG string. </p>

</div>
</div>
<a class="anchor" id="a49d4b15cf023f2821819fb144aa815c3"></a><!-- doxytag: member="GCV::ShaderDsc::GetType" ref="a49d4b15cf023f2821819fb144aa815c3" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25">ShaderDsc::SHADER_TYPE</a> &amp; GCV::ShaderDsc::GetType </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return shader program type. </p>

</div>
</div>
<a class="anchor" id="afaa527ff834d6a736e47eaf7ed2cca58"></a><!-- doxytag: member="GCV::ShaderDsc::Load" ref="afaa527ff834d6a736e47eaf7ed2cca58" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int GCV::ShaderDsc::Load </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Load file given <a class="el" href="classGCV_1_1ShaderDsc.html#a4a18dedc8657640e57635ff91f897c75" title="Return full file path.">GetFullPath()</a> into m_filebuffer. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classGCV_1_1ShaderDsc.html#a45d0b75515901a6ec08c4e00e9471943" title="Compile the GLSL shader program using OpenGL.">CompileShader()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="adf27f50da2f5027c2ac95da050a74e70"></a><!-- doxytag: member="GCV::ShaderDsc::operator&lt;&lt;" ref="adf27f50da2f5027c2ac95da050a74e70" args="(std::ostringstream &amp;_stream) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostringstream &amp; GCV::ShaderDsc::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostringstream &amp;&nbsp;</td>
          <td class="paramname"> <em>_stream</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Output shader program information to given ostringstream. </p>

<p>Reimplemented from <a class="el" href="classGCV_1_1CL__Profiler.html#a4dc3dc43a71d4faafc98693ab27ebfd9">GCV::CL_Profiler</a>.</p>

</div>
</div>
<a class="anchor" id="a6f5a1ce14b916d8a8cdf60f6b8162221"></a><!-- doxytag: member="GCV::ShaderDsc::ParseMetaTag" ref="a6f5a1ce14b916d8a8cdf60f6b8162221" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GCV::ShaderDsc::ParseMetaTag </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Parse meta_tags from filename and list them into vectors m_vKeywords and m_vValues. All GpuCV shader files contains some META_DATA that can be updated at compile time. Some of them are set with default values such as {GETTEX, IMGTYPE, GPUCV_FILTER}. It support also customized META_SHADER set by the calling operators, theses arguments are given in the filename. Calling syntax is : shaderfile($keyword1=value1$keyword2=value).frag / .vert The corresponding shader code must have: </p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">        #define keyword1 </span>
<span class="preprocessor">        #define keyword2</span>
</pre></div><p> After applying META_TAGS, shader code will be: The corresponding shader code must have: </p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">        #define keyword1 value1</span>
<span class="preprocessor">        #define keyword2 value2</span>
</pre></div> <dl class="note"><dt><b>Note:</b></dt><dd>The '$' character is used to begin the different parameters, cause '$' is not used in GLSL code. </dd></dl>
<dl class="author"><dt><b>Author:</b></dt><dd>Yannick Allusse. </dd>
<dd>
Jean-Philippe Farrugia </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classGCV_1_1ShaderDsc.html#af115b0ee7fbcd6e279ffbae091730039" title="Parse shader code and replace all META_TAGS into source.">ParseShaderCode()</a> </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>For geometry shaders: Geometry input/output types must use meta tags GEO_INPUT/GEO_OUTPUT, see m_inputGeometryType/m_outputGeometryType for details. </dd></dl>

<p></p>

</div>
</div>
<a class="anchor" id="af115b0ee7fbcd6e279ffbae091730039"></a><!-- doxytag: member="GCV::ShaderDsc::ParseShaderCode" ref="af115b0ee7fbcd6e279ffbae091730039" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GCV::ShaderDsc::ParseShaderCode </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Parse shader code and replace all META_TAGS into source. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classGCV_1_1ShaderDsc.html#a6f5a1ce14b916d8a8cdf60f6b8162221" title="Parse meta_tags from filename and list them into vectors m_vKeywords and m_vValues...">ParseMetaTag()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a29745a992c746d0a2e9b2b3fbfeb384f"></a><!-- doxytag: member="GCV::ShaderDsc::PrintLocalLogInfo" ref="a29745a992c746d0a2e9b2b3fbfeb384f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GCV::ShaderDsc::PrintLocalLogInfo </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a9fdddd5f614af1e6e4dcc46f82c4f8c7"></a><!-- doxytag: member="GCV::ShaderDsc::SetName" ref="a9fdddd5f614af1e6e4dcc46f82c4f8c7" args="(const std::string &amp;_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GCV::ShaderDsc::SetName </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>_name</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the shader progam name. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>_name</em>&nbsp;</td><td>=&gt; name of the shader file(including local path, filename, extension and meta tags). Format of name must be : PATH/FILENAME(META_TAGS).EXTENSION. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classGCV_1_1ShaderDsc.html#a6f5a1ce14b916d8a8cdf60f6b8162221" title="Parse meta_tags from filename and list them into vectors m_vKeywords and m_vValues...">ParseMetaTag()</a> </dd></dl>

</div>
</div>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="ad84c39602e60e34d2c0f2f74543af884"></a><!-- doxytag: member="GCV::ShaderDsc::m_filebuffer" ref="ad84c39602e60e34d2c0f2f74543af884" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classGCV_1_1ShaderDsc.html#ad84c39602e60e34d2c0f2f74543af884">GCV::ShaderDsc::m_filebuffer</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>String that contain source code when compiling. </p>

</div>
</div>
<a class="anchor" id="a313219bfa7986bef9984adeaee636798"></a><!-- doxytag: member="GCV::ShaderDsc::m_inputGeometryType" ref="a313219bfa7986bef9984adeaee636798" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLuint <a class="el" href="classGCV_1_1ShaderDsc.html#a313219bfa7986bef9984adeaee636798">GCV::ShaderDsc::m_inputGeometryType</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Used only in geometry shaders. Define geometry input type in {GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_EXT, GL_TRIANGLES, GL_TRIANGLES_ADJACENCY_EXT}. </p>

</div>
</div>
<a class="anchor" id="a148a25a929be4fe1ab27a37a518a128e"></a><!-- doxytag: member="GCV::ShaderDsc::m_meta_tag" ref="a148a25a929be4fe1ab27a37a518a128e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classGCV_1_1ShaderDsc.html#a148a25a929be4fe1ab27a37a518a128e">GCV::ShaderDsc::m_meta_tag</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>shader meta tags. </p>

</div>
</div>
<a class="anchor" id="a2884b0dd2eb36afe5f9df7c26ccb811d"></a><!-- doxytag: member="GCV::ShaderDsc::m_outputGeometryType" ref="a2884b0dd2eb36afe5f9df7c26ccb811d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLuint <a class="el" href="classGCV_1_1ShaderDsc.html#a2884b0dd2eb36afe5f9df7c26ccb811d">GCV::ShaderDsc::m_outputGeometryType</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Used only in geometry shaders. Define geometry output type in {GL_POINTS, GL_LINE_STRIP, GL_TRIANGLE_STRIP}. </p>

</div>
</div>
<a class="anchor" id="a1034f6f0c4a39e708daa6916c4559cd5"></a><!-- doxytag: member="GCV::ShaderDsc::m_shaderID" ref="a1034f6f0c4a39e708daa6916c4559cd5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GLhandleARB <a class="el" href="classGCV_1_1ShaderDsc.html#a1034f6f0c4a39e708daa6916c4559cd5">GCV::ShaderDsc::m_shaderID</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>OpenGL shader ID. </p>

</div>
</div>
<a class="anchor" id="a5424df23b587c3436613ce2841cf5be8"></a><!-- doxytag: member="GCV::ShaderDsc::m_type" ref="a5424df23b587c3436613ce2841cf5be8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classGCV_1_1ShaderDsc.html#a79e0b7b194ded6b1d5e264b854e1ce25">SHADER_TYPE</a> <a class="el" href="classGCV_1_1ShaderDsc.html#a5424df23b587c3436613ce2841cf5be8">GCV::ShaderDsc::m_type</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Type of the shader. </p>

</div>
</div>
<a class="anchor" id="af1f9f6a99ce2227b5a7ceb0551c747e1"></a><!-- doxytag: member="GCV::ShaderDsc::m_vKeywords" ref="af1f9f6a99ce2227b5a7ceb0551c747e1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;string&gt; <a class="el" href="classGCV_1_1ShaderDsc.html#af1f9f6a99ce2227b5a7ceb0551c747e1">GCV::ShaderDsc::m_vKeywords</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>List of meta tag name. </p>

</div>
</div>
<a class="anchor" id="a7124bd03b434738ab1de57fa199b083a"></a><!-- doxytag: member="GCV::ShaderDsc::m_vValues" ref="a7124bd03b434738ab1de57fa199b083a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;string&gt; <a class="el" href="classGCV_1_1ShaderDsc.html#a7124bd03b434738ab1de57fa199b083a">GCV::ShaderDsc::m_vValues</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>List of meta tag values. </p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&nbsp;</span>Friends</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1">
<table border="0" width="100%">
<tr>
<td>
Retrieve latest informations, releases and documentation on <a href="https://picoforge.int-evry.fr/cgi-bin/twiki/view/Gpucv/Web/WebHome">GpuCV website</a>.
</td>
<td width ="50">
</td>
<td>
<address style="text-align: right;"><small>Generated
on Wed Oct 22 20:37:13 2008 for <a href="https://picoforge.int-evry.fr/cgi-bin/twiki/view/Gpucv/Web/WebHome">GpuCV</a> by&nbsp;
<a href="http://www.doxygen.org/index.html"><img
 src="doxygen.png" alt="doxygen" align="middle"
 border="0"></a> 1.5.4 </small></address>
 </td>
 </tr>
 </table>

Powered by WebSVN v1.61