Changes in version 2.1 vs. version 2.0.*

    - Support for more rendering modes: Phong, Gouraud, flat and line.
      Only Phong mode can do real texture mapping though.

    - Support for rendering into other places than files. We have chosen
      to call this rendering into pixmaps, but there is no restriction on
      what is really used. This is accomplished through a callback function
      similar to the shader interface. A basic implementation of pixmaps
      and bitmaps that could be used are supplied in the library.

    - Oversampling for antialiasing can now be arbitrarily large.

    - It is possible to turn off backface culling. This is useful if you
      have a database of objects that are inconsequent in the ordering
      of its vertices (clockwize/counterclockwize).

    - Two new object primitives, cone and prism.
      Thanks to David Jones (djones@awesome.berkeley.edu) for these.

    - Two new shaders. 
        1. strauss_shader() - This is an implementation of the shading 
           model designed by Paul S. Strauss at Silicon Graphics Inc.
           and described in IEEE CG&A November 1990.
        2. wood_shader() - A shader that simulates wood texture using
           noise and turbulence.

    - Matrix and vector handling functions and macros are now "public".

    - Correct interpolation of texture coordinates. Previously there
      were disturbing "rubberband" effects on objects spanning large
      depths in the picture.

    - A full polygon clipper is now used instead of the previous, rather
      strange approach. Objects behind the viewpoint are now handled correctly
      (I hope), previously they caused strange effects.

    - It is possible to get the current transformation matrix from an object
      and not only to set it. This makes it a lot easier to do animations.

    - Subobjects and surfaces can now be removed from objects.
