Cogl 2.0 Reference Manual  

Top  Description 
CoglPrimitive; CoglPrimitive * cogl_primitive_new (CoglVerticesMode mode
,int n_vertices
,...
); CoglPrimitive * cogl_primitive_new_with_attributes (CoglVerticesMode mode
,int n_vertices
,CoglAttribute **attributes
,int n_attributes
); CoglPrimitive * cogl_primitive_new_p2 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2 *data
); CoglPrimitive * cogl_primitive_new_p3 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3 *data
); CoglPrimitive * cogl_primitive_new_p2c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2C4 *data
); CoglPrimitive * cogl_primitive_new_p3c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3C4 *data
); CoglPrimitive * cogl_primitive_new_p2t2 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2T2 *data
); CoglPrimitive * cogl_primitive_new_p3t2 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3T2 *data
); CoglPrimitive * cogl_primitive_new_p2t2c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2T2C4 *data
); CoglPrimitive * cogl_primitive_new_p3t2c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3T2C4 *data
); CoglBool cogl_is_primitive (void *object
); int cogl_primitive_get_first_vertex (CoglPrimitive *primitive
); void cogl_primitive_set_first_vertex (CoglPrimitive *primitive
,int first_vertex
); int cogl_primitive_get_n_vertices (CoglPrimitive *primitive
); void cogl_primitive_set_n_vertices (CoglPrimitive *primitive
,int n_vertices
); CoglVerticesMode cogl_primitive_get_mode (CoglPrimitive *primitive
); void cogl_primitive_set_mode (CoglPrimitive *primitive
,CoglVerticesMode mode
); void cogl_primitive_set_attributes (CoglPrimitive *primitive
,CoglAttribute **attributes
,int n_attributes
); CoglIndices * cogl_primitive_get_indices (CoglPrimitive *primitive
); void cogl_primitive_set_indices (CoglPrimitive *primitive
,CoglIndices *indices
,int n_indices
); CoglPrimitive * cogl_primitive_copy (CoglPrimitive *primitive
); CoglBool (*CoglPrimitiveAttributeCallback) (CoglPrimitive *primitive
,CoglAttribute *attribute
,void *user_data
); void cogl_primitive_foreach_attribute (CoglPrimitive *primitive
,CoglPrimitiveAttributeCallback callback
,void *user_data
); void cogl_primitive_draw (CoglPrimitive *primitive
,CoglFramebuffer *framebuffer
,CoglPipeline *pipeline
);
CoglPrimitive * cogl_primitive_new (CoglVerticesMode mode
,int n_vertices
,...
);
Combines a set of CoglAttributes with a specific draw mode
and defines a vertex count so a CoglPrimitive object can be retained and
drawn later with no addition information required.
The value passed as n_vertices
will simply update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to process when drawing 

