Commit | Line | Data |
---|---|---|
1a878fcf AW |
1 | # -*- org -*- |
2 | ||
3 | * Completeness | |
4 | ||
5 | ** Complete the high-level GL binding. | |
6 | ||
57a309e7 DH |
7 | *** Bind newer versions. |
8 | ||
1a878fcf AW |
9 | Would be nice to bind newer versions as well, while keeping the |
10 | compatibility profile. | |
11 | ||
57a309e7 DH |
12 | The newer versions are backwards compatible with only rare exceptions |
13 | where some function's behaviour (but not prototype) is subtley | |
14 | redefined. To support newer versions in a simple way we can export | |
15 | all bindings and the user effectively chooses which version they use | |
16 | by their choice of procedures. | |
17 | ||
18 | Exporting particular profiles is a nice addition to this. | |
19 | ||
1a878fcf AW |
20 | ** Complete the high-level GLU binding. |
21 | ||
22 | ** Complete the high-level GLX binding. | |
23 | ||
24 | ** Complete the high-level GLUT binding. | |
25 | ||
57a309e7 DH |
26 | *** Do not keep alive callback pointers indefinitely. |
27 | ||
28 | Perhaps by moving the gc-protect mechanism to the high-level bindings, | |
29 | and track which callbacks are active on each window and globally. | |
30 | ||
31 | Users of the low-level bindings can still use the foo-callback-* | |
32 | helpers, but must assume control of pointer lifetime. Such an | |
33 | approach permits great flexibility for alternative high-level | |
34 | interfaces to reuse the low-level bindings. | |
35 | ||
1a878fcf AW |
36 | ** Write an EGL binding. |
37 | ||
38 | There is a wip-egl branch with upstream documentation. | |
39 | ||
40 | * Naming | |
41 | ||
42 | ** Mangle low-level binding names. | |
43 | ||
44 | Probably we should do this only if this low-level bindings are good | |
45 | enough. In practice this means that output arguments should be natively | |
46 | supported, and they low-level bindings should check errors as | |
47 | appropriate. | |
48 | ||
57a309e7 DH |
49 | ** TODO Document the naming convention. :wigs: |
50 | ||
51 | Specifically we should document when a name changes significantly, | |
52 | like when to use a "set-" prefix and the abbreviation expansions | |
53 | ("accum" -> "accumulation-buffer", "coord" -> "coordinates"). | |
54 | ||
55 | Getting this done early will permit implementing the policy more | |
56 | accurately. Marking TODO and will work on a draft covering the | |
57 | conventions I have used/intend to use soon. | |
58 | ||
59 | ** Maybe drop the "gl-" prefix for high-level bindings. | |
1a878fcf | 60 | |
57a309e7 DH |
61 | The names for most gl, glu, etc. procedures are unique enough to not |
62 | conflict with each other, and most Scheme names generally. Removing | |
63 | the prefix will make names where an additional prefix is used (such as | |
64 | "set-") much more natural. | |
65 | ||
66 | Users with specific namespace concerns can use selective and renaming | |
67 | imports. | |
1a878fcf AW |
68 | |
69 | * Documentation | |
70 | ||
71 | ** Figure out how to incorporate low-level bindings into the | |
72 | documentation. | |
73 | ||
74 | Often-times the high-level bindings just duplicate information from the | |
75 | low-level bindings, but poorly. To do this, we'd have to make a map of | |
76 | how to organize the low-level bindings, probably according to their | |
77 | section in the specification. | |
78 | ||
79 | ** Mangle enumeration names to link to the enumerator documentation. | |
80 | ||
81 | ** Give an @anchor{} to each API element so that we can link back and | |
82 | forth. | |
83 | ||
57a309e7 DH |
84 | * Examples |
85 | ||
86 | ** examples/README explaining the layout. | |
87 | ||
88 | ** OpenGL standards. | |
89 | ||
90 | Language bindings typically provide ports of the standard examples, to | |
91 | demonstrate usage patterns and their own unique style. | |
92 | ||
93 | http://www.sgi.com/products/software/opengl/examples/index.html | |
94 | ||
95 | Implement at least a few of these, their licencing is permissive | |
96 | enough and they have been widely ported to Free Software language | |
97 | bindings already. | |
98 | ||
99 | ** More interesting demos. | |
100 | ||
1a878fcf AW |
101 | * Meta |
102 | ||
103 | ** Mailing list? | |
104 | ||
105 | ** Web page for documentation? | |
106 | ||
107 | Both of these point towards hosting on savannah at some point. Figl | |
108 | could become a GNU project but it will not have copyright assignment. |