~oem-solutions-group/unity-2d/clutter-1.0

« back to all changes in this revision

Viewing changes to doc/reference/cogl/xml/cogl-shaders.xml

  • Committer: Bazaar Package Importer
  • Author(s): Emilio Pozuelo Monfort
  • Date: 2010-03-21 13:27:56 UTC
  • mto: (2.1.3 experimental)
  • mto: This revision was merged to the branch mainline in revision 8.
  • Revision ID: james.westby@ubuntu.com-20100321132756-nf8yd30yxo3zzwcm
Tags: upstream-1.2.2
ImportĀ upstreamĀ versionĀ 1.2.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?xml version="1.0"?>
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">
5
 
]>
6
 
<refentry id="cogl-Shaders-and-Programmable-Pipeline">
7
 
<refmeta>
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>
11
 
</refmeta>
12
 
 
13
 
<refnamediv>
14
 
<refname>Shaders and Programmable Pipeline</refname>
15
 
<refpurpose>Fuctions for accessing the programmable GL pipeline</refpurpose>
16
 
</refnamediv>
17
 
 
18
 
<refsynopsisdiv id="cogl-Shaders-and-Programmable-Pipeline.synopsis" role="synopsis">
19
 
<title role="synopsis.title">Synopsis</title>
20
 
 
21
 
<synopsis>
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);
33
 
 
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);
61
 
</synopsis>
62
 
</refsynopsisdiv>
63
 
 
64
 
 
65
 
 
66
 
 
67
 
 
68
 
 
69
 
 
70
 
 
71
 
 
72
 
<refsect1 id="cogl-Shaders-and-Programmable-Pipeline.description" role="desc">
73
 
<title role="desc.title">Description</title>
74
 
<para>
75
 
COGL allows accessing the GL programmable pipeline in order to create
76
 
vertex and fragment shaders.
77
 
</para>
78
 
<para>
79
 
The only supported format is GLSL shaders.</para>
80
 
<para>
81
 
</para>
82
 
</refsect1>
83
 
 
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
91
 
} CoglShaderType;
92
 
</programlisting>
93
 
<para>
94
 
Types of shaders</para>
95
 
<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>
101
 
</varlistentry>
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>
106
 
</varlistentry>
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>
111
 
<para>
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>
114
 
<para>
115
 
</para><variablelist role="params">
116
 
<varlistentry><term><parameter>shader_type</parameter>&#160;:</term>
117
 
<listitem><simpara> CGL_VERTEX_SHADER or CGL_FRAGMENT_SHADER.
118
 
</simpara></listitem></varlistentry>
119
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
125
 
<para>
126
 
Add an extra reference to a shader.</para>
127
 
<para>
128
 
</para><variablelist role="params">
129
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>&#160;:</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>
138
 
<para>
139
 
Removes a reference to a shader. If it was the last reference the
140
 
shader object will be destroyed.</para>
141
 
<para>
142
 
</para><variablelist role="params">
143
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>
150
 
<para>
151
 
Gets whether the given handle references an existing shader object.</para>
152
 
<para>
153
 
</para><variablelist role="params">
154
 
<varlistentry><term><parameter>handle</parameter>&#160;:</term>
155
 
<listitem><simpara> A CoglHandle
156
 
</simpara></listitem></varlistentry>
157
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
165
 
<para>
166
 
Replaces the current GLSL source associated with a shader with a new
167
 
one.</para>
168
 
<para>
169
 
</para><variablelist role="params">
170
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
171
 
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
172
 
</simpara></listitem></varlistentry>
173
 
<varlistentry><term><parameter>source</parameter>&#160;:</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>
180
 
<para>
181
 
Compiles the shader, no return value, but the shader is now ready for
182
 
linking into a program.</para>
183
 
<para>
184
 
</para><variablelist role="params">
185
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>
192
 
<para>
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>
197
 
<para>
198
 
</para><variablelist role="params">
199
 
<varlistentry><term><parameter>handle</parameter>&#160;:</term>
200
 
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
201
 
</simpara></listitem></varlistentry>
202
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
209
 
<para>
210
 
Retrieves the type of a shader <link linkend="CoglHandle"><type>CoglHandle</type></link></para>
211
 
<para>
212
 
</para><variablelist role="params">
213
 
<varlistentry><term><parameter>handle</parameter>&#160;:</term>
214
 
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
215
 
</simpara></listitem></varlistentry>
216
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
223
 
<para>
224
 
Retrieves whether a shader <link linkend="CoglHandle"><type>CoglHandle</type></link> has been compiled</para>
225
 
<para>
226
 
</para><variablelist role="params">
227
 
<varlistentry><term><parameter>handle</parameter>&#160;:</term>
228
 
<listitem><simpara> <link linkend="CoglHandle"><type>CoglHandle</type></link> for a shader.
229
 
</simpara></listitem></varlistentry>
230
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
236
 
<para>
237
 
Create a new cogl program object that can be used to replace parts of the GL
238
 
rendering pipeline with custom code.</para>
239
 
<para>
240
 
</para><variablelist role="params">
241
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
247
 
<para>
248
 
Add an extra reference to a program.</para>
249
 
<para>
250
 
</para><variablelist role="params">
251
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>&#160;:</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>
260
 
<para>
261
 
Removes a reference to a program. If it was the last reference the
262
 
program object will be destroyed.</para>
263
 
<para>
264
 
</para><variablelist role="params">
265
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>
272
 
<para>
273
 
Gets whether the given handle references an existing program object.</para>
274
 
<para>
275
 
</para><variablelist role="params">
276
 
<varlistentry><term><parameter>handle</parameter>&#160;:</term>
277
 
<listitem><simpara> A CoglHandle
278
 
</simpara></listitem></varlistentry>
279
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
287
 
<para>
288
 
Attaches a shader to a program object, a program can have one vertex shader
289
 
and one fragment shader attached.</para>
290
 
<para>
291
 
</para><variablelist role="params">
292
 
<varlistentry><term><parameter>program_handle</parameter>&#160;:</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>&#160;:</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>
302
 
<para>
303
 
Links a program making it ready for use.</para>
304
 
<para>
305
 
</para><variablelist role="params">
306
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>
313
 
<para>
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>
317
 
<para>
318
 
</para><variablelist role="params">
319
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>
327
 
<para>
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>
331
 
<para>
332
 
</para><variablelist role="params">
333
 
<varlistentry><term><parameter>handle</parameter>&#160;:</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>&#160;:</term>
337
 
<listitem><simpara> the name of a uniform.
338
 
</simpara></listitem></varlistentry>
339
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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
341
 
  program is in use.
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>
348
 
<para>
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>
351
 
<para>
352
 
</para><variablelist role="params">
353
 
<varlistentry><term><parameter>uniform_no</parameter>&#160;:</term>
354
 
<listitem><simpara> the unform to set.
355
 
</simpara></listitem></varlistentry>
356
 
<varlistentry><term><parameter>value</parameter>&#160;:</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>
364
 
<para>
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>
367
 
<para>
368
 
</para><variablelist role="params">
369
 
<varlistentry><term><parameter>uniform_no</parameter>&#160;:</term>
370
 
<listitem><simpara> the unform to set.
371
 
</simpara></listitem></varlistentry>
372
 
<varlistentry><term><parameter>value</parameter>&#160;:</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>
382
 
<para>
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>
385
 
<para>
386
 
</para><variablelist role="params">
387
 
<varlistentry><term><parameter>uniform_no</parameter>&#160;:</term>
388
 
<listitem><simpara> the uniform to set.
389
 
</simpara></listitem></varlistentry>
390
 
<varlistentry><term><parameter>size</parameter>&#160;:</term>
391
 
<listitem><simpara> Size of float vector.
392
 
</simpara></listitem></varlistentry>
393
 
<varlistentry><term><parameter>count</parameter>&#160;:</term>
394
 
<listitem><simpara> Size of array of uniforms.
395
 
</simpara></listitem></varlistentry>
396
 
<varlistentry><term><parameter>value</parameter>&#160;:</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>
406
 
<para>
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>
409
 
<para>
410
 
</para><variablelist role="params">
411
 
<varlistentry><term><parameter>uniform_no</parameter>&#160;:</term>
412
 
<listitem><simpara> the uniform to set.
413
 
</simpara></listitem></varlistentry>
414
 
<varlistentry><term><parameter>size</parameter>&#160;:</term>
415
 
<listitem><simpara> Size of int vector.
416
 
</simpara></listitem></varlistentry>
417
 
<varlistentry><term><parameter>count</parameter>&#160;:</term>
418
 
<listitem><simpara> Size of array of uniforms.
419
 
</simpara></listitem></varlistentry>
420
 
<varlistentry><term><parameter>value</parameter>&#160;:</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>
431
 
<para>
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>
435
 
<para>
436
 
</para><variablelist role="params">
437
 
<varlistentry><term><parameter>uniform_no</parameter>&#160;:</term>
438
 
<listitem><simpara> the uniform to set.
439
 
</simpara></listitem></varlistentry>
440
 
<varlistentry><term><parameter>size</parameter>&#160;:</term>
441
 
<listitem><simpara> Size of matrix.
442
 
</simpara></listitem></varlistentry>
443
 
<varlistentry><term><parameter>count</parameter>&#160;:</term>
444
 
<listitem><simpara> Size of array of uniforms.
445
 
</simpara></listitem></varlistentry>
446
 
<varlistentry><term><parameter>transpose</parameter>&#160;:</term>
447
 
<listitem><simpara> Whether to transpose the matrix when setting the uniform.
448
 
</simpara></listitem></varlistentry>
449
 
<varlistentry><term><parameter>value</parameter>&#160;:</term>
450
 
<listitem><simpara> the new value of the uniform.
451
 
</simpara></listitem></varlistentry>
452
 
</variablelist></refsect2>
453
 
 
454
 
</refsect1>
455
 
 
456
 
 
457
 
 
458
 
 
459
 
</refentry>