A NULL terminated list of attributes 
Returns : 
A newly allocated CoglPrimitive object 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_with_attributes (CoglVerticesMode mode
,int n_vertices
,CoglAttribute **attributes
,int n_attributes
);
CoglPrimitive * cogl_primitive_new_p2 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position attribute with a CoglAttribute and upload your data.
For example to draw a convex polygon you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP2 triangle[] = { { 0, 300 }, { 150, 0, }, { 300, 300 } }; prim = cogl_primitive_new_p2 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP2 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_p3 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position attribute with a CoglAttribute and upload your data.
For example to draw a convex polygon you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP3 triangle[] = { { 0, 300, 0 }, { 150, 0, 0 }, { 300, 300, 0 } }; prim = cogl_primitive_new_p3 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP3 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_p2c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2C4 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position and color attributes with CoglAttributes and upload your data.
For example to draw a convex polygon with a linear gradient you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP2C4 triangle[] = { { 0, 300, 0xff, 0x00, 0x00, 0xff }, { 150, 0, 0x00, 0xff, 0x00, 0xff }, { 300, 300, 0xff, 0x00, 0x00, 0xff } }; prim = cogl_primitive_new_p2c4 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP2C4 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_p3c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3C4 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position and color attributes with CoglAttributes and upload your data.
For example to draw a convex polygon with a linear gradient you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP3C4 triangle[] = { { 0, 300, 0, 0xff, 0x00, 0x00, 0xff }, { 150, 0, 0, 0x00, 0xff, 0x00, 0xff }, { 300, 300, 0, 0xff, 0x00, 0x00, 0xff } }; prim = cogl_primitive_new_p3c4 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP3C4 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_p2t2 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2T2 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position and texture coordinate attributes with CoglAttributes and upload your data.
For example to draw a convex polygon with texture mapping you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP2T2 triangle[] = { { 0, 300, 0.0, 1.0}, { 150, 0, 0.5, 0.0}, { 300, 300, 1.0, 1.0} }; prim = cogl_primitive_new_p2t2 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP2T2 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_p3t2 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3T2 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position and texture coordinate attributes with CoglAttributes and upload your data.
For example to draw a convex polygon with texture mapping you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP3T2 triangle[] = { { 0, 300, 0, 0.0, 1.0}, { 150, 0, 0, 0.5, 0.0}, { 300, 300, 0, 1.0, 1.0} }; prim = cogl_primitive_new_p3t2 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP3T2 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_p2t2c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP2T2C4 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position, texture coordinate and color attributes with CoglAttributes and upload your data.
For example to draw a convex polygon with texture mapping and a linear gradient you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP2T2C4 triangle[] = { { 0, 300, 0.0, 1.0, 0xff, 0x00, 0x00, 0xff}, { 150, 0, 0.5, 0.0, 0x00, 0xff, 0x00, 0xff}, { 300, 300, 1.0, 1.0, 0xff, 0x00, 0x00, 0xff} }; prim = cogl_primitive_new_p2t2c4 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP2T2C4 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglPrimitive * cogl_primitive_new_p3t2c4 (CoglContext *context
,CoglVerticesMode mode
,int n_vertices
,const CoglVertexP3T2C4 *data
);
Provides a convenient way to describe a primitive, such as a single triangle strip or a triangle fan, that will internally allocate the necessary CoglAttributeBuffer storage, describe the position, texture coordinate and color attributes with CoglAttributes and upload your data.
For example to draw a convex polygon with texture mapping and a linear gradient you can do:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
CoglVertexP3T2C4 triangle[] = { { 0, 300, 0, 0.0, 1.0, 0xff, 0x00, 0x00, 0xff}, { 150, 0, 0, 0.5, 0.0, 0x00, 0xff, 0x00, 0xff}, { 300, 300, 0, 1.0, 1.0, 0xff, 0x00, 0x00, 0xff} }; prim = cogl_primitive_new_p3t2c4 (COGL_VERTICES_MODE_TRIANGLE_FAN, 3, triangle); cogl_primitive_draw (prim); 
The value passed as n_vertices
is initially used to determine how
much can be read from data
but it will also be used to update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to read when drawing.

A CoglContext 

A CoglVerticesMode defining how to draw the vertices 

The number of vertices to read from data and also
the number of vertices to read when later drawing. 

An array of CoglVertexP3T2C4 vertices 
Returns : 
A newly allocated CoglPrimitive with a reference of
1. This can be freed using cogl_object_unref() . 
Since 1.6
Stability Level: Unstable
CoglBool cogl_is_primitive (void *object
);
Gets whether the given object references a CoglPrimitive.

A CoglObject 
Returns : 
TRUE if the object references a CoglPrimitive,
FALSE otherwise 
Since 1.6
Stability Level: Unstable
void cogl_primitive_set_first_vertex (CoglPrimitive *primitive
,int first_vertex
);
int cogl_primitive_get_n_vertices (CoglPrimitive *primitive
);
Queries the number of vertices to read when drawing the given
primitive
. Usually this value is implicitly set when associating
vertex data or indices with a CoglPrimitive.
If cogl_primitive_set_indices()
has been used to associate a
sequence of CoglIndices with the given primitive
then the
number of vertices to read can also be phrased as the number
of indices to read.

