1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
<!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"/>
<title>FreeMat: vtkShader</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.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">FreeMat
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('vtkrendering_vtkshader.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">vtkShader </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Section: <a class="el" href="sec_vtkrendering.html">Visualization Toolkit Rendering Classes</a> </p>
<h1><a class="anchor" id="Usage"></a>
Usage</h1>
<p>vtkShader is a base class for interfacing VTK to hardware shader libraries. vtkShader interprets a vtkXMLDataElement that describes a particular shader. Descendants of this class inherit this functionality and additionally interface to specific shader libraries like NVidia's Cg and OpenGL2.0 (GLSL) to perform operations, on individual shaders.</p>
<p>During each render, the vtkShaderProgram calls Compile(), PassShaderVariables(), Bind() and after the actor has been rendered, calls Unbind(), in that order.</p>
<p>To create an instance of class vtkShader, simply invoke its constructor as follows </p>
<pre class="fragment"> obj = vtkShader
</pre> <h1><a class="anchor" id="Methods"></a>
Methods</h1>
<p>The class vtkShader has several methods that can be used. They are listed below. Note that the documentation is translated automatically from the VTK sources, and may not be completely intelligible. When in doubt, consult the VTK website. In the methods listed below, <code>obj</code> is an instance of the vtkShader class. </p>
<ul>
<li>
<code>string = obj.GetClassName ()</code> </li>
<li>
<code>int = obj.IsA (string name)</code> </li>
<li>
<code>vtkShader = obj.NewInstance ()</code> </li>
<li>
<code>vtkShader = obj.SafeDownCast (vtkObject o)</code> </li>
<li>
<code>int = obj.Compile ()</code> - Called to compile the shader code. The subclasses must only compile the code in this method. Returns if the compile was successful. Subclasses should compile the code only if it was not already compiled. </li>
<li>
<code>obj.PassShaderVariables (vtkActor actor, vtkRenderer ren)</code> - Called to pass VTK actor/property/light values and other Shader variables over to the shader. This is called by the ShaderProgram during each render. </li>
<li>
<code>obj.Bind ()</code> - Called to unbind the shader. As with Bind(), this is only applicable to Cg. </li>
<li>
<code>obj.Unbind ()</code> - Release any graphics resources that are being consumed by this actor. The parameter window could be used to determine which graphic resources to release. </li>
<li>
<code>obj.ReleaseGraphicsResources (vtkWindow )</code> - Get/Set the XMLShader representation for this shader. A shader is not valid without a XMLShader. </li>
<li>
<code>obj.SetXMLShader (vtkXMLShader )</code> - Get/Set the XMLShader representation for this shader. A shader is not valid without a XMLShader. </li>
<li>
<code>vtkXMLShader = obj.GetXMLShader ()</code> - Get/Set the XMLShader representation for this shader. A shader is not valid without a XMLShader. </li>
<li>
<code>int = obj.HasShaderVariable (string name)</code> - Indicates if a variable by the given name exists. </li>
<li>
<code>obj.AddShaderVariable (string name, int num_of_elements, int values)</code> - Methods to add shader variables to this shader. The shader variable type must match with that declared in the Material xml, otherwise, the variable is not made available to the shader. </li>
<li>
<code>obj.AddShaderVariable (string name, int num_of_elements, float values)</code> - Methods to add shader variables to this shader. The shader variable type must match with that declared in the Material xml, otherwise, the variable is not made available to the shader. </li>
<li>
<code>obj.AddShaderVariable (string name, int num_of_elements, double values)</code> - Methods to add shader variables to this shader. The shader variable type must match with that declared in the Material xml, otherwise, the variable is not made available to the shader. </li>
<li>
<code>int = obj.GetShaderVariableSize (string name)</code> - Get number of elements in a Shader variable. Return 0 if failed to find the shader variable. </li>
<li>
<code>int = obj.GetShaderVariableType (string name)</code> - Returns the type of a Shader variable with the given name. Return 0 on error. </li>
<li>
<code>int = obj.GetShaderVariable (string name, int values)</code> - Methods to get the value of shader variables with the given name. Values must be at least the size of the shader variable (obtained by GetShaderVariableSize(). Returns if the operation was successful. </li>
<li>
<code>int = obj.GetShaderVariable (string name, float values)</code> - Methods to get the value of shader variables with the given name. Values must be at least the size of the shader variable (obtained by GetShaderVariableSize(). Returns if the operation was successful. </li>
<li>
<code>int = obj.GetShaderVariable (string name, double values)</code> - Methods to get the value of shader variables with the given name. Values must be at least the size of the shader variable (obtained by GetShaderVariableSize(). Returns if the operation was successful. </li>
<li>
<code>int = obj.GetScope ()</code> - Returns the scope of the shader i.e. if it's a vertex or fragment shader. (vtkXMLShader::SCOPE_VERTEX or vtkXMLShader::SCOPE_FRAGMENT). </li>
</ul>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">FreeMat Documentation</a></li><li class="navelem"><a class="el" href="sec_vtkrendering.html">Visualization Toolkit Rendering Classes</a></li>
<li class="footer">Generated on Thu Jul 25 2013 17:18:35 for FreeMat by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li>
</ul>
</div>
</body>
</html>
|