GGI stands for General Graphics Interface, and it is a project that aims to develop a reliable, stable and fast graphics system that works everywhere. We want to allow any program using GGI to run on any platform, requiring at most a recompile.
Historically, GGI was developed in order to provide a unified interface to manage access to graphics hardware under Linux, to avoid the conflicts and instability arising from the direct access of hardware by competing graphics systems such as X and svgalib.
The GGI project is now focussed on developing a set of portable user-space libraries, with an array of different backends or targets (eg. framebuffer, X, quartz, directx). While GGI no longer aims to manage direct access to graphics hardware, we provide a target to use the interfaces provided by our associated KGI Project▸, which is concerned with providing the necessary kernel level support (protection, virtualization and abstraction) through a fast, secure and portable Kernel Graphics Interface.
Developed in a professional manner, the clean design, stability and scalability of GGI make it excellent in embedded, production and research environments, and it is user-supported with complete source.
The GGI project provides various libraries, of which the two most fundamental are LibGII (for input-handling) and LibGGI (for graphical output). All other packages add features to these core libraries, and so depend on one or both of them; for a more in-depth explanation of package categories, see the longer introduction to GGI.
Example of running the inputdump program supplied with GGI, using the DirectX target under MSYS/MinGW (in MS Windows). Four different input devices are shown: a keyboard, mouse, steering-wheel/pedals and an advanced joystick.
Demonstration of the cube3d demo supplied with GGI. In this case the four vertical sides of the cube are each running XGGI (an X server for GGI) and a Nixterm (a terminal emulator for GGI) is running on the top and bottom. This demo is an extreme example of how GGI applications may be run on different targets - including the sides of a rotating cube! - without recompiling.
This was set up by former project leader Andreas Beck, with the help of this script.
A port of id-software's classic game Doom to run on GGI (link available in the games section of our software page). This game does not usually look like the image below however: here a perl script is used to split the display across many different windows (GGI visuals). This can be utilised for simple multi-head display, up to displaying over a video-wall.