-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO
263 lines (209 loc) · 9.36 KB
/
TODO
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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
Last saved: Tue 20 Sep 2011 09:52:40 AM
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? ]
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.
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?
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
* 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