2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
4
<!ENTITY version "1.0.8">
6
<refentry id="cogl-Shaders-and-Programmable-Pipeline">
8
<refentrytitle role="top_of_page" id="cogl-Shaders-and-Programmable-Pipeline.top_of_page">Shaders and Programmable Pipeline</refentrytitle>
9
<manvolnum>3</manvolnum>
10
<refmiscinfo>COGL Library</refmiscinfo>
14
<refname>Shaders and Programmable Pipeline</refname>
15
<refpurpose>Fuctions for accessing the programmable GL pipeline</refpurpose>
18
<refsynopsisdiv id="cogl-Shaders-and-Programmable-Pipeline.synopsis" role="synopsis">
19
<title role="synopsis.title">Synopsis</title>
22
enum <link linkend="CoglShaderType">CoglShaderType</link>;
23
<link linkend="CoglHandle">CoglHandle</link> <link linkend="cogl-create-shader">cogl_create_shader</link> (<link linkend="CoglShaderType">CoglShaderType</link> shader_type);
24
<link linkend="CoglHandle">CoglHandle</link> <link linkend="cogl-shader-ref">cogl_shader_ref</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
25
<link linkend="void">void</link> <link linkend="cogl-shader-unref">cogl_shader_unref</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
26
<link linkend="gboolean">gboolean</link> <link linkend="cogl-is-shader">cogl_is_shader</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
27
<link linkend="void">void</link> <link linkend="cogl-shader-source">cogl_shader_source</link> (<link linkend="CoglHandle">CoglHandle</link> shader,
28
const <link linkend="gchar">gchar</link> *source);
29
<link linkend="void">void</link> <link linkend="cogl-shader-compile">cogl_shader_compile</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
30
<link linkend="gchar">gchar</link> * <link linkend="cogl-shader-get-info-log">cogl_shader_get_info_log</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
31
<link linkend="CoglShaderType">CoglShaderType</link> <link linkend="cogl-shader-get-type">cogl_shader_get_type</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
32
<link linkend="gboolean">gboolean</link> <link linkend="cogl-shader-is-compiled">cogl_shader_is_compiled</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
34
<link linkend="CoglHandle">CoglHandle</link> <link linkend="cogl-create-program">cogl_create_program</link> (void);
35
<link linkend="CoglHandle">CoglHandle</link> <link linkend="cogl-program-ref">cogl_program_ref</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
36
<link linkend="void">void</link> <link linkend="cogl-program-unref">cogl_program_unref</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
37
<link linkend="gboolean">gboolean</link> <link linkend="cogl-is-program">cogl_is_program</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
38
<link linkend="void">void</link> <link linkend="cogl-program-attach-shader">cogl_program_attach_shader</link> (<link linkend="CoglHandle">CoglHandle</link> program_handle,
39
<link linkend="CoglHandle">CoglHandle</link> shader_handle);
40
<link linkend="void">void</link> <link linkend="cogl-program-link">cogl_program_link</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
41
<link linkend="void">void</link> <link linkend="cogl-program-use">cogl_program_use</link> (<link linkend="CoglHandle">CoglHandle</link> handle);
42
<link linkend="int">int</link> <link linkend="cogl-program-get-uniform-location">cogl_program_get_uniform_location</link> (<link linkend="CoglHandle">CoglHandle</link> handle,
43
const <link linkend="char">char</link> *uniform_name);
44
<link linkend="void">void</link> <link linkend="cogl-program-uniform-1f">cogl_program_uniform_1f</link> (<link linkend="int">int</link> uniform_no,
45
<link linkend="float">float</link> value);
46
<link linkend="void">void</link> <link linkend="cogl-program-uniform-1i">cogl_program_uniform_1i</link> (<link linkend="int">int</link> uniform_no,
47
<link linkend="int">int</link> value);
48
<link linkend="void">void</link> <link linkend="cogl-program-uniform-float">cogl_program_uniform_float</link> (<link linkend="int">int</link> uniform_no,
49
<link linkend="int">int</link> size,
50
<link linkend="int">int</link> count,
51
const <link linkend="GLfloat">GLfloat</link> *value);
52
<link linkend="void">void</link> <link linkend="cogl-program-uniform-int">cogl_program_uniform_int</link> (<link linkend="int">int</link> uniform_no,
53
<link linkend="int">int</link> size,
54
<link linkend="int">int</link> count,
55
const <link linkend="int">int</link> *value);
56
<link linkend="void">void</link> <link linkend="cogl-program-uniform-matrix">cogl_program_uniform_matrix</link> (<link linkend="int">int</link> uniform_no,
57
<link linkend="int">int</link> size,
58
<link linkend="int">int</link> count,
59
<link linkend="gboolean">gboolean</link> transpose,
60
const <link linkend="float">float</link> *value);
72
<refsect1 id="cogl-Shaders-and-Programmable-Pipeline.description" role="desc">
73
<title role="desc.title">Description</title>
75
COGL allows accessing the GL programmable pipeline in order to create
76
vertex and fragment shaders.
79
The only supported format is GLSL shaders.</para>
84
<refsect1 id="cogl-Shaders-and-Programmable-Pipeline.details" role="details">
85
<title role="details.title">Details</title>
86
<refsect2 id="CoglShaderType" role="enum" condition="since:1.0">
87
<title>enum CoglShaderType</title>
88
<indexterm zone="CoglShaderType" role="1.0"><primary sortas="ShaderType">CoglShaderType</primary></indexterm><programlisting>typedef enum {
89
COGL_SHADER_TYPE_VERTEX,
90
COGL_SHADER_TYPE_FRAGMENT
94
Types of shaders</para>
96
</para><variablelist role="enum">
97
<varlistentry id="COGL-SHADER-TYPE-VERTEX--CAPS" role="constant">
98
<term><literal>COGL_SHADER_TYPE_VERTEX</literal></term>
99
<listitem><simpara> A program for proccessing vertices
100
</simpara></listitem>
102
<varlistentry id="COGL-SHADER-TYPE-FRAGMENT--CAPS" role="constant">
103
<term><literal>COGL_SHADER_TYPE_FRAGMENT</literal></term>
104
<listitem><simpara> A program for processing fragments
105
</simpara></listitem>
107
</variablelist><para role="since">Since 1.0</para></refsect2>
108
<refsect2 id="cogl-create-shader" role="function">
109
<title>cogl_create_shader ()</title>
110
<indexterm zone="cogl-create-shader"><primary sortas="create_shader">cogl_create_shader</primary></indexterm><programlisting><link linkend="CoglHandle">CoglHandle</link> cogl_create_shader (<link linkend="CoglShaderType">CoglShaderType</link> shader_type);</programlisting>
112
Create a new shader handle, use <link linkend="cogl-shader-source"><type>cogl_shader_source</type></link> to set the source code
113
to be used on it.</para>
115
</para><variablelist role="params">
116
<varlistentry><term><parameter>shader_type</parameter> :</term>
117
<listitem><simpara> CGL_VERTEX_SHADER or CGL_FRAGMENT_SHADER.
118
</simpara></listitem></varlistentry>
119
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new shader handle.
120
</simpara></listitem></varlistentry>
121
</variablelist></refsect2>
122
<refsect2 id="cogl-shader-ref" role="function">
123
<title>cogl_shader_ref ()</title>
124
<indexterm zone="cogl-shader-ref"><primary sortas="shader_ref">cogl_shader_ref</primary></indexterm><programlisting><link linkend="CoglHandle">CoglHandle</link> cogl_shader_ref (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
126
Add an extra reference to a shader.</para>
128
</para><variablelist role="params">
129
<varlistentry><term><parameter>handle</parameter> :</term>
130
<listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> to a shader.
131
</simpara></listitem></varlistentry>
132
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <parameter>handle</parameter>
133
</simpara></listitem></varlistentry>
134
</variablelist></refsect2>
135
<refsect2 id="cogl-shader-unref" role="function">
136
<title>cogl_shader_unref ()</title>
137
<indexterm zone="cogl-shader-unref"><primary sortas="shader_unref">cogl_shader_unref</primary></indexterm><programlisting><link linkend="void">void</link> cogl_shader_unref (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
139
Removes a reference to a shader. If it was the last reference the
140
shader object will be destroyed.</para>
142
</para><variablelist role="params">
143
<varlistentry><term><parameter>handle</parameter> :</term>
144
<listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> to a shader.
145
</simpara></listitem></varlistentry>
146
</variablelist></refsect2>
147
<refsect2 id="cogl-is-shader" role="function">
148
<title>cogl_is_shader ()</title>
149
<indexterm zone="cogl-is-shader"><primary sortas="is_shader">cogl_is_shader</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> cogl_is_shader (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
151
Gets whether the given handle references an existing shader object.</para>
153
</para><variablelist role="params">
154
<varlistentry><term><parameter>handle</parameter> :</term>
155
<listitem><simpara> A CoglHandle
156
</simpara></listitem></varlistentry>
157
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the handle references a shader,
158
<link linkend="FALSE--CAPS"><literal>FALSE</literal></link> otherwise
159
</simpara></listitem></varlistentry>
160
</variablelist></refsect2>
161
<refsect2 id="cogl-shader-source" role="function">
162
<title>cogl_shader_source ()</title>
163
<indexterm zone="cogl-shader-source"><primary sortas="shader_source">cogl_shader_source</primary></indexterm><programlisting><link linkend="void">void</link> cogl_shader_source (<link linkend="CoglHandle">CoglHandle</link> shader,
164
const <link linkend="gchar">gchar</link> *source);</programlisting>
166
Replaces the current GLSL source associated with a shader with a new
169
</para><variablelist role="params">
170
<varlistentry><term><parameter>shader</parameter> :</term>
171
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
172
</simpara></listitem></varlistentry>
173
<varlistentry><term><parameter>source</parameter> :</term>
174
<listitem><simpara> GLSL shader source.
175
</simpara></listitem></varlistentry>
176
</variablelist></refsect2>
177
<refsect2 id="cogl-shader-compile" role="function">
178
<title>cogl_shader_compile ()</title>
179
<indexterm zone="cogl-shader-compile"><primary sortas="shader_compile">cogl_shader_compile</primary></indexterm><programlisting><link linkend="void">void</link> cogl_shader_compile (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
181
Compiles the shader, no return value, but the shader is now ready for
182
linking into a program.</para>
184
</para><variablelist role="params">
185
<varlistentry><term><parameter>handle</parameter> :</term>
186
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
187
</simpara></listitem></varlistentry>
188
</variablelist></refsect2>
189
<refsect2 id="cogl-shader-get-info-log" role="function">
190
<title>cogl_shader_get_info_log ()</title>
191
<indexterm zone="cogl-shader-get-info-log"><primary sortas="shader_get_info_log">cogl_shader_get_info_log</primary></indexterm><programlisting><link linkend="gchar">gchar</link> * cogl_shader_get_info_log (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
193
Retrieves the information log for a coglobject, can be used in conjunction
194
with <link linkend="cogl-shader-get-parameteriv"><function>cogl_shader_get_parameteriv()</function></link> to retrieve the compiler warnings/error
195
messages that caused a shader to not compile correctly, mainly useful for
196
debugging purposes.</para>
198
</para><variablelist role="params">
199
<varlistentry><term><parameter>handle</parameter> :</term>
200
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
201
</simpara></listitem></varlistentry>
202
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a newly allocated string containing the info log. Use
203
<link linkend="g-free"><function>g_free()</function></link> to free it
204
</simpara></listitem></varlistentry>
205
</variablelist></refsect2>
206
<refsect2 id="cogl-shader-get-type" role="function">
207
<title>cogl_shader_get_type ()</title>
208
<indexterm zone="cogl-shader-get-type"><primary sortas="shader_get_type">cogl_shader_get_type</primary></indexterm><programlisting><link linkend="CoglShaderType">CoglShaderType</link> cogl_shader_get_type (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
210
Retrieves the type of a shader <link linkend="CoglHandle"><type>CoglHandle</type></link></para>
212
</para><variablelist role="params">
213
<varlistentry><term><parameter>handle</parameter> :</term>
214
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
215
</simpara></listitem></varlistentry>
216
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="COGL-SHADER-TYPE-VERTEX--CAPS"><literal>COGL_SHADER_TYPE_VERTEX</literal></link> if the shader is a vertex processor
217
or <link linkend="COGL-SHADER-TYPE-FRAGMENT--CAPS"><literal>COGL_SHADER_TYPE_FRAGMENT</literal></link> if the shader is a frament processor
218
</simpara></listitem></varlistentry>
219
</variablelist></refsect2>
220
<refsect2 id="cogl-shader-is-compiled" role="function">
221
<title>cogl_shader_is_compiled ()</title>
222
<indexterm zone="cogl-shader-is-compiled"><primary sortas="shader_is_compiled">cogl_shader_is_compiled</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> cogl_shader_is_compiled (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
224
Retrieves whether a shader <link linkend="CoglHandle"><type>CoglHandle</type></link> has been compiled</para>
226
</para><variablelist role="params">
227
<varlistentry><term><parameter>handle</parameter> :</term>
228
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
229
</simpara></listitem></varlistentry>
230
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the shader object has sucessfully be compiled
231
</simpara></listitem></varlistentry>
232
</variablelist></refsect2>
233
<refsect2 id="cogl-create-program" role="function">
234
<title>cogl_create_program ()</title>
235
<indexterm zone="cogl-create-program"><primary sortas="create_program">cogl_create_program</primary></indexterm><programlisting><link linkend="CoglHandle">CoglHandle</link> cogl_create_program (void);</programlisting>
237
Create a new cogl program object that can be used to replace parts of the GL
238
rendering pipeline with custom code.</para>
240
</para><variablelist role="params">
241
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new cogl program.
242
</simpara></listitem></varlistentry>
243
</variablelist></refsect2>
244
<refsect2 id="cogl-program-ref" role="function">
245
<title>cogl_program_ref ()</title>
246
<indexterm zone="cogl-program-ref"><primary sortas="program_ref">cogl_program_ref</primary></indexterm><programlisting><link linkend="CoglHandle">CoglHandle</link> cogl_program_ref (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
248
Add an extra reference to a program.</para>
250
</para><variablelist role="params">
251
<varlistentry><term><parameter>handle</parameter> :</term>
252
<listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> to a program.
253
</simpara></listitem></varlistentry>
254
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <parameter>handle</parameter>
255
</simpara></listitem></varlistentry>
256
</variablelist></refsect2>
257
<refsect2 id="cogl-program-unref" role="function">
258
<title>cogl_program_unref ()</title>
259
<indexterm zone="cogl-program-unref"><primary sortas="program_unref">cogl_program_unref</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_unref (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
261
Removes a reference to a program. If it was the last reference the
262
program object will be destroyed.</para>
264
</para><variablelist role="params">
265
<varlistentry><term><parameter>handle</parameter> :</term>
266
<listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> to a program.
267
</simpara></listitem></varlistentry>
268
</variablelist></refsect2>
269
<refsect2 id="cogl-is-program" role="function">
270
<title>cogl_is_program ()</title>
271
<indexterm zone="cogl-is-program"><primary sortas="is_program">cogl_is_program</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> cogl_is_program (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
273
Gets whether the given handle references an existing program object.</para>
275
</para><variablelist role="params">
276
<varlistentry><term><parameter>handle</parameter> :</term>
277
<listitem><simpara> A CoglHandle
278
</simpara></listitem></varlistentry>
279
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the handle references a program,
280
<link linkend="FALSE--CAPS"><literal>FALSE</literal></link> otherwise
281
</simpara></listitem></varlistentry>
282
</variablelist></refsect2>
283
<refsect2 id="cogl-program-attach-shader" role="function">
284
<title>cogl_program_attach_shader ()</title>
285
<indexterm zone="cogl-program-attach-shader"><primary sortas="program_attach_shader">cogl_program_attach_shader</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_attach_shader (<link linkend="CoglHandle">CoglHandle</link> program_handle,
286
<link linkend="CoglHandle">CoglHandle</link> shader_handle);</programlisting>
288
Attaches a shader to a program object, a program can have one vertex shader
289
and one fragment shader attached.</para>
291
</para><variablelist role="params">
292
<varlistentry><term><parameter>program_handle</parameter> :</term>
293
<listitem><simpara> a <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shdaer program.
294
</simpara></listitem></varlistentry>
295
<varlistentry><term><parameter>shader_handle</parameter> :</term>
296
<listitem><simpara> a <link linkend="CoglHandle"><type>CoglHandle</type></link> for a vertex of fragment shader.
297
</simpara></listitem></varlistentry>
298
</variablelist></refsect2>
299
<refsect2 id="cogl-program-link" role="function">
300
<title>cogl_program_link ()</title>
301
<indexterm zone="cogl-program-link"><primary sortas="program_link">cogl_program_link</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_link (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
303
Links a program making it ready for use.</para>
305
</para><variablelist role="params">
306
<varlistentry><term><parameter>handle</parameter> :</term>
307
<listitem><simpara> a <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader program.
308
</simpara></listitem></varlistentry>
309
</variablelist></refsect2>
310
<refsect2 id="cogl-program-use" role="function">
311
<title>cogl_program_use ()</title>
312
<indexterm zone="cogl-program-use"><primary sortas="program_use">cogl_program_use</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_use (<link linkend="CoglHandle">CoglHandle</link> handle);</programlisting>
314
Activate a specific shader program replacing that part of the GL
315
rendering pipeline, if passed in <link linkend="COGL-INVALID-HANDLE--CAPS"><literal>COGL_INVALID_HANDLE</literal></link> the default
316
behavior of GL is reinstated.</para>
318
</para><variablelist role="params">
319
<varlistentry><term><parameter>handle</parameter> :</term>
320
<listitem><simpara> a <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader program or <link linkend="COGL-INVALID-HANDLE--CAPS"><literal>COGL_INVALID_HANDLE</literal></link>.
321
</simpara></listitem></varlistentry>
322
</variablelist></refsect2>
323
<refsect2 id="cogl-program-get-uniform-location" role="function">
324
<title>cogl_program_get_uniform_location ()</title>
325
<indexterm zone="cogl-program-get-uniform-location"><primary sortas="program_get_uniform_location">cogl_program_get_uniform_location</primary></indexterm><programlisting><link linkend="int">int</link> cogl_program_get_uniform_location (<link linkend="CoglHandle">CoglHandle</link> handle,
326
const <link linkend="char">char</link> *uniform_name);</programlisting>
328
Retrieve the location (offset) of a uniform variable in a shader program,
329
a uniform is a variable that is constant for all vertices/fragments for a
330
shader object and is possible to modify as an external parameter.</para>
332
</para><variablelist role="params">
333
<varlistentry><term><parameter>handle</parameter> :</term>
334
<listitem><simpara> a <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader program.
335
</simpara></listitem></varlistentry>
336
<varlistentry><term><parameter>uniform_name</parameter> :</term>
337
<listitem><simpara> the name of a uniform.
338
</simpara></listitem></varlistentry>
339
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the offset of a uniform in a specified program.
340
This uniform can be set using <link linkend="cogl-program-uniform-1f"><function>cogl_program_uniform_1f()</function></link> when the
342
</simpara></listitem></varlistentry>
343
</variablelist></refsect2>
344
<refsect2 id="cogl-program-uniform-1f" role="function">
345
<title>cogl_program_uniform_1f ()</title>
346
<indexterm zone="cogl-program-uniform-1f"><primary sortas="program_uniform_1f">cogl_program_uniform_1f</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_uniform_1f (<link linkend="int">int</link> uniform_no,
347
<link linkend="float">float</link> value);</programlisting>
349
Changes the value of a floating point uniform in the currently
350
used (see <link linkend="cogl-program-use"><function>cogl_program_use()</function></link>) shader program.</para>
352
</para><variablelist role="params">
353
<varlistentry><term><parameter>uniform_no</parameter> :</term>
354
<listitem><simpara> the unform to set.
355
</simpara></listitem></varlistentry>
356
<varlistentry><term><parameter>value</parameter> :</term>
357
<listitem><simpara> the new value of the uniform.
358
</simpara></listitem></varlistentry>
359
</variablelist></refsect2>
360
<refsect2 id="cogl-program-uniform-1i" role="function">
361
<title>cogl_program_uniform_1i ()</title>
362
<indexterm zone="cogl-program-uniform-1i"><primary sortas="program_uniform_1i">cogl_program_uniform_1i</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_uniform_1i (<link linkend="int">int</link> uniform_no,
363
<link linkend="int">int</link> value);</programlisting>
365
Changes the value of an integer uniform in the currently
366
used (see <link linkend="cogl-program-use"><function>cogl_program_use()</function></link>) shader program.</para>
368
</para><variablelist role="params">
369
<varlistentry><term><parameter>uniform_no</parameter> :</term>
370
<listitem><simpara> the unform to set.
371
</simpara></listitem></varlistentry>
372
<varlistentry><term><parameter>value</parameter> :</term>
373
<listitem><simpara> the new value of the uniform.
374
</simpara></listitem></varlistentry>
375
</variablelist></refsect2>
376
<refsect2 id="cogl-program-uniform-float" role="function">
377
<title>cogl_program_uniform_float ()</title>
378
<indexterm zone="cogl-program-uniform-float"><primary sortas="program_uniform_float">cogl_program_uniform_float</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_uniform_float (<link linkend="int">int</link> uniform_no,
379
<link linkend="int">int</link> size,
380
<link linkend="int">int</link> count,
381
const <link linkend="GLfloat">GLfloat</link> *value);</programlisting>
383
Changes the value of a float vector uniform, or uniform array in the
384
currently used (see <link linkend="cogl-program-use"><type>cogl_program_use</type></link>) shader program.</para>
386
</para><variablelist role="params">
387
<varlistentry><term><parameter>uniform_no</parameter> :</term>
388
<listitem><simpara> the uniform to set.
389
</simpara></listitem></varlistentry>
390
<varlistentry><term><parameter>size</parameter> :</term>
391
<listitem><simpara> Size of float vector.
392
</simpara></listitem></varlistentry>
393
<varlistentry><term><parameter>count</parameter> :</term>
394
<listitem><simpara> Size of array of uniforms.
395
</simpara></listitem></varlistentry>
396
<varlistentry><term><parameter>value</parameter> :</term>
397
<listitem><simpara> the new value of the uniform.
398
</simpara></listitem></varlistentry>
399
</variablelist></refsect2>
400
<refsect2 id="cogl-program-uniform-int" role="function">
401
<title>cogl_program_uniform_int ()</title>
402
<indexterm zone="cogl-program-uniform-int"><primary sortas="program_uniform_int">cogl_program_uniform_int</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_uniform_int (<link linkend="int">int</link> uniform_no,
403
<link linkend="int">int</link> size,
404
<link linkend="int">int</link> count,
405
const <link linkend="int">int</link> *value);</programlisting>
407
Changes the value of a int vector uniform, or uniform array in the
408
currently used (see <link linkend="cogl-program-use"><function>cogl_program_use()</function></link>) shader program.</para>
410
</para><variablelist role="params">
411
<varlistentry><term><parameter>uniform_no</parameter> :</term>
412
<listitem><simpara> the uniform to set.
413
</simpara></listitem></varlistentry>
414
<varlistentry><term><parameter>size</parameter> :</term>
415
<listitem><simpara> Size of int vector.
416
</simpara></listitem></varlistentry>
417
<varlistentry><term><parameter>count</parameter> :</term>
418
<listitem><simpara> Size of array of uniforms.
419
</simpara></listitem></varlistentry>
420
<varlistentry><term><parameter>value</parameter> :</term>
421
<listitem><simpara> the new value of the uniform.
422
</simpara></listitem></varlistentry>
423
</variablelist></refsect2>
424
<refsect2 id="cogl-program-uniform-matrix" role="function">
425
<title>cogl_program_uniform_matrix ()</title>
426
<indexterm zone="cogl-program-uniform-matrix"><primary sortas="program_uniform_matrix">cogl_program_uniform_matrix</primary></indexterm><programlisting><link linkend="void">void</link> cogl_program_uniform_matrix (<link linkend="int">int</link> uniform_no,
427
<link linkend="int">int</link> size,
428
<link linkend="int">int</link> count,
429
<link linkend="gboolean">gboolean</link> transpose,
430
const <link linkend="float">float</link> *value);</programlisting>
432
Changes the value of a matrix uniform, or uniform array in the
433
currently used (see <link linkend="cogl-program-use"><function>cogl_program_use()</function></link>) shader program. The <parameter>size</parameter>
434
parameter is used to determine the square size of the matrix.</para>
436
</para><variablelist role="params">
437
<varlistentry><term><parameter>uniform_no</parameter> :</term>
438
<listitem><simpara> the uniform to set.
439
</simpara></listitem></varlistentry>
440
<varlistentry><term><parameter>size</parameter> :</term>
441
<listitem><simpara> Size of matrix.
442
</simpara></listitem></varlistentry>
443
<varlistentry><term><parameter>count</parameter> :</term>
444
<listitem><simpara> Size of array of uniforms.
445
</simpara></listitem></varlistentry>
446
<varlistentry><term><parameter>transpose</parameter> :</term>
447
<listitem><simpara> Whether to transpose the matrix when setting the uniform.
448
</simpara></listitem></varlistentry>
449
<varlistentry><term><parameter>value</parameter> :</term>
450
<listitem><simpara> the new value of the uniform.
451
</simpara></listitem></varlistentry>
452
</variablelist></refsect2>