Changes for version 0.27

  • Massive optimisation and tuning release to maximise the level of raw performance before we absolutely HAVE to start using a scene graph. This release should reach 100-500 world objects it gets too slow to be useful. This should be more than enough for many simple games and simulations.
  • For improved profiling accuracy when starting the world with --benchmark we immediately enable the three "hide_" properties accessed via F1, F2, F3 so they don't show up in the profiling output.
  • When --benchmark is enabled, we also avoid the creation of all of the ::Actor::Debug object entirely for more accurate measurement of any O(N) operations.
  • The entire display culling logic has been removed from the camera class and inlined into the main display_actors method. Once the number of actors gets large just the Perl method call costs alone become significant for O(N) operations.
  • Added support for a origin-relative ->{boundary} propery to avoid recalculating boundary boxes of objects that don't move.
  • Added support for a ->{display} property to encapsulate the entire rendering process for static objects that don't move. This lets us call glCallList directly in the top level loop and avoids O(N) calls to ->display methods. Instead, we only need to call the ->display method for complex actors or those in motion.

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/HeightMap.pm
in lib/SDL/Tutorial/3DWorld/Material.pm
in lib/SDL/Tutorial/3DWorld/Mesh.pm