Last saved: Mon 18 Jul 2011 02:08:52 PM Update POD documentation * OpenGL.pod refer to POGL project at sf.net * Clean up refs to source, bins, information * Deprecate old support and clean up bindings Remove support for PM on OS/2 * Strip out * Add documentation to last version with support * May be moot since GLX needs to go as well * All we need as far as GLX goes is the ability to create an X11 window and context for rendering via Perl OpenGL. Should be able to take a GLX context (Tk embedding, for example) Add support for more GLUT variant export control: * :freeglutconstants and :freeglutfunctions * :appleglutconstants and :appleglutfunctions Make code handle "missing" windows: * Calls glutGetWindow() and assumes win is valid * If win==0, need to handle appropriately and *not* do anything with win Resolve ASPerl PPM build problems: * win32 fails because of the FreeGLUT install during Makefile.PL * linux fails because FreeGLUT is not found * Mac OS X fails because the GLUT compile env is not right * What does ASPerl do re external packages needed to build? Evaluate local include directory usage * needed for win32 since we install * check we're using the systemwide files * if not, why not Refactor XS files partition * move common macro defs to single place * make separate include headers for RPN, OGA ... * split out constants by library * resplit 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" build of POGL Improve library and headers checks in Makefile.PL * Required libraries are OpenGL and GLUT/FreeGLUT * what about GLU, GLX, others? * GLUT is available on *all* GLX platforms * Mac OS X has a non-X11 GLUT library with extensions: * glutCheckLoop() -- same as glutMainLoopEvent() * glutWMCloseFunc() -- same as glutCloseFunc() * If libraries and headers are not available exit 0 * Devel::CheckLib to check Evaluate backwards compatibility * document compatibility, at a minimum * provide feedback info to report issuues * primary goal is OpenGL, GLUT, GLU support * secondary goal is more perlish interface Clean up glp*() routine support: * add friendlier display selection function (glpInitDisplayString?) * backwards compatible where possible * strip out required GLX or X11 specific code * layer over GLUT environment * N.B. *GLUT is on *all* GLX systems but may not use GLX * What is needed to support Tk+X11 bindings (just context?) * Is Tk even being used? * Investigate Gtk+ or wxWidgets for embedding * GLUI as an easy, simple starter (performance?) Fix examples/ directory * update to use GLUT rather than glp() * verify all examples work (most appear to) * remove broken cruft * redo planets example to be more realistic: * planets aren't spheres * sun has no depth + jaggies * colors are off * animation is jumpy (how to smooth out) * give saturn *real* rings * what is blue wedge in earth view? * basic texture for planets Implement basic template for GLUT/GLUI apps * Simple default/bare bones option * Generic version with typical interaction * Customizable version (runtime?) * Maybe in examples directory as a module to use Add Geometry Shader support Add bindings to GLUI Move test apps to t/ subdirectory from test.pl * 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) * NOTE: require_ok() and use_ok() don't like $VERSION w git suffix Implement safe glutInit * check if done_glutInit before calling glutInit() * carp/croak/quiet error settings Fix OpenGL/GLUT error handling for perl * GLUT errors should not kill the interpreter * Add carp/croak on no glutInit to glut functions to prevent exit(1) * Add carp/croak to glutDisplayFunc() with null callback. * Add carp/croak to glutSetKeyRepeat() with invalid repeat mode * Add carp/croak to glutSetCursor() with unknown cursor type * Investigate addition of adding return values to perl code * This would be great for a debug mode * No return value if not in debug mode (or always undef?) * undef for error; 1 for void or vice versa? * Add toggle & display of OpenGL errors a la glutReportErrors() Finish perl bindings to remaining FreeGLUT functions: * glutGetProcAddress * what does this mean at perl level? * maybe use Inline to generate a new binding * is there a runtime alternative? * glutJoystickFunc * need to add non-callback argument * document current function Improve support for non-standard OpenGL configurations * Add command line options for perl Makefile.PL * set CFLAGS and other build options * Make single point override for INCLUDE information * Document how to edit Makefile.PL OpenGLUT support for building * OpenGLUT appears to be a dead project, use FreeGLUT. * OpenGL support not planned at this time Make POGL GLUT-proof * Make build work with GLUT-only and GLUT+FreeGLUT configurations * GLUT-only: build and run with reduced functionality * GLUT+FreeGLUT: build should correctly select and use FreeGLUT * 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 quietly disabled (glutMainLoop extensions) * Some functionality may be emulated (glutBitmapString) * make work with readline event loop for perldl shell * reverse callback strategy * what about a GUI window mode for perldl in that case? 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 * System info flags: HAVE_GLX, HAVE_GLUT, ... * Build flags: BUILD_GLUT, BUILD_FREEGLUT, ... * Exactly what libraries are being used * Library versions and locations/paths * What are the compile and link configuration * split out compile/link by libraries * OpenGL * GLU * GLUT * GLX * 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 include and link 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 constant rather than XS constant function * 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 * setup virtualized test environment for POGL and PDL * factors to include * perl vs activeperl vs strawberry * GLX vs WGL vs CGL/AGL * hardware vs software/Mesa * OS