OpenGLUT Documentation
Introduction | Documentation | Examples | Proposals | Authors | Copying | Todo | Bugs | Links

Todo List

The latest list is available at http://www.openglut.org/todo.html

Note:
New bug reports or suggestions should be directed to the bug or requested feature enhancement trackers at Sourceforge.

Global glutCreateSubWindow (int parentID, int x, int y, int w, int h)
This looks like an abuse of assert

Global glutDestroyWindow (int windowID)
Clean this up.

Global glutFullScreen (void)
looks like an abuse of assert

looks like an abuse of assert

Shouldn't need to XFlush

Global glutGetWindow (void)
looks like an abuse of assert

Global glutHideWindow (void)
Looks like an abuse of assert

Looks like an abuse of assert

Shouldn't need this XFlush

Global glutIconifyWindow (void)
Looks like an abuse of assert

Looks like an abuse of assert

Shouldn't need this XFlush

Global glutInitDisplayString (const char *displayMode)
GLUT_BORDERLESS and GLUT_OFFSCREEN are not represented.

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 glutPopWindow (void)
looks like an abuse of assert

looks like an abuse of assert

Global glutPositionWindow (int x, int y)
Looks like an abuse of assert

looks like an abuse of assert

Shouldn't need this XFlush

Global glutPushWindow (void)
looks like an abuse of assert

looks like an abuse of assert

Global glutReshapeWindow (int width, int height)
Add support for offscreen windows.

Global glutReshapeWindow (int width, int height)
looks like an abuse of assert

looks like an abuse of assert

Could delete/create/set-window-id for offscreen.

Global glutSetIconTitle (const char *title)
looks like an abuse of assert

looks like an abuse of assert

Shouldn't need this xflush

Global glutSetWindow (int ID)
Looks like an abuse of assert

Global glutSetWindowTitle (const char *title)
Looks like an abuse of assert

looks like an abuse of assert

Shouldn't need this XFlush

Global glutShowWindow (void)
Looks like an abuse of assert

Looks like an abuse of assert

Shouldn't need this XFlush

Global glutSwapBuffers (void)
How does this interact with overlays?

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

Global glutCloseFunc (void(*callback)(void))
There needs to be some work to rationalize the behavior when a window is closed.

Global glutDeviceGet (GLenum eWhat)
Only supports querying for one joystick.

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

Global glutTabletButtonFunc (void(*callback)(int button, int state, int x, int y))
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 (void(*callback)(int x, int y))
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 glutSolidSierpinskiSponge (int num_levels, const GLdouble offset[3], GLdouble scale)
Consider removing the offset parameter from the API (use a helper function).

Global glutSolidTetrahedron (void)
See todo-list on glutWireTetrahedron().

Global glutWireOctahedron (void)
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 glutWireTetrahedron (void)
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?

Global glutStrokeHeight (void *fontID)
We have discussed adding a "font descender" query. We should go ahead and do it.

Global glutStrokeWidth (void *fontID, int character)
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 glutGet (GLenum eWhat)
Go back and flesh out the above list.

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.

Causes crashes (assertion failure) if you call this before having called glutInit()---other than GLUT_INIT_STATE and GLUT_ELAPSED_TIME. Because various things can cause OpenGLUT to become deinitialized, we should probably either return default values of some kind or do minimal initialization if we are called without proper initialization.

Global glutAttachMenu (int button)
Assumes 3 mouse buttons. (Actually FREEGLUT_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 glutMenuDestroyFunc (void(*callback)(void))
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.

Group gamemode
It behaves differently on different systems. E.g., on some X systems, changing the video mode is impossible. This has led some developers to use game mode as a ``grab the mouse'' mode, without intending a resolution change.

Replacing game mode with a better design was discussed at some length in early 2004.

There is no way for game mode to report a partial failure.

There is no way to guarantee cleanup if OpenGLUT crashes during game mode---or if the client crashes or directly exits, etc.

Some XFree86 releases, with some drivers, can fail to set the video mode properly, resulting in disasterous failure (an unusable display). This is presently somewhat headed off by a compile-time option, but a runtime option would be better, as there may be cases where the user is willing to put up with the risk for some---and only some---OpenGLUT applications. Since game mode applications are somewhat dim-witted about such user preferences, it seems, an OpenGLUT runtime control could be desirable.

Global glutEnterGameMode (void)
Documentation

OpenGLUT may be unable to restore the original settings (this has been observed on WIN32).

Global glutGameModeGet (GLenum pname)
Documentation

OpenGLUT intrepretation of GLUT_GAME_MODE_DISPLAY_CHANGED

Global glutGameModeString (const char *string)
Documentation

Global glutLeaveGameMode (void)
Documentation

Global glutExtensionSupported (const char *extension)
Wouldn't this be simpler and clearer if we used strtok()?

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

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

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

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

Global glutSetWindowStayOnTop (int enable)
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?

Should walk the tree of menus and glutPopWindow() (or all windows that are of menu-window type?).

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





OpenGLUT Development @ Sourceforge
Homepage | Summary | Files | CVS | Forums | Lists | Bugs | RFE

Generated on Tue Oct 5 18:44:33 2004 for OpenGLUT by doxygen 1.3.8
The OpenGLUT project is hosted by sourceforge.net.