1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
|
Fix segfault in glutMainLoop() for test.pl on vista
* Build debug perl for win32
* Get gdb for MinGW
* Same with MSVC 6.0 and latest
* Does same code with Prima::OpenGL not segfault?
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? ]
Miscellaneous portability improvements
* Convert malloc() and calloc() calls to Newx(), Newxc(), and Newxz()
* Convert free() to Safefree() to match.
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
Evaluate strategy for legacy POGL going forward:
* Factor out RPN, OGA, ...
* Can implementation be less OGA specific
* Support OGA, PDLs, ...
* What about using just PDL::Core stuff
Enhance CPAN Testers automated testing support
* Improve diagnostic output for debugging test results
* Add a "compile and link only" build of POGL
* Base on GLEW or GLee implementation
* Start with GLEW for more cross-platform
* Can implementation be made wrapper library independent?
Improve library and headers checks in Makefile.PL
* Required libraries are OpenGL and a GUI/context providing toolkit
* GLUT/FreeGLUT, Prima::OpenGL, GTk+, WxWidgets,...
* 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()
* what about GLU, GLX, others?
* 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
* move to common, clear choice as default!
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 or other GUI/context environment
* N.B. *GLUT is on *all* GLX systems but may not use GLX
* What is needed to support Tk+X11 bindings (just context?)
* Investigate Gtk+ or wxWidgets for embedding
* GLUI as an easy, simple starter (performance?)
Fix examples/ directory
* update to use GLUT rather than glp()
* make simple toolkit wrapper
* hide details of the underlying GUI layer
* simplify demo code
* 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
Add support for more GLUT variant export control:
* Split GLUT into a separate module
* I.e., remove GUI dependencies from POGL
* Need generic context interface standard
* Should be able to use Prima instead
* or WxWidgets or GTk or ...
* :freeglutconstants and :freeglutfunctions
* :appleglutconstants and :appleglutfunctions
Make code handle "missing" windows:
* This is for OpenGL::GLUT
* Calls glutGetWindow() and assumes win is valid
* If win==0, need to handle appropriately and *not* do anything with win
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()
* Call glGetError in a loop until no errors returned
* Do check for all OpenGL commands
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
OpenGLUT support for building
* OpenGLUT is a dead project, use FreeGLUT.
* Add info to docs re *no* OpenGLUT
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?
Refactor config/build for portability and simplicity
* use Module::Build framework
* use constant rather than XS constant function
* Extract GL, GLX, and WGL constants from glew.h, glxew.h and wglew.h
* Extract GLU constants from glu.h
* Extract GLUT and FreeGLUT from glut.h and freeglut_*.h
* Verify that these pre-extracted versions work ok
* use GLEW and autogeneration for bindings
* why does GLEW require GLX_VERSION_1_2?
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)
* PDL object support
* NOTE: require_ok() and use_ok() don't like $VERSION w git suffix
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
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
|