Changes for version 0.28

  • Stripped a few superfluous methods out of the lighting setup.
  • Make sure the camera direction vector is set up early to prevent warnings before the first mouse move event.
  • Added a grid of 400 texture boxes to prove that the culling algorithm can support 500-1000 models without the need for a scene graph.
  • Added a ::Bound class to store richer bounding data in preparation for more complex layered frustrum culling. It automatically calcaultes both the sphere and cube vales, needing only one of the two as constructor input.
  • Moved frustrum culling from Z-cube to sphere-sphere, which should be both faster and use less CPU.
  • Camera now pre-calculated a huge amount of frustrum data in advance, and recalculates them when the camera moves.
  • Actors are now added by a method, which allows us to automatically attach the debugging actors to all objects including those created dynamically at run-time.

Modules

Create a 3D world from scratch with SDL and OpenGL
A moving object within the game world
A grid-snapping 3D wireframe cube
A demonstrator for MTL files
An actor loaded from a RWX file
A moving teapot within the game world
Crates, companions and more...
An attempt to create "Bit" from Tron
Abstracts a directory of model resources
Support for loading material libraries from MTL files
Support for loading 3D models from OBJ files
Support for loading 3D models from RWX files
A movable viewpoint in the game world
A "God Mode" flying person camera
A text-mode overlay for the world
The static 3D environment of the world
A light source in the 3D world
Generic support for on disk model parsers
Utility package for initialising OpenGL
Better than a uniform sky colour
A texture API simple enough for mere mortals

Provides

in lib/SDL/Tutorial/3DWorld/Actor/Debug.pm
in lib/SDL/Tutorial/3DWorld/Actor/GridSelect.pm
in lib/SDL/Tutorial/3DWorld/Bound.pm
in lib/SDL/Tutorial/3DWorld/Frustrum.pm
in lib/SDL/Tutorial/3DWorld/HeightMap.pm
in lib/SDL/Tutorial/3DWorld/Material.pm
in lib/SDL/Tutorial/3DWorld/Mesh.pm