TinyGL 0.4 review

by rbytes.net on

TinyGL is a small, free and fast Subset of OpenGL for embedded systems or games. It is a software only implementation

License: BSD License
File size: 66K
Developer: Fabrice Bellard
0 stars award from rbytes.net

TinyGL is a small, free and fast Subset of OpenGL for embedded systems or games.

It is a software only implementation. Only the main OpenGL calls are implemented. All the calls I considered not important are simply *not implemented.

The main strength of TinyGL is that it is fast and simple because it has not to be exactly compatible with OpenGL. In particular, the texture mapping and the geometrical transformations are very fast.

Here are some key features of "TinyGL":
Header compatible with OpenGL (the headers are adapted from the very good Mesa by Brian Paul et al.)
Zlib-like licence for easy integration in commercial designs (read the LICENCE file).
Subset of GLX for easy testing with X Window.
GLX like API (NGLX) to use it with NanoX in MicroWindows/NanoX.
Subset of BGLView under BeOS.
OpenGL like lightening.
Complete OpenGL selection mode handling for object picking.
16 bit Z buffer. 16/24/32 bit RGB rendering. High speed dithering to paletted 8 bits if needed. High speed conversion to 24 bit packed pixel or 32 bit RGBA if needed.
Fast Gouraud shadding optimized for 16 bit RGB.
Fast texture mapping capabilities, with perspective correction and texture objects.
32 bit float only arithmetic.
Very small: compiled code size of about 40 kB on x86. The file src/zfeatures.h can be used to remove some unused features from TinyGL.
C sources for GCC on 32/64 bit architectures. It has been tested succesfully on x86-Linux and sparc-Solaris.

TinyGL is made up four main modules:

Mathematical routines (zmath).
OpenGL-like emulation (zgl).
Z buffer and rasterisation (zbuffer).
GLX interface (zglx).

To use TinyGL in an embedded system, you should look at the GLX layer and modify it to suit your need. Adding a more user friendly developper layer (as in Mesa) may be useful.

TinyGL 0.4 search tags