## Geometric Object Rendering

Geometric Object Rendering — Functions for generating easily recognizable 3D geometric objects

## Synopsis

    #include <gdk/gdkgl.h>

    void        gdk_gl_draw_cube                (gboolean solid,
                                                 double size);
    void        gdk_gl_draw_sphere              (gboolean solid,
                                                 double radius,
                                                 int slices,
                                                 int stacks);
    void        gdk_gl_draw_cone                (gboolean solid,
                                                 double base,
                                                 double height,
                                                 int slices,
                                                 int stacks);
    void        gdk_gl_draw_torus               (gboolean solid,
                                                 double inner_radius,
                                                 double outer_radius,
                                                 int nsides,
                                                 int rings);
    void        gdk_gl_draw_tetrahedron         (gboolean solid);
    void        gdk_gl_draw_octahedron          (gboolean solid);
    void        gdk_gl_draw_dodecahedron        (gboolean solid);
    void        gdk_gl_draw_icosahedron         (gboolean solid);
    void        gdk_gl_draw_teapot              (gboolean solid,
                                                 double scale);

## Description

## Details

### gdk_gl_draw_cube ()

    void        gdk_gl_draw_cube                (gboolean solid,
                                                 double size);

Renders a cube. The cube is centered at the modeling coordinates origin with sides of length `size`.

`solid` : | TRUE if the cube should be solid.
`size` : | length of cube sides.

### gdk_gl_draw_sphere ()

    void        gdk_gl_draw_sphere              (gboolean solid,
                                                 double radius,
                                                 int slices,
                                                 int stacks);

Renders a sphere centered at the modeling coordinates origin of the specified `radius`. The sphere is subdivided around the Z axis into `slices` and along the Z axis into `stacks`.

`solid` : | TRUE if the sphere should be solid.
`radius` : | the radius of the sphere.
`slices` : | the number of subdivisions around the Z axis (similar to lines of longitude).
`stacks` : | the number of subdivisions along the Z axis (similar to lines of latitude).

### gdk_gl_draw_cone ()

    void        gdk_gl_draw_cone                (gboolean solid,
                                                 double base,
                                                 double height,
                                                 int slices,
                                                 int stacks);

Renders a cone oriented along the Z axis. The `base` of the cone is placed at Z = 0, and the top at Z = `height`. The cone is subdivided around the Z axis into `slices`, and along the Z axis into `stacks`.

`solid` : | TRUE if the cone should be solid.
`base` : | the radius of the base of the cone.
`height` : | the height of the cone.
`slices` : | the number of subdivisions around the Z axis.
`stacks` : | the number of subdivisions along the Z axis.

### gdk_gl_draw_torus ()

    void        gdk_gl_draw_torus               (gboolean solid,
                                                 double inner_radius,
                                                 double outer_radius,
                                                 int nsides,
                                                 int rings);

Renders a torus (doughnut) centered at the modeling coordinates origin whose axis is aligned with the Z axis.

`solid` : | TRUE if the torus should be solid.
`inner_radius` : | inner radius of the torus.
`outer_radius` : | outer radius of the torus.
`nsides` : | number of sides for each radial section.
`rings` : | number of radial divisions for the torus.

### gdk_gl_draw_tetrahedron ()

    void        gdk_gl_draw_tetrahedron         (gboolean solid);

Renders a tetrahedron centered at the modeling coordinates origin with a radius of the square root of 3.

`solid` : | TRUE if the tetrahedron should be solid.

### gdk_gl_draw_octahedron ()

    void        gdk_gl_draw_octahedron          (gboolean solid);

Renders a octahedron centered at the modeling coordinates origin with a radius of 1.0.

`solid` : | TRUE if the octahedron should be solid.

### gdk_gl_draw_dodecahedron ()

    void        gdk_gl_draw_dodecahedron        (gboolean solid);

Renders a dodecahedron centered at the modeling coordinates origin with a radius of the square root of 3.

`solid` : | TRUE if the dodecahedron should be solid.

### gdk_gl_draw_icosahedron ()

    void        gdk_gl_draw_icosahedron         (gboolean solid);

Renders a icosahedron. The icosahedron is centered at the modeling coordinates origin and has a radius of 1.0.

`solid` : | TRUE if the icosahedron should be solid.

### gdk_gl_draw_teapot ()

    void        gdk_gl_draw_teapot              (gboolean solid,
                                                 double scale);

Renders a teapot. Both surface normals and texture coordinates for the teapot are generated. The teapot is generated with OpenGL evaluators.

`solid` : | TRUE if the teapot should be solid.
`scale` : | relative size of the teapot.