GLUT- A binding for the OpenGL Utility Toolkit

MaintainerSven Panne <>
Safe HaskellNone



OpenGL supports both RGBA and color index rendering. The RGBA mode is generally preferable to color index because more OpenGL rendering capabilities are available and color index mode requires the loading of colormap entries.

The GLUT color index state variables are used to read and write entries in a window's color index colormap. Every GLUT color index window has its own logical color index colormap. The size of a window's colormap can be determined by reading numColorMapEntries.

GLUT color index windows within a program can attempt to share colormap resources by copying a single color index colormap to multiple windows using copyColormap. If possible GLUT will attempt to share the actual colormap. While copying colormaps using copyColormap can potentially allow sharing of physical colormap resources, logically each window has its own colormap. So changing a copied colormap of a window will force the duplication of the colormap. For this reason, color index programs should generally load a single color index colormap, copy it to all color index windows within the program, and then not modify any colormap cells.

Use of multiple colormaps is likely to result in colormap installation problems where some windows are displayed with an incorrect colormap due to limitations on colormap resources.



colorMapEntry :: Index1 GLint -> StateVar (Color3 GLfloat)Source

Controls the color index colormap entry of the current window's logical colormap for the layer in use. The layer in use of the current window should be a color index window. The color index should be zero or greater and less than the total number of colormap entries for the window (see numColorMapEntries) and different from an overlay's transparent index (see transparentIndex).

If the layer in use's colormap was copied by reference, setting a colormap entry will force the duplication of the colormap.

copyColormap :: Window -> IO ()Source

Copy (lazily if possible to promote sharing) the logical colormap from a specified window to the current window's layer in use. The copy will be from the normal plane to the normal plane; or from the overlay to the overlay (never across different layers). Once a colormap has been copied, avoid setting cells in the colormap via colorMapEntry since that will force an actual copy of the colormap if it was previously copied by reference. copyColormap should only be called when both the current window and the specified window are color index windows.

numColorMapEntries :: GettableStateVar GLintSource

Contains the number of entries in the colormap of the current window's current layer (0 in RGBA mode).

transparentIndex :: GettableStateVar (Index1 GLint)Source

Contains the transparent color index of the overlay of the current window or -1 if no overlay is in use.