Last saved: Tue 01 Sep 2009 11:03:58 AM 


Reduce compile size by splitting up XS files
 * move common macro defs to single place
 * make separate include headers for RPN, OGA to better split
 * split out constants (maybe split further by library)
 * split pogl_gl.xs by function groups


Enhance CPAN Testers automated testing support:
 * Improve diagnostic output for debugging test results,
 * Add a "compile and link only" install of POGL


If required libraries and headers are not available and
usable (compile and link ok), then exit 0 from Makefile.PL.
 * Required libraries are OpenGL and GLUT.
 * GLUT is available on *all* GLX platforms
 * use GLUT functions instead of glp*() ones


Evaluate/Measure back compatibility
 * document at least
 * provide mechanism to report issues
 * implement compatibility mode


Clean up glp*() routine support:
 * backward compatible where possible
 * strip out GLX+X11 code
 * layer over GLUT environment
   N.B. *GLUT is on *all* GLX systems


Fix examples/ directory
 * update to use GLUT rather than glp()
 * verify all examples work
 * remove broken cruft


Add Geometry Shader support.


Fix GLU binding implementation:
 * particularly Tesselation.
 * start by adding tests in t/


Add bindings to GLUI


Move test apps to t/ subdirectory from test.pl
 * NOTE: require_ok/use_ok don't like $VERSION w git suffix
 * Split into interactive and non-interactive tests
 * Skip interactive tests if no OpenGL context
 * need to test for each major functionality
    * GL
    * GLU
    * GLUT/FreeGLUT
    * RPN
    * Array
    * back compatibility (glp routines)


Implement safe glutInit by checking _done_glutInit before calling glutInit()


Fix GLUT error handling for perl:
 * Add croak on no glutInit to glut functions to prevent exit(1)
 * Add croak to glutDisplayFunc() with null callback.
 * Add croak to glutSetKeyRepeat() with invalid repeat mode
 * Add croak to glutSetCursor() with unknown cursor type
 * Investigate use of undef return for errors; 1 instead of void's
    * This would be great for a debug mode
    * Return undef if no error
    * Return error info if there was one
    * No return if not in debug mode (or always undef)


Add toggle & display of OpenGL errors a la glutReportErrors()


Finish perl bindings to remaining FreeGLUT functions:
 * glutGetProcAddress: what does this mean at perl level?
 * glutJoystickFunc: need to add non-callback argument


Improve support for non-standard OpenGL configurations:
 * Document how to edit Makefile.PL
 * Add command line options for perl Makefile.PL to set CFLAGS,...
 * Make single point override for INCLUDE info.


OpenGLUT support for building:
 * NOTE: OpenGLUT is a dead project, use FreeGLUT


Make POGL GLUT-proof:
 * Nothing should break if you have GLUT rather than FreeGLUT
     as long as you are only using the GLUT subset of FreeGLUT
 * Some functionality may be disabled (glutMainLoop extensions)
 * Some functionality may be emulated (e.g. glutBitmapString)
 * make work with readline event loop for perldl shell


Fix current POGL configuration and build process:
 * Clean up use of configuration information
 * Make the compile and config results unambiguous
    * Compile flags have two types
       * Info opts: HAVE_GLX, HAVE_GLUT, ...
       * Build opts: BUILD_GLUT, BUILD_FREEGLUT, ...
    * Exactly what libraries are being used
    * What are the compile and link configuration
    * What bindings are actually enabled
    * Use the same information to build POGL as glversion
 * Refactor Makefile.PL to be comprehensible.
    * strip out unused options
    * remove directories that do not exist
    * replace make of glversion by perl based functionality
    * toolkit option: GLUT and FreeGLUT
    * interface option: GLX/unix, WGL/win32, [ AGL/CGL? ]


Refactor config/build for portability and simplicity:
 * use Module::Build framework
 * use GLEW and autogeneration for bindings
    * why does GLEW require GLX_VERSION_1_2?


Miscellaneous portability improvements:
 * Convert malloc() and calloc() calls to Newx(), Newxc(), and Newxz()
 * Convert free() to Safefree() to match.


Implement complete matrix test capability:
 * document/implement a test matrix for regression and stability tests
 * factors to include
    * perl vs activeperl
    * GLX vs WGL vs CGL/AGL
    * hardware vs software/Mesa
    * OS
 * setup virtualized test environment for POGL and PDL
