OpenGLEAN User Support
Home page | Introduction | Documentation | Files | Examples | Proposals | Authors | Links

OpenGLEAN Development
Summary | CVS | (discussion via home page) | (contact via home page) | (suggestion box) | License | Todo | Bugs

Todo List

The latest list is available at

Bug reports and other suggestions should be directed to the developers at this time.

Stuff these into global state variables

Maybe support runtime selection between bitmapped and stroked?

Global glutInit
Should -sync cause a window system sync at the top of the event loop (or at the open/close of the glutMainEventLoop())?

Global glutLeaveMainLoop
Could use longjmp(); see oghTakeActionOnWindowClose(). This would let us terminate the entire loop immediately.

Group window
At some point, the API should be revised so that one can make a more meaningful query/request pattern to restore window size/position. We should be able to do better than the current situation.


OpenGLEAN has numerous data structures that must be initialized before use. Additionally, OpenGLEAN supports some interaction with the user and environment during initialization---for example, setting the window size and position. In the same family, there are a few functions for letting the program set default values and make requests.

The glutInit*() functions cover these needs.

Bear in mind that:

Global glutCreateSubWindow
Consider implementing subwindows as a "mode" or "style" of a more generic window creation interface. (The parentID could then be omitted and instead we'd use the current window.)

Global glutDestroyWindow
Is this safe if we are not initialized yet?

Global glutDestroyWindow
Clean this up.

Global glutInitDisplayString
GLUT_BORDERLESS is not represented.

offscreen is not tested.

Not all features appear to be implemented. In particular, numeric parameters and comparator specifications are lacking. See GLUT 3.7 sources for example.

PyOpenGL glutInitDisplayString documentation.

Global glutReshapeWindow
Add support for offscreen windows.

Global glutSetCursor
Presently on X11, if we fail to create the new cursor, we behave as if GLUT_CURSOR_INHERIT were requested. We should probably leave the cursor unchanged. Before I tighten this up too much, I should determine what we can truly guarnatee with WIN32.
The X branch of OpenGLEAN does not do thorough error checking.

The X branch of OpenGLEAN always converts FULL_CROSSHAIR to CROSSHAIR. This is acceptable, but if a host system supports a fullscreen crosshair, it would be nice to support that. OpenGLEAN actually rewrites your cursor choice, at present, rather than silently pretending that you said something else. This is not what GLUT, or freeglut (now), do.

Out of range cursorID values generate warnings.

Has no visible effect if the current window is of type GLUT_OFFSCREEN.

Consider importing the cursor-caching that freeglut has recently added. Useful for those special corner cases where you're running your application remotely and don't want to keep re-generating the cursor over a network link.

Global glutSwapBuffers
How does this interact with overlays?

Consider making GLUT_FPS keep per-window stats in a multi-window program.

Global glutDeviceGet
Consider moving to a table-based approach rather than a switch(), letting us move to modular functions.

Global glutGet
Multisample support (GLUT_WINDOW_NUM_SAMPLES, here).

GLUT_WINDOW_BUFFER_SIZE should be implemented for WIN32.


It looks like we could use an OPENGLEAN_REQUIRE_WINDOW() macro invocation in addition to OPENGLEAN_REQUIRE_READY().


This function is a bit messy, especially the WINCE part. Fix.

Lots of code uses return to hop out. Since it's such a sprawling function, it's easy to be in the middle and not be 100% sure if there's anything important at the end of the function, or if it is safe to just "drop out" of the current case and head for the bottom.

Global glutExtensionSupported
Consider an ogWarning() if there is no current rendering context.

This is an ugly bit of code with 5 return statements, one of which is never reached.

Global glutLayerGet
Probably we should merge the below sections unless and until layer support is actually added.

Global glutLayerGet
Should be set when the window is damaged; should not be set just for glutPostRedisplay().

Global glutCopyColormap
Determine if we should set the current window


WIN32 version.

Global glutGetColor

WIN32 version.

Global glutSetColor
Error checking.


WIN32 version.

Global glutCreateMenuWindow
Consider making "menu windowness" a mode for a generic window creation API entry point.

Global glutSetWindowStayOnTop
Can a glutGet() be defined to tell us whether a window can be made to stay on top? Or whether a window has (successfully) been marked for staying on top?

Investigate making a workalike variant using glutPopWindow() to mimic the feature where not directly supported.

Global glutAttachMenu
Assumes 3 mouse buttons. (Actually OPENGLEAN_MAX_MENUS holds the assumed number of buttons.) Cannot bind to more buttons. Will not issue any warnings or errors if the user does not have enough buttons to reach your menu.

Global glutBitmapHeight
We have discussed adding a "font descender" query. We should go ahead and do it.

Global glutCloseFunc
There needs to be some work to rationalize the behavior when a window is closed. Presently, the handling is ad-hoc and sloppy.

Global glutGameModeGet

Global glutMenuDestroyFunc
What on Earth is rationale for this feature? Menus should only be destroyed when we ask them to be destroyed, or when their window is destroyed. In the former case, we already know that the menu is being destroyed because we requested it. In the latter case, it is easy for the client to track that if they care, via window-destruction callbacks.

Global glutSolidSierpinskiSponge
Consider removing the offset parameter from the API (use a helper function).

num_levels should really be unsigned.

Global glutSolidTetrahedron
See todo-list on glutWireTetrahedron().

Global glutStrokeHeight
We have discussed adding a "font descender" query. We should go ahead and do it.

Global glutStrokeWidth
Determine if any glyphs are either wider than this function or if they render outside of the bounding box given by (0,-descent) by (width,height-descent).

Global glutTabletButtonFunc
We might want to add support for this sooner or later. Although a tablet could also be generalized as a mouse. There are relatively cheap AipTek HyperPen tablets, and slightly less cheap Wacom tablets on many store shelves.

Global glutTabletMotionFunc
We might want to add support for this sooner or later. Although a tablet could also be generalized as a mouse. There are relatively cheap AipTek HyperPen tablets, and slightly less cheap Wacom tablets on many store shelves.

Global glutWireOctahedron
It may be faster (and look better) to draw each edge once, setting the Normal at each edge. (I don't think that this matters all that much, but a lineloop was proposed for the wire Cube for speed.)

Global glutWireSierpinskiSponge
Refer to the TODO entries for glutWireSierpinksySponge().

Global glutWireTetrahedron
Merge r0 r1 r2 and r3 into one array.

Put the normals into the (or an) array.

Make the array static const, with file scope, and share with glutSolidTetrahedron().

Maybe consolidate with the SierpinskySponge? Logo Supported in part by

Generated on Fri Sep 16 20:15:32 2005 for OpenGLEAN by doxygen 1.4.3
The OpenGLEAN project is hosted by and SourceForge.