In class, we discussed how to enable the viewer to navigate or "fly-through" a scene. The viewer uses controls (e.g. key presses) for 6 possible actions: move forward/backward, turn right/left, look up/down. Sample code for setting up the keypresses was sent out in email. In this first step, create a scene consisting of a large plane scattered with simple objects, e.g. glut cubes. Don't spend a lot of time on creating the scene and don't use so many objects that your system slows down. Your goal in this part is simply to implement and test the navigational system as described in class.
In this step, create a more complex scene for your navigation system without using glut or glu objects. That is, specify the vertices and colors explicitly using various opengl primitives. You need not specify the normals at this point (unless you want). Add enough complexity so that the navigation slows to a crawl when using immediate mode (glBegin/glEnd). To improve efficiency, compile your scene into a display list. To see how to do this, look at DisplayListCube.java in the VertexModeCubeExamples project. Does your program speed up or not?
Convert your geometry to Vertex Arrays. Setting this up is a bit of work. To see how to do this, look at VertexArrayCube.java in the VertexModeCubeExamples project. How does timing change?
Deliverables: By class time on Oct 23: For the complex scene, place the jar file of each program version (immediate, display, vertex list, and (optional) vbo) on enfuzion. Email the corresponding zipped project code to gorr. Be prepared to discuss in class what you discovered.