Legend:

OpenGL is an industry standard rasterization library that provides efficient access for direct rendering of 2D and 3D graphics. As such, this library makes a solid foundation for high-performance scientific visualization, video games, and toy projects. See for example the gloss library that uses OpenGL for the "heavy lifting".

48

48

49

While the core of the OpenGL standard is not platform specific, creating an OpenGL context within an application and managing user input requires platform specific support. This proposal includes the GLUT package as a means to provide that platform specific support. GLUT can be used to handle mouse and keyboard input, create and controlling a GUI window suitable for OpenGL rendering, and also provides for primitive font rendering.

49

While the core of the OpenGL standard is not platform specific, creating an OpenGL context within an application and managing user input requires platform specific support. This proposal includes the GLUT package as a means to provide that platform specific support. GLUT can be used to handle mouse and keyboard input, create and control a GUI window suitable for OpenGL rendering, and also provide primitive font rendering.

50

50

51

51

In order to support the OpenGL package, the platform will also need to accept the underlying low-level bindings that OpenGL depends on (OpenGLRaw and GLURaw). These raw packages are in some ways nicer to use than the higher-level package. They are nicer when:

While the haddock documentation for the raw packages is not as good those packages follow the naming conventions of the documented API so well that external documentation can be used to understand them. OpenGLRaw and GLURaw modules could live inside the OpenGL package, but packing them separately allows for a nice split (and fewer dependencies) for advanced users who want to directly use functions defined in OpenGLRaw. Additionally, the higher-level interface tends to lag behind the official specification where as because OpenGLRaw simply wraps the C api it is much easier to update. In fact, we have future plans to autogenerate OpenGLRaw directly from the published specifications.

56

While the haddock documentation for the raw packages is not as good those packages follow the naming conventions of the documented API so well that external documentation can be used to understand them. OpenGLRaw and GLURaw modules could live inside the OpenGL package, but packing them separately allows for a nice split (and fewer dependencies) for advanced users who want to directly use functions defined in OpenGLRaw. Additionally, the higher-level interface tends to lag behind the official specification whereas with OpenGLRaw, by simply wrapping the C API, it is much easier to update. In fact, we have future plans to autogenerate OpenGLRaw directly from the published specifications.