glcompat - controls compatibility modes
void glcompat(mode, value)
long mode, value;
mode the name of the compatibility mode you want to change. The
available modes are:
GLC_OLDPOLYGON controls the state of old-style polygon mode.
GLC_ZRANGEMAP controls the state of z-range mapping mode.
GLC_SOFTATTACH controls whether this program will keep mouse
focus when a shift or control key is pressed.
GLC_MANAGEBG sets imakebackground windows to be override
GLC_SLOWMAPCOLORS controls whether mapcolor calls are buffered.
GLC_INPUTCHANGEBUG controls whether extra INPUTCHANGE events are
generated when entering and leaving a subwindow.
GLC_NOBORDERBUG controls whether a noborder() window can regain
GLC_MQUEUERATE controls the compression of motion events.
GLC_FORCECIMAP controls which colormaps will be installed when an
RGB window receives colormap focus.
GLC_SET_VSYNC sets the value of the vertical retrace counter.
GLC_GET_VSYNC returns the present value of the vertical retrace
GLC_VSYNC_SLEEP puts the calling process to sleep until the
vertical retrace counter reaches some specified value.
GLC_TABLETSCALE determines how tablet coordinates are scaled when
the tablet controls the graphics cursor.
value the value you want to set for the specified compatibility mode.
glcompat gives control over details of the graphics compatibility between
Old-Style Polygon Mode (GLC_OLDPOLYGON) [Toc] [Back]
By default, old-style polygon mode is 1. Setting it to 0 speeds up oldstyle
drawing commands but the output is subtly different. See the
``High-Performance Drawing'' and ``Old-Style Drawing'' sections of the
Graphics Library Programming Guide for further explanation of the two
modes and their effects on various machines.
Old-style polygon are polygons drawn with any GL commands other than
bgnpolygon/endpolygon, bgntmesh/endtmesh, or bgnqstrip/endqstrip.
WARNING: some features added recently to the Graphics Library are not
supported by old-style polygons. These features include texture mapping,
fog, and polygon antialiasing. Use new-style polygon commands, or set
GLC_OLDPOLYGON to 0, to insure correct operation of new rendering
This is a per-window mode.
Z-Range Mapping Mode (GLC_ZRANGEMAP)
When z-range mapping mode is 0, the domain of the z-range arguments to
lsetdepth, lRGBrange, and lshaderange depends on the graphics hardware.
When multisample is enabled, and multisample buffers exist in the current
framebuffer configuration in the current drawmode, the minimum is the
value returned by getgconfig(GC_MS_ZMIN) and the maximum is the value
returned by getgconfig(GC_MS_ZMAX). Otherwise, the minimum is the value
returned by getgconfig(GC_ZMIN) and the maximum is the value returned by
getgconfig(GC_ZMAX). When this mode is 1, these routines accept the
range 0x0 to 0x7FFFFF; it is mapped to whatever range the graphics
In order to maintain backwards compatibility, the default GLC_ZRANGEMAP
is 1 on IRIS-4D B and G models, and 0 on all others.
This is a per-process mode.
Soft Attach (GLC_SOFTATTACH)
Under previous window systems, if any keyboard key was held down, a
window would keep receiving mouse events, even if the mouse moved out of
the window. This type of input distribution is not supported as a
generally available focus policy in X, so the GL provides a similar
behavior from programs which ask for it. If a program sets
GLC_SOFTATTACH to true, then holding down any of the modifier keys (other
than alt) locks the mouse focus onto that window until all modifier keys
(other than alt) are released. (Modifier keys other than alt are shift
imakebackground window control (GLC_MANAGEBG)
If set to true, imakebackround windows will be managed by the window
manager. The correct setting of this will vary based on type of
background program and type of machine and the user's selection of window
managers. See the man page on imakebackround for more info.
Buffered mapcolor (GLC_SLOWMAPCOLORS) [Toc] [Back]
If set to true, then mapcolor requests are flushed to the window server
as soon as they are made. If a program is calling mapcolor many times,
this will be very inefficient.
INPUTCHANGE bug compatibility (GLC_INPUTCHANGEBUG) [Toc] [Back]
This controls what INPUTCHANGE events are delivered as focus moves from a
window to a subwindow. Before 4.0 an INPUTCHANGE with value "0" was
generated as the focus transitioned between a window and its subwindows.
In 4.0 INPUTCHANGE "0" always means that the focus has moved to a
different top level window. Setting this glcompat value to True will
enable the pre 4.0 behavior.
noborder() bug compatibility (GLC_NOBORDERBUG)
Calling winconstraints() can restore a border previously removed by a
call to noborder(). This was not the case before release 4.0. Setting
this glcompat value to True will enabe the pre 4.0 behavior.
Colormap installation for RGB windows (GLC_FORCECIMAP) [Toc] [Back]
When an RGB window receives colormap focus, the colormap for color index
windows is not affected. Setting this glcompat value to True will cause
the color index colormap to be installed when an RGB window gets colormap
Motion event compression (GLC_MQUEUERATE)
If the value of GLC_MQUEUERATE is zero, then motion events are received
unaltered, with no compression. But if the value is greater than zero,
it is the maximum number of events per second at which the GL Q is
allowed to grow when motion events are received. For example if the
value of GLC_MQUEUERATE is equal to 5, then the GL Q will grow by at most
5 motion events per second.
If a new event arrives at a rate faster than allowed by GLC_MQUEUERATE,
the new event is never thrown away. Rather, the new event overwrites the
previously most recent event in the GL Q. That is, using a positive
value for GLC_MQUEUERATE will not in any way prohibit a program from
keeping up with the device.
There are two defines in <gl.h> which may be used for the value of
GLC_MQUEUERATE. The first is GLC_COMPATRATE, which gives an event rate
similar to pre 4.0. The second is GLC_CMPRESS which yields maximum
"compression" of motion events.
Vertical retrace counter control [Toc] [Back]
GLC_SET_VSYNC sets the initial value of the vertical retrace counter to
the given value. The vertical retrace counter will then increment by one
on every vertical retrace of the screen display. The frequency of this
increment is governed by the video output format in use. GLC_GET_VSYNC
allows the caller to get the current value of the vertical retrace
counter. This value will be stored in the location pointed to by value.
Thus value should be used as a pointer to an integer into which
GLC_GET_VSYNC stores the current value of the vertical retrace counter.
GLC_VSYNC_SLEEP puts the calling process to sleep until the remainder of
the vertical retrace counter divided by the specified interval equals the
specified mod. For example, if the current value of the vertical retrace
counter is 126, the specified interval is 5, and the specified mod is 3,
then the calling process is immediately put to sleep for two vertical
retrace intervals. When the vertical retrace count reaches 128 (such
that 128 mod 5 equals 3), the process is woken up. Value in this case is
a pointer to an array of two integers, the first integer specifies the
interval, the second integer specifies the mod.
Note that the above three vertical retrace counter control functions are
only available on VGX, VGXT, VTX, Reality Engine, Reality Engine 2, Elan,
and Extreme graphics systems. These functions work in immediate mode
only, with graphics rendered locally.
Tablet coordinate scaling (GLC_TABLETSCALE) [Toc] [Back]
GLC_TABLETSCALE is applicable only when the tablet controls the pointer
(graphics cursor). In that case, the value determines how tablet
coordinates are mapped to screen coordinates.
If the value is 0, there is a 1-1 mapping between tablet coordinates and
screen coordinates, so that on a typical tablet, only the lower left
quadrant will be mapped to the screen.
If the value is 1 (the default), then "iso" scaling is performed. That
is, as much of the tablet as possible is mapped to the screen, with the
restriction that a 1-1 aspect ratio is preserved. (I.e. the same scaling
is applied to both x and y.)
If the value is 2, then the entire tablet is mapped to the entire screen.
(This is called "fit" scaling.)
getgdesc, lRGBrange, lsetdepth, lshaderange, imakebackground, glresources
This routine is available only in immediate mode.
The state of old-style polygon mode is ignored on IRIS-4D B and G models.
GLC_ZRANGEMAP should be a per-window mode.
PPPPaaaaggggeeee 4444 [ Back ]