Robert Kooima


OVR_SDL2 is a set of minimal cross-platform (Windows / Linux / OS X) example applications for the Oculus Rift written in C++ and depending only on SDL2, the Oculus VR SDK, and GLEW. Its intent is to encourage VR programmers to forego the use of off-the-shelf solutions and work closer to the metal.


Hippo is a small C language library that provides a spatial index for 3D star catalogs. It can efficiently enumerate all stars within a given volume of the local galaxy, enabling high-performance neighborhood and visibility determination.

OBJ Library

Like many 3D graphics developers, I’ve developed a library of functions for loading, storing, and rendering 3D models in the OBJ file format. This library also provides an API for building, manipulating, and transforming OBJ model data. It automatically computes tangent and bi-tangent vectors for use in tangent-space surface mapping. It is capable of computing a model’s average cache miss ratio (ACMR) and sorting index data to minimize this value and thus maximize rendering performance.

Image Module

The image module provides support for loading and storing 2D images in PNG, JPEG, TIFF, or EXR format. It is implemented as a very thin abstraction layer atop libpng, libjpeg, libtiff, and OpenEXR, any of which may be optionally omitted if not needed.

3D Mathematics Library

The 3D math module implements a right-handed 3D mathematics library supporting three-component vectors, four-by-four matrices, quaternions, and Euler angles. These values are represented using ordinary C arrays of type real, which may be compile-time represented using float or double. Matrix layout is directly compatible with OpenGL.

Noise Module

The noise module implements a three-dimensional coherent noise generator using the Simplex method developed by Ken Perlin, described in Real-Time Shading SIGGRAPH Course Notes (2001), Chapter 2: Noise Hardware.

Typography Module

The typography module uses FreeType2 to efficiently render high-quality, anti-aliased, kerned text using OpenGL.

Demo Module

The demo module provides a simple GLUT application framework with basic interaction and camera control. It allows an OpenGL application to be brought up with near-zero “ceremony.”

Plane Module

The plane module is a very basic OpenGL code that renders a simple gridded plane as on the cover of Edward Tufte’s Visual Explanations. This is often useful as a backdrop to simple 3D demos, and it represents an introductory example of vertex buffer object creation, population, and rendering.

Cube Module

The cube module renders the 3D reference cube using OpenGL. It is useful for testing object transformations and debugging OpenGL applictions. The implementation gives a simple example of basic rendering with the ARB vertex buffer object specification.

Autostereo Interleaver

Summer 2008

Autostereo interleaver is a generalization of the Varrier Combiner algorithm that enables the creation of real-time multi-view autostereo displays using lenticular arrays and parallax barriers. It provides a channel crosstalk mitigation mechanism using destructive interference between adjacent channels.

trackd interface library

Spring 2006

The tracker module is a simple library for reading motion tracking data provided by trackd. It is compatible with both Linux and Windows. It enables access to six degree-of-freedom sensor input, button controller input, and joystick controller input, as commonly used in virtual reality display environments.

Easy Polygonal Text

May 2002

The glyph module provides an efficient, portable means of rendering polygonal text using OpenGL. It is fully self-contained and has no external dependencies, giving a trivially easy means of adding simple on-screen text to any OpenGL application.