## Primitives

Primitives — Functions for creating, manipulating and drawing primitives

## Synopsis

                        CoglPrimitive;
    CoglPrimitive *     cogl_primitive_new                  (CoglVerticesMode mode,
                                                             int n_vertices,
                                                             ...);
    gboolean            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);
    void                cogl_primitive_set_indices          (CoglPrimitive *primitive,
                                                             CoglIndices *indices);
    void                cogl_primitive_draw                 (CoglPrimitive *primitive);

## Description

FIXME

## Details

### CoglPrimitive

    typedef struct _CoglPrimitive CoglPrimitive;

### cogl_primitive_new ()

    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.

`mode` : | A CoglVerticesMode defining how to draw the vertices
`n_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

### cogl_is_primitive ()

    gboolean            cogl_is_primitive                   (void *object);

Gets whether the given object references a CoglPrimitive.

`object` : | A CoglObject
Returns : | `TRUE` if the handle references a CoglPrimitive, `FALSE` otherwise

Since 1.6

Stability Level: Unstable

### cogl_primitive_get_first_vertex ()

    int                 cogl_primitive_get_first_vertex     (CoglPrimitive *primitive);

### cogl_primitive_set_first_vertex ()

    void                cogl_primitive_set_first_vertex     (CoglPrimitive *primitive,
                                                             int first_vertex);

### cogl_primitive_get_n_vertices ()

    int                 cogl_primitive_get_n_vertices       (CoglPrimitive *primitive);

### cogl_primitive_set_n_vertices ()

    void                cogl_primitive_set_n_vertices       (CoglPrimitive *primitive,
                                                             int n_vertices);

### cogl_primitive_get_mode ()

    CoglVerticesMode    cogl_primitive_get_mode             (CoglPrimitive *primitive);

### cogl_primitive_set_mode ()

    void                cogl_primitive_set_mode             (CoglPrimitive *primitive,
                                                             CoglVerticesMode mode);

### cogl_primitive_set_attributes ()

    void                cogl_primitive_set_attributes       (CoglPrimitive *primitive,
                                                             CoglAttribute **attributes,
                                                             int n_attributes);

Replaces all the attributes of the given CoglPrimitive object.

`primitive` : | A CoglPrimitive object
`attributes` : | A `NULL` terminated array of CoglAttribute pointers

Since 1.6

Stability Level: Unstable

### cogl_primitive_set_indices ()

    void                cogl_primitive_set_indices          (CoglPrimitive *primitive,
                                                             CoglIndices *indices);

### cogl_primitive_draw ()

    void                cogl_primitive_draw                 (CoglPrimitive *primitive);

Draw the given `primitive` with the current source material.

`primitive` : | A CoglPrimitive object

Since 1.6

Stability Level: Unstable