-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO
211 lines (163 loc) · 7.29 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
Last saved: Mon 22 Aug 2011 09:04:20 AM
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()
* 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
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()
* 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
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
* Add info to docs re OpenGLUT support
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