Blob Blame History Raw
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Shaders: Clutter Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="Clutter Reference Manual">
<link rel="up" href="deprecated.html" title="Part X. Deprecated Classes">
<link rel="prev" href="ClutterScore.html" title="ClutterScore">
<link rel="next" href="ClutterState.html" title="ClutterState">
<meta name="generator" content="GTK-Doc V1.25.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#clutter-Shaders.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
                  <a href="#clutter-Shaders.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
                  <a href="#clutter-Shaders.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="deprecated.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="ClutterScore.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="ClutterState.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="clutter-Shaders"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="clutter-Shaders.top_of_page"></a>Shaders</span></h2>
<p>Shaders — Programmable pipeline abstraction</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="clutter-Shaders.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
<col class="functions_name">
</colgroup>
<tbody>
<tr>
<td class="function_type">
<a class="link" href="clutter-Shaders.html#ClutterShader"><span class="returnvalue">ClutterShader</span></a> *
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-new" title="clutter_shader_new ()">clutter_shader_new</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-set-vertex-source" title="clutter_shader_set_vertex_source ()">clutter_shader_set_vertex_source</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">gchar</span> *
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-get-vertex-source" title="clutter_shader_get_vertex_source ()">clutter_shader_get_vertex_source</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-set-fragment-source" title="clutter_shader_set_fragment_source ()">clutter_shader_set_fragment_source</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">gchar</span> *
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-get-fragment-source" title="clutter_shader_get_fragment_source ()">clutter_shader_get_fragment_source</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-compile" title="clutter_shader_compile ()">clutter_shader_compile</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-release" title="clutter_shader_release ()">clutter_shader_release</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-is-compiled" title="clutter_shader_is_compiled ()">clutter_shader_is_compiled</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-set-is-enabled" title="clutter_shader_set_is_enabled ()">clutter_shader_set_is_enabled</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">gboolean</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-get-is-enabled" title="clutter_shader_get_is_enabled ()">clutter_shader_get_is_enabled</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-set-uniform" title="clutter_shader_set_uniform ()">clutter_shader_set_uniform</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">CoglHandle</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-get-cogl-program" title="clutter_shader_get_cogl_program ()">clutter_shader_get_cogl_program</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">CoglHandle</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-get-cogl-fragment-shader" title="clutter_shader_get_cogl_fragment_shader ()">clutter_shader_get_cogl_fragment_shader</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">CoglHandle</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-shader-get-cogl-vertex-shader" title="clutter_shader_get_cogl_vertex_shader ()">clutter_shader_get_cogl_vertex_shader</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#CLUTTER-VALUE-HOLDS-SHADER-FLOAT:CAPS" title="CLUTTER_VALUE_HOLDS_SHADER_FLOAT()">CLUTTER_VALUE_HOLDS_SHADER_FLOAT</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-value-set-shader-float" title="clutter_value_set_shader_float ()">clutter_value_set_shader_float</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">gfloat</span> *
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-value-get-shader-float" title="clutter_value_get_shader_float ()">clutter_value_get_shader_float</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#CLUTTER-VALUE-HOLDS-SHADER-INT:CAPS" title="CLUTTER_VALUE_HOLDS_SHADER_INT()">CLUTTER_VALUE_HOLDS_SHADER_INT</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-value-set-shader-int" title="clutter_value_set_shader_int ()">clutter_value_set_shader_int</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">gint</span> *
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-value-get-shader-int" title="clutter_value_get_shader_int ()">clutter_value_get_shader_int</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#CLUTTER-VALUE-HOLDS-SHADER-MATRIX:CAPS" title="CLUTTER_VALUE_HOLDS_SHADER_MATRIX()">CLUTTER_VALUE_HOLDS_SHADER_MATRIX</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-value-set-shader-matrix" title="clutter_value_set_shader_matrix ()">clutter_value_set_shader_matrix</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">gfloat</span> *
</td>
<td class="function_name">
<a class="link" href="clutter-Shaders.html#clutter-value-get-shader-matrix" title="clutter_value_get_shader_matrix ()">clutter_value_get_shader_matrix</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="clutter-Shaders.properties"></a><h2>Properties</h2>
<div class="informaltable"><table class="informaltable" border="0">
<colgroup>
<col width="150px" class="properties_type">
<col width="300px" class="properties_name">
<col width="200px" class="properties_flags">
</colgroup>
<tbody>
<tr>
<td class="property_type"><span class="type">gboolean</span></td>
<td class="property_name"><a class="link" href="clutter-Shaders.html#ClutterShader--compiled" title="The “compiled” property">compiled</a></td>
<td class="property_flags">Read</td>
</tr>
<tr>
<td class="property_type"><span class="type">gboolean</span></td>
<td class="property_name"><a class="link" href="clutter-Shaders.html#ClutterShader--enabled" title="The “enabled” property">enabled</a></td>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type">
<span class="type">gchar</span> *</td>
<td class="property_name"><a class="link" href="clutter-Shaders.html#ClutterShader--fragment-source" title="The “fragment-source” property">fragment-source</a></td>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type">
<span class="type">gchar</span> *</td>
<td class="property_name"><a class="link" href="clutter-Shaders.html#ClutterShader--vertex-source" title="The “vertex-source” property">vertex-source</a></td>
<td class="property_flags">Read / Write</td>
</tr>
</tbody>
</table></div>
</div>
<a name="ClutterShader"></a><a name="ClutterShaderFloat"></a><a name="ClutterShaderInt"></a><a name="ClutterShaderMatrix"></a><div class="refsect1">
<a name="clutter-Shaders.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody>
<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="clutter-Shaders.html#ClutterShaderError" title="enum ClutterShaderError">ClutterShaderError</a></td>
</tr>
<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="clutter-Shaders.html#ClutterShader-struct" title="ClutterShader">ClutterShader</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="clutter-Shaders.html#ClutterShaderClass" title="struct ClutterShaderClass">ClutterShaderClass</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="clutter-Shaders.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen">    ClutterShaderFloat
    ClutterShaderInt
    ClutterShaderMatrix
    GObject
    <span class="lineart">╰──</span> ClutterShader
</pre>
</div>
<div class="refsect1">
<a name="clutter-Shaders.description"></a><h2>Description</h2>
<p><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> is an object providing an abstraction over the
OpenGL programmable pipeline. By using <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a>s is
possible to override the drawing pipeline by using small programs
also known as "shaders".</p>
<p><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> is available since Clutter 0.6.</p>
<p><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> is deprecated since Clutter 1.8; use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a>
in newly written code, instead.</p>
</div>
<div class="refsect1">
<a name="clutter-Shaders.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="clutter-shader-new"></a><h3>clutter_shader_new ()</h3>
<pre class="programlisting"><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="returnvalue">ClutterShader</span></a> *
clutter_shader_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_new</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Create a new <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> instance.</p>
<div class="refsect3">
<a name="clutter-shader-new.returns"></a><h4>Returns</h4>
<p> a new <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a>.</p>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-set-vertex-source"></a><h3>clutter_shader_set_vertex_source ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_shader_set_vertex_source (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>,
                                  <em class="parameter"><code>const <span class="type">gchar</span> *data</code></em>,
                                  <em class="parameter"><code><span class="type">gssize</span> length</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_set_vertex_source</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Sets the GLSL source code to be used by a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> for the vertex
program.</p>
<div class="refsect3">
<a name="clutter-shader-set-vertex-source.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>data</p></td>
<td class="parameter_description"><p>GLSL source code.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>length</p></td>
<td class="parameter_description"><p>length of source buffer (currently ignored)</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-get-vertex-source"></a><h3>clutter_shader_get_vertex_source ()</h3>
<pre class="programlisting">const <span class="returnvalue">gchar</span> *
clutter_shader_get_vertex_source (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_get_vertex_source</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Query the current GLSL vertex source set on <em class="parameter"><code>shader</code></em>
.</p>
<div class="refsect3">
<a name="clutter-shader-get-vertex-source.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-get-vertex-source.returns"></a><h4>Returns</h4>
<p> the source of the vertex shader for this
ClutterShader object or <code class="literal">NULL</code>. The returned string is owned by the
shader object and should never be modified or freed</p>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-set-fragment-source"></a><h3>clutter_shader_set_fragment_source ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_shader_set_fragment_source (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>,
                                    <em class="parameter"><code>const <span class="type">gchar</span> *data</code></em>,
                                    <em class="parameter"><code><span class="type">gssize</span> length</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_set_fragment_source</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Sets the GLSL source code to be used by a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> for the fragment
program.</p>
<div class="refsect3">
<a name="clutter-shader-set-fragment-source.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>data</p></td>
<td class="parameter_description"><p>GLSL source code.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>length</p></td>
<td class="parameter_description"><p>length of source buffer (currently ignored)</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-get-fragment-source"></a><h3>clutter_shader_get_fragment_source ()</h3>
<pre class="programlisting">const <span class="returnvalue">gchar</span> *
clutter_shader_get_fragment_source (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_get_fragment_source</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Query the current GLSL fragment source set on <em class="parameter"><code>shader</code></em>
.</p>
<div class="refsect3">
<a name="clutter-shader-get-fragment-source.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-get-fragment-source.returns"></a><h4>Returns</h4>
<p> the source of the fragment shader for this
ClutterShader object or <code class="literal">NULL</code>. The returned string is owned by the
shader object and should never be modified or freed</p>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-compile"></a><h3>clutter_shader_compile ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
clutter_shader_compile (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>,
                        <em class="parameter"><code><span class="type">GError</span> **error</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_compile</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Compiles and links GLSL sources set for vertex and fragment shaders for
a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a>. If the compilation fails and a <span class="type">GError</span> return location is
provided the error will contain the errors from the compiler, if any.</p>
<div class="refsect3">
<a name="clutter-shader-compile.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>return location for a <span class="type">GError</span>, or <code class="literal">NULL</code></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-compile.returns"></a><h4>Returns</h4>
<p> returns TRUE if the shader was succesfully compiled.</p>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-release"></a><h3>clutter_shader_release ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_shader_release (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_release</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Frees up any GL context resources held by the shader.</p>
<div class="refsect3">
<a name="clutter-shader-release.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-is-compiled"></a><h3>clutter_shader_is_compiled ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
clutter_shader_is_compiled (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_is_compiled</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Checks whether <em class="parameter"><code>shader</code></em>
 is is currently compiled, linked and bound
to the GL context.</p>
<div class="refsect3">
<a name="clutter-shader-is-compiled.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-is-compiled.returns"></a><h4>Returns</h4>
<p> <code class="literal">TRUE</code> if the shader is compiled, linked and ready for use.</p>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-set-is-enabled"></a><h3>clutter_shader_set_is_enabled ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_shader_set_is_enabled (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>,
                               <em class="parameter"><code><span class="type">gboolean</span> enabled</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_set_is_enabled</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Enables a shader. This function will attempt to compile and link
the shader, if it isn't already.</p>
<p>When <em class="parameter"><code>enabled</code></em>
 is <code class="literal">FALSE</code> the default state of the GL pipeline will be
used instead.</p>
<div class="refsect3">
<a name="clutter-shader-set-is-enabled.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>enabled</p></td>
<td class="parameter_description"><p>The new state of the shader.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-get-is-enabled"></a><h3>clutter_shader_get_is_enabled ()</h3>
<pre class="programlisting"><span class="returnvalue">gboolean</span>
clutter_shader_get_is_enabled (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_get_is_enabled</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Checks whether <em class="parameter"><code>shader</code></em>
 is enabled.</p>
<div class="refsect3">
<a name="clutter-shader-get-is-enabled.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-get-is-enabled.returns"></a><h4>Returns</h4>
<p> <code class="literal">TRUE</code> if the shader is enabled.</p>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-set-uniform"></a><h3>clutter_shader_set_uniform ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_shader_set_uniform (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>,
                            <em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>,
                            <em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_set_uniform</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Sets a user configurable variable in the GLSL shader programs attached to
a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a>.</p>
<div class="refsect3">
<a name="clutter-shader-set-uniform.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>name</p></td>
<td class="parameter_description"><p>name of uniform in GLSL shader program to set.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShaderFloat"><span class="type">ClutterShaderFloat</span></a>, <a class="link" href="clutter-Shaders.html#ClutterShaderInt"><span class="type">ClutterShaderInt</span></a> or <a class="link" href="clutter-Shaders.html#ClutterShaderMatrix"><span class="type">ClutterShaderMatrix</span></a>
<span class="type">GValue</span>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-get-cogl-program"></a><h3>clutter_shader_get_cogl_program ()</h3>
<pre class="programlisting"><span class="returnvalue">CoglHandle</span>
clutter_shader_get_cogl_program (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_get_cogl_program</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Retrieves the underlying <span class="type">CoglHandle</span> for the shader program.</p>
<div class="refsect3">
<a name="clutter-shader-get-cogl-program.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-get-cogl-program.returns"></a><h4>Returns</h4>
<p> A <span class="type">CoglHandle</span> for the shader program,
or <code class="literal">NULL</code>. The handle is owned by the <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> and it should
not be unreferenced. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-get-cogl-fragment-shader"></a><h3>clutter_shader_get_cogl_fragment_shader ()</h3>
<pre class="programlisting"><span class="returnvalue">CoglHandle</span>
clutter_shader_get_cogl_fragment_shader
                               (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_get_cogl_fragment_shader</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Retrieves the underlying <span class="type">CoglHandle</span> for the fragment shader.</p>
<div class="refsect3">
<a name="clutter-shader-get-cogl-fragment-shader.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-get-cogl-fragment-shader.returns"></a><h4>Returns</h4>
<p> A <span class="type">CoglHandle</span> for the fragment
shader, or <code class="literal">NULL</code>. The handle is owned by the <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a>
and it should not be unreferenced. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-shader-get-cogl-vertex-shader"></a><h3>clutter_shader_get_cogl_vertex_shader ()</h3>
<pre class="programlisting"><span class="returnvalue">CoglHandle</span>
clutter_shader_get_cogl_vertex_shader (<em class="parameter"><code><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> *shader</code></em>);</pre>
<div class="warning">
<p><code class="literal">clutter_shader_get_cogl_vertex_shader</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Retrieves the underlying <span class="type">CoglHandle</span> for the vertex shader.</p>
<div class="refsect3">
<a name="clutter-shader-get-cogl-vertex-shader.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>shader</p></td>
<td class="parameter_description"><p>a <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-shader-get-cogl-vertex-shader.returns"></a><h4>Returns</h4>
<p> A <span class="type">CoglHandle</span> for the vertex
shader, or <code class="literal">NULL</code>. The handle is owned by the <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a>
and it should not be unreferenced. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="CLUTTER-VALUE-HOLDS-SHADER-FLOAT:CAPS"></a><h3>CLUTTER_VALUE_HOLDS_SHADER_FLOAT()</h3>
<pre class="programlisting">#define CLUTTER_VALUE_HOLDS_SHADER_FLOAT(x) (G_VALUE_HOLDS ((x), CLUTTER_TYPE_SHADER_FLOAT))
</pre>
<p>Evaluates to <code class="literal">TRUE</code> if <em class="parameter"><code>x</code></em>
 holds a <a class="link" href="clutter-Shaders.html#ClutterShaderFloat"><span class="type">ClutterShaderFloat</span></a>.</p>
<div class="refsect3">
<a name="CLUTTER-VALUE-HOLDS-SHADER-FLOAT.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-value-set-shader-float"></a><h3>clutter_value_set_shader_float ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_value_set_shader_float (<em class="parameter"><code><span class="type">GValue</span> *value</code></em>,
                                <em class="parameter"><code><span class="type">gint</span> size</code></em>,
                                <em class="parameter"><code>const <span class="type">gfloat</span> *floats</code></em>);</pre>
<p>Sets <em class="parameter"><code>floats</code></em>
 as the contents of <em class="parameter"><code>value</code></em>
. The passed <span class="type">GValue</span>
must have been initialized using <code class="literal">CLUTTER_TYPE_SHADER_FLOAT</code>.</p>
<div class="refsect3">
<a name="clutter-value-set-shader-float.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>size</p></td>
<td class="parameter_description"><p>number of floating point values in <em class="parameter"><code>floats</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>floats</p></td>
<td class="parameter_description"><p> an array of floating point values. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-value-get-shader-float"></a><h3>clutter_value_get_shader_float ()</h3>
<pre class="programlisting">const <span class="returnvalue">gfloat</span> *
clutter_value_get_shader_float (<em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>,
                                <em class="parameter"><code><span class="type">gsize</span> *length</code></em>);</pre>
<p>Retrieves the list of floating point values stored inside
the passed <span class="type">GValue</span>. <em class="parameter"><code>value</code></em>
 must have been initialized with
<code class="literal">CLUTTER_TYPE_SHADER_FLOAT</code>.</p>
<div class="refsect3">
<a name="clutter-value-get-shader-float.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>length</p></td>
<td class="parameter_description"><p> return location for the number of returned floating
point values, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-value-get-shader-float.returns"></a><h4>Returns</h4>
<p> the pointer to a list of
floating point values.  The returned value is owned by the
<span class="type">GValue</span> and should never be modified or freed. </p>
<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="CLUTTER-VALUE-HOLDS-SHADER-INT:CAPS"></a><h3>CLUTTER_VALUE_HOLDS_SHADER_INT()</h3>
<pre class="programlisting">#define CLUTTER_VALUE_HOLDS_SHADER_INT(x) (G_VALUE_HOLDS ((x), CLUTTER_TYPE_SHADER_INT))
</pre>
<p>Evaluates to <code class="literal">TRUE</code> if <em class="parameter"><code>x</code></em>
 holds a <a class="link" href="clutter-Shaders.html#ClutterShaderInt"><span class="type">ClutterShaderInt</span></a>.</p>
<div class="refsect3">
<a name="CLUTTER-VALUE-HOLDS-SHADER-INT.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-value-set-shader-int"></a><h3>clutter_value_set_shader_int ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_value_set_shader_int (<em class="parameter"><code><span class="type">GValue</span> *value</code></em>,
                              <em class="parameter"><code><span class="type">gint</span> size</code></em>,
                              <em class="parameter"><code>const <span class="type">gint</span> *ints</code></em>);</pre>
<p>Sets <em class="parameter"><code>ints</code></em>
 as the contents of <em class="parameter"><code>value</code></em>
. The passed <span class="type">GValue</span>
must have been initialized using <code class="literal">CLUTTER_TYPE_SHADER_INT</code>.</p>
<div class="refsect3">
<a name="clutter-value-set-shader-int.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>size</p></td>
<td class="parameter_description"><p>number of integer values in <em class="parameter"><code>ints</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>ints</p></td>
<td class="parameter_description"><p> an array of integer values. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-value-get-shader-int"></a><h3>clutter_value_get_shader_int ()</h3>
<pre class="programlisting">const <span class="returnvalue">gint</span> *
clutter_value_get_shader_int (<em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>,
                              <em class="parameter"><code><span class="type">gsize</span> *length</code></em>);</pre>
<p>Retrieves the list of integer values stored inside the passed
<span class="type">GValue</span>. <em class="parameter"><code>value</code></em>
 must have been initialized with
<code class="literal">CLUTTER_TYPE_SHADER_INT</code>.</p>
<div class="refsect3">
<a name="clutter-value-get-shader-int.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>length</p></td>
<td class="parameter_description"><p> return location for the number of returned integer
values, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-value-get-shader-int.returns"></a><h4>Returns</h4>
<p> the pointer to a list of
integer values.  The returned value is owned by the <span class="type">GValue</span> and
should never be modified or freed. </p>
<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="CLUTTER-VALUE-HOLDS-SHADER-MATRIX:CAPS"></a><h3>CLUTTER_VALUE_HOLDS_SHADER_MATRIX()</h3>
<pre class="programlisting">#define CLUTTER_VALUE_HOLDS_SHADER_MATRIX(x) (G_VALUE_HOLDS ((x), CLUTTER_TYPE_SHADER_MATRIX))
</pre>
<p>Evaluates to <code class="literal">TRUE</code> if <em class="parameter"><code>x</code></em>
 holds a <a class="link" href="clutter-Shaders.html#ClutterShaderMatrix"><span class="type">ClutterShaderMatrix</span></a>.</p>
<div class="refsect3">
<a name="CLUTTER-VALUE-HOLDS-SHADER-MATRIX.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>x</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix07.html#api-index-1.0">1.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-value-set-shader-matrix"></a><h3>clutter_value_set_shader_matrix ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
clutter_value_set_shader_matrix (<em class="parameter"><code><span class="type">GValue</span> *value</code></em>,
                                 <em class="parameter"><code><span class="type">gint</span> size</code></em>,
                                 <em class="parameter"><code>const <span class="type">gfloat</span> *matrix</code></em>);</pre>
<p>Sets <em class="parameter"><code>matrix</code></em>
 as the contents of <em class="parameter"><code>value</code></em>
. The passed <span class="type">GValue</span>
must have been initialized using <code class="literal">CLUTTER_TYPE_SHADER_MATRIX</code>.</p>
<div class="refsect3">
<a name="clutter-value-set-shader-matrix.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>size</p></td>
<td class="parameter_description"><p>number of floating point values in <em class="parameter"><code>floats</code></em>
</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>matrix</p></td>
<td class="parameter_description"><p> a matrix of floating point values. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="clutter-value-get-shader-matrix"></a><h3>clutter_value_get_shader_matrix ()</h3>
<pre class="programlisting">const <span class="returnvalue">gfloat</span> *
clutter_value_get_shader_matrix (<em class="parameter"><code>const <span class="type">GValue</span> *value</code></em>,
                                 <em class="parameter"><code><span class="type">gsize</span> *length</code></em>);</pre>
<p>Retrieves a matrix of floating point values stored inside
the passed <span class="type">GValue</span>. <em class="parameter"><code>value</code></em>
 must have been initialized with
<code class="literal">CLUTTER_TYPE_SHADER_MATRIX</code>.</p>
<div class="refsect3">
<a name="clutter-value-get-shader-matrix.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>value</p></td>
<td class="parameter_description"><p>a <span class="type">GValue</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>length</p></td>
<td class="parameter_description"><p> return location for the number of returned floating
point values, or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="clutter-value-get-shader-matrix.returns"></a><h4>Returns</h4>
<p> the pointer to a matrix
of floating point values. The returned value is owned by the <span class="type">GValue</span> and
should never be modified or freed. </p>
<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
</div>
<div class="refsect1">
<a name="clutter-Shaders.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="ClutterShaderError"></a><h3>enum ClutterShaderError</h3>
<div class="warning"><p><code class="literal">ClutterShaderError</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p></div>
<p><a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> error enumeration</p>
<div class="refsect3">
<a name="ClutterShaderError.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
<col class="enum_members_description">
<col width="200px" class="enum_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="CLUTTER-SHADER-ERROR-NO-ASM:CAPS"></a>CLUTTER_SHADER_ERROR_NO_ASM</p></td>
<td class="enum_member_description">
<p>No ASM shaders support</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="CLUTTER-SHADER-ERROR-NO-GLSL:CAPS"></a>CLUTTER_SHADER_ERROR_NO_GLSL</p></td>
<td class="enum_member_description">
<p>No GLSL shaders support</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="CLUTTER-SHADER-ERROR-COMPILE:CAPS"></a>CLUTTER_SHADER_ERROR_COMPILE</p></td>
<td class="enum_member_description">
<p>Compilation error</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="ClutterShader-struct"></a><h3>ClutterShader</h3>
<pre class="programlisting">typedef struct _ClutterShader ClutterShader;</pre>
<div class="warning">
<p><code class="literal">ClutterShader</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead</p>
</div>
<p>The <a class="link" href="clutter-Shaders.html#ClutterShader"><span class="type">ClutterShader</span></a> structure contains only private data
and should be accessed using the provided API</p>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="ClutterShaderClass"></a><h3>struct ClutterShaderClass</h3>
<pre class="programlisting">struct ClutterShaderClass {
};
</pre>
<div class="warning">
<p><code class="literal">ClutterShaderClass</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html#ClutterShaderEffectClass" title="struct ClutterShaderEffectClass"><span class="type">ClutterShaderEffectClass</span></a> instead</p>
</div>
<p>The <a class="link" href="clutter-Shaders.html#ClutterShaderClass" title="struct ClutterShaderClass"><span class="type">ClutterShaderClass</span></a> structure contains only private data</p>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
</div>
<div class="refsect1">
<a name="clutter-Shaders.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
<a name="ClutterShader--compiled"></a><h3>The <code class="literal">“compiled”</code> property</h3>
<pre class="programlisting">  “compiled”                 <span class="type">gboolean</span></pre>
<p>Whether the shader is compiled and linked, ready for use
in the GL context.</p>
<div class="warning">
<p><code class="literal">ClutterShader:compiled</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Flags: Read</p>
<p>Default value: FALSE</p>
<p class="since">Since: <a class="link" href="ix06.html#api-index-0.8">0.8</a></p>
</div>
<hr>
<div class="refsect2">
<a name="ClutterShader--enabled"></a><h3>The <code class="literal">“enabled”</code> property</h3>
<pre class="programlisting">  “enabled”                  <span class="type">gboolean</span></pre>
<p>Whether the shader is currently used in the GL rendering pipeline.</p>
<div class="warning">
<p><code class="literal">ClutterShader:enabled</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Flags: Read / Write</p>
<p>Default value: FALSE</p>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="ClutterShader--fragment-source"></a><h3>The <code class="literal">“fragment-source”</code> property</h3>
<pre class="programlisting">  “fragment-source”          <span class="type">gchar</span> *</pre>
<p>GLSL source code for the fragment shader part of the shader program.</p>
<div class="warning">
<p><code class="literal">ClutterShader:fragment-source</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Flags: Read / Write</p>
<p>Default value: NULL</p>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
<hr>
<div class="refsect2">
<a name="ClutterShader--vertex-source"></a><h3>The <code class="literal">“vertex-source”</code> property</h3>
<pre class="programlisting">  “vertex-source”            <span class="type">gchar</span> *</pre>
<p>GLSL source code for the vertex shader part of the shader
program, if any</p>
<div class="warning">
<p><code class="literal">ClutterShader:vertex-source</code> has been deprecated since version 1.8 and should not be used in newly-written code.</p>
<p>Use <a class="link" href="ClutterShaderEffect.html" title="ClutterShaderEffect"><span class="type">ClutterShaderEffect</span></a> instead.</p>
</div>
<p>Flags: Read / Write</p>
<p>Default value: NULL</p>
<p class="since">Since: <a class="link" href="ix05.html#api-index-0.6">0.6</a></p>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25.1</div>
</body>
</html>