All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Ion Project Documentation

Table of Contents


The Ion project consists of a small and efficient set of libraries for building cross-platform client or server applications that use 3D graphics. It has strong support for dealing with OpenGL, including abstracting out differences in platforms.

See the Ion home page for more information about the Ion project in general.

The Ion Users Guide contains several simple examples that build upon one another to build familiarity with the API.


The Ion code base consists of a set of required core libraries and some optional higher-level libraries. Each library has a corresponding namespace. For example, the base library uses namespace ion::base.

Core Libraries

  • port: Platform-dependent types and functions.
  • base: Basic types and functions for features such as memory management, string manipulation, and so on.
  • portgfx: Platform-dependent graphics functions.
  • math: Types and functions for algebraic and geometric entities (such as vectors, matrices, and angles).

Optional Libraries

  • gfxutils: Various higher-level utility types and functions for operating on graphics objects.
  • image: Functions operating on images.
  • text: Types and functions for displaying text as graphics.
  • remote: Classes providing interaction with Ion applications via an external browser.
  • profile: Types and functions for profiling run-time performance.
  • analytics: Types and functions for analyzing run-time performance.

Getting Started With Ion

The ion/demos directory contains source code for some programs that demonstrate various features of Ion. This section illustrates these features using code snippets modified from code in those programs.

Note that Ion does not provide any public platform-dependent windowing or user interface functions. However, the demo programs linked above show examples of how to implement these functions for various platforms.

The best way to get started using Ion is to look at the examples in the Ion Users Guide.