A CoglPrimitive object 
Returns : 
The number of vertices to read when drawing. 
Since 1.8
Stability Level: Unstable
void cogl_primitive_set_n_vertices (CoglPrimitive *primitive
,int n_vertices
);
Specifies how many vertices should be read when drawing the given
primitive
.
Usually this value is set implicitly when associating vertex data or indices with a CoglPrimitive.

A CoglPrimitive object 

The number of vertices to read when drawing. 
Since 1.8
Stability Level: Unstable
void cogl_primitive_set_mode (CoglPrimitive *primitive
,CoglVerticesMode mode
);
void cogl_primitive_set_attributes (CoglPrimitive *primitive
,CoglAttribute **attributes
,int n_attributes
);
Replaces all the attributes of the given CoglPrimitive object.

A CoglPrimitive object 

an array of CoglAttribute pointers 

the number of elements in attributes

Since 1.6
Stability Level: Unstable
CoglIndices * cogl_primitive_get_indices (CoglPrimitive *primitive
);

A CoglPrimitive 
Returns : 
the indices that were set with
cogl_primitive_set_indices() or NULL if no indices were set. 
Since 1.10
Stability Level: Unstable
void cogl_primitive_set_indices (CoglPrimitive *primitive
,CoglIndices *indices
,int n_indices
);
Associates a sequence of CoglIndices with the given primitive
.
CoglIndices provide a way to virtualize your real vertex data by providing a sequence of indices that index into your real vertex data. The GPU will walk though the index values to indirectly lookup the data for each vertex instead of sequentially walking through the data directly. This lets you save memory by indexing shared data multiple times instead of duplicating the data.
The value passed as n_indices
will simply update the
CoglPrimitive n_vertices
property as if
cogl_primitive_set_n_vertices()
were called. This property defines
the number of vertices to draw or, put another way, how many
indices should be read from indices
when drawing.
first_vertex
property
also affects drawing with indices by defining the first entry of the
indices to start drawing from.

A CoglPrimitive 

A CoglIndices array 

The number of indices to reference when drawing 
Since 1.10
Stability Level: Unstable
CoglPrimitive * cogl_primitive_copy (CoglPrimitive *primitive
);
Makes a copy of an existing CoglPrimitive. Note that the primitive is a shallow copy which means it will use the same attributes and attribute buffers as the original primitive.

A primitive copy 
Returns : 
the new primitive 
Since 1.10
Stability Level: Unstable
CoglBool (*CoglPrimitiveAttributeCallback) (CoglPrimitive *primitive
,CoglAttribute *attribute
,void *user_data
);
The callback prototype used with cogl_primitive_foreach_attribute()
for iterating all the attributes of a CoglPrimitive.
The function should return TRUE to continue iteration or FALSE to stop.

The CoglPrimitive whose attributes are being iterated 

The CoglAttribute 

The private data passed to cogl_primitive_foreach_attribute()

Since 1.10
Stability Level: Unstable
void cogl_primitive_foreach_attribute (CoglPrimitive *primitive
,CoglPrimitiveAttributeCallback callback
,void *user_data
);
Iterates all the attributes of the given CoglPrimitive.

A CoglPrimitive object 

A CoglPrimitiveAttributeCallback to be called for each attribute 

Private data that will be passed to the callback 
Since 1.10
Stability Level: Unstable
void cogl_primitive_draw (CoglPrimitive *primitive
,CoglFramebuffer *framebuffer
,CoglPipeline *pipeline
);
Draws the given primitive
geometry to the specified destination
framebuffer
using the graphics processing state described by pipeline
.
This drawing api doesn't support highlevel meta texture types such
as CoglTexture2DSliced so it is the user's responsibility to
ensure that only lowlevel textures that can be directly sampled by
a GPU such as CoglTexture2D, CoglTextureRectangle or CoglTexture3D
are associated with layers of the given pipeline
.

A CoglPrimitive geometry object 

A destination CoglFramebuffer 

A CoglPipeline state object 
Since 1.16
Stability Level: Unstable