-- what --
this is a trivial example of a geometry limited application. 

-- overview --

use the left mouse button to rotate the scene. change between the two
sized spheres (therefore filling more or fewer pixels) and watch the
framerates stay fairly constant. a second test would be to zoom in and
out on the geometry with the right mouse button. moving either in or
out, and therefore covering more or fewer pixels, the framerate still
stays fairly constant. this is the hallmark of a geometry-limited
application.

-- test --

when you press the 't'-key, a sequence of frames are rendered and
timed. the resultant time and triangles-per-second achieved are
printed to stderr.

when you press the 'f'-key, a constant geometry-count scene (but low
fill demand) is drawn. when the 'F'-key is pressed, the same
geometry-count scene is drawn, but with much larger fill demands.
specifically, a grid of spheres is drawn, in the first case
approximately 10x smaller than in the second. this increases the fill
demand by a factor of 10.

-- results and why --

if you are geometry-limited, you'll see the overall test time vary
little between the high/low fill cases. this implies that we're not
fill-limited, that is, we can fill more pixels (maybe by drawing
texture, more color data, etc) and have little effect on our
framerate, provided that we also keep the geometry demands comparable.

-- notes --

all drawing is done in single-buffer mode to avoid frame quantization
issues as described in the course notes.

-- commands --

-- mouse commands
l - rotate the scene
m - zoom (scale) the scene
r - pan the scene
-- keyboard commands
r - reset all parameters
F - set high fill load
f - set low fill load
t - run timing test to generate triangles-per-second
h - display this help
? - display this help
