eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'GLXWorkstation':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: GLXWorkstation


Inheritance:

   Object
   |
   +--GraphicsDevice
      |
      +--HostGraphicsDevice
         |
         +--DeviceWorkstation
            |
            +--XWorkstation
               |
               +--GLXWorkstation

Package:
stx:libview
Category:
Interface-Graphics
Version:
rev: 1.94 date: 2018/04/26 09:16:22
user: stefan
file: GLXWorkstation.st directory: libview
module: stx stc-classLibrary: libview
Author:
Claus Gittinger
Jeff McAffer

Description:


this class was originally written as a demo on how an interface to
a c graphics library could be implemented. In the mean time, it has become
quite complete ...

It provides an interface to either a real GL (on SGI workstations)
or a simulated VGL (i.e. GL-light; low nicotine).
The GL simulation is derived from the PD vogl library, with slight
modifictions to support multiple GL views.

Most of the hard work was done by Jeff (thanks indeed) ...


Some notes:

I do not really know what most of these functions do - for more
detail, see the GL man pages (on SGI) or the doc provided with VGL.

The interface offered here provides a very very low level (i.e one-to-one)
interface to GL functions. More high-level stuff is required, to make
3D drawing be more object-oriented.
(see a bit of this in 'clients/IRIS-specials')

Some functions are duplicated, Jeff and I developed those in parallel -
for now, both will remain - finally they will be merged and duplicates removed ...
(examples are makeobj and makeObject).

Also, in a hurry to implement all those methods, many do no or only
limited argument checking - make certain, that you pass the correct
arguments.

There might be some confusion in the v3[sifd] functions: basically they
all do the same, and could be mapped onto one st-method (such as vertex3).
However, the C-functions expect different argument types - I don't know if
one or another of these functions suffers from any performance penalties.
Therefore, I leave the direct 1-to-1 mapping; GL experts might know more
about this (I use v3f in all of my code).

written june 93 by claus
VGL stuff dec 93
many many additions jan 94 by Jeff McAffer <jeff@is.s.u-tokyo.ac.jp>

Since this is a demo (consider it a free add-on goody) there is
*** NO WARRANTY ** for this.

Notice: this should be rewritten to use the openGL library functions
(actually, to not loose the VGL interface, another OpenGLWorkstation
 class should be written)


Class protocol:

error handling
o  errorStringOfLastError

o  minorCodeOfLastError

o  requestCodeOfLastError

o  resourceIdOfLastError

misc
o  forceGL: aBoolean


Instance protocol:

arcs and circles
o  glxArcX: x y: y radius: radius startang: startang endang: endang in: aGLXWindowId
draw an arc at a given location.
The x/y/radius args may be floats, fractions or smallIntegers.
startang and endang must be smallIntegers (10th of a degree).

o  glxArcfX: x y: y radius: radius startang: startang endang: endang in: aGLXWindowId
draw a filled arc.
The x/y/radius args may be floats, fractions or smallIntegers.
startang and endang must be smallIntegers (10th of a degree).

o  glxArcfiX: x y: y radius: radius startang: startang endang: endang in: aGLXWindowId
draw a filled arc.
All arguments must be smallIntegers.

o  glxArcfsX: x y: y radius: radius startang: startang endang: endang in: aGLXWindowId
draw a filled arc.
All arguments must be (16bit) smallIntegers.

o  glxArciX: x y: y radius: radius startang: startang endang: endang in: aGLXWindowId
draw an (unfilled) arc.
All arguments must be smallIntegers.

o  glxArcsX: x y: y radius: radius startang: startang endang: endang in: aGLXWindowId
draw an (unfilled) arc.
All arguments must be (16bit) smallIntegers.

o  glxCircX: x y: y radius: radius in: aGLXWindowId
draw a circle.
x/y/radius may be floats, fractions or smallIntegers.

o  glxCircfX: x y: y radius: radius in: aGLXWindowId
draw a filled circle.
x/y/radius may be floats, fractions or smallIntegers.

o  glxCircfiX: x y: y radius: radius in: aGLXWindowId
draw a filled circle.
x/y/radius must be smallIntegers.

o  glxCircfsX: x y: y radius: radius in: aGLXWindowId
draw a filled circle.
x/y/radius must be (16bit) smallIntegers.

o  glxCirciX: x y: y radius: radius in: aGLXWindowId
draw a circle (unfilled).
x/y/radius must be smallIntegers.

o  glxCircsX: x y: y radius: radius in: aGLXWindowId
draw a circle (unfilled)
x/y/radius must be (16bit) smallIntegers.

attribute stack
o  glxPopattributesIn: aGLXWindowId
pop (and forget) the top entry on the attribute stack

o  glxPushattributesIn: aGLXWindowId
save the current attributes on the attribute stack

character position
o  glxCmov2X: x y: y in: aGLXWindowId
change the character position to a 2D point, as passed in x/y.
The arguments may be floats, fractions or smallIntegers.

o  glxCmov2iX: x y: y in: aGLXWindowId
change the character position to a 2D point, as passed in x/y.
The arguments must be smallIntegers.

o  glxCmov2sX: x y: y in: aGLXWindowId
change the character position to a 2D point, as passed in x/y.
The arguments must be (16bit) smallIntegers.

o  glxCmovX: x y: y z: z in: aGLXWindowId
change the character position to a 3D point, as passed in x/y/z.
The arguments may be floats, fractions or smallIntegers.

o  glxCmoviX: x y: y z: z in: aGLXWindowId
change the character position to a 3D point, as passed in x/y/z.
The arguments must be smallIntegers.

o  glxCmovsX: x y: y z: z in: aGLXWindowId
change the character position to a 3D point, as passed in x/y/z.
The arguments must be (16bit) smallIntegers.

o  glxGetcposIn: aGLXWindowId
Return the current character position as a point with integer coordinates

clearing
o  glxClearIn: aGLXWindowId
clear to current color

o  glxCzclearCval: cval zval: zval in: aGLXWindowId
clear to a color (cval) and clear z buffer to zval simultaniously

o  glxZClearIn: aGLXWindowId
clear z buffer

color
o  glxColor: index in: aGLXWindowId
set the drawing color;
for non gouraud shading, we don't care if the argument is integer or float;
otherwise, better results are expected with float values.

o  glxColorRed: r green: g blue: b alpha: a in: aGLXWindowId
set the drawing color, including alpha value.
The args must be integer values within 0..255

o  glxColorRed: r green: g blue: b in: aGLXWindowId
set the drawing color.
The args must be integer values in 0..255

o  glxLrgbrangeRmin: rmin gmin: gmin bmin: bmin rmax: rmax gmax: gmax bmax: bmax znear: znear zfar: zfar in: aGLXWindowId

o  glxMapcolorI: i red: red green: green blue: blue in: aGLXWindowId
change a color in the color lookup table (i.e. in COLOR_INDEX mode).
The arguments must be smallIntegers.

o  glxTextcolor: tcolor in: aGLXWindowId
change the color used for text drawing

curves
o  glxCurvebasis: basid in: aGLXWindowId
sets the basis type of curves

o  glxCurveit: iterationcount in: aGLXWindowId
Iterates the top matrix on the stack as a forward difference
matrix, drawing as it goes along.

o  glxCurveprecision: nsegments in: aGLXWindowId
sets the number of line segments that make up a curve segment

double buffering
o  glxBackBufferIn: aGLXWindowId
switch to back buffer drawing - turning frontbuffer drawing off

o  glxBackbuffer: b in: aGLXWindowId
turn backBuffer drawing on/off.
Notice: VGL is not able to draw into both buffers at the same time ...
... enabling the backbuffer automatically disables frontbuffer drawing
and vice versa. This seems not to be the case with a true GL.

o  glxDoubleBufferIn: aGLXWindowId
set double buffer mode

o  glxFrontBufferIn: aGLXWindowId
switch to front buffer drawing - turning backbuffer drawing off

o  glxFrontbuffer: b in: aGLXWindowId
turn on/off frontbuffer drawing.
Notice: VGL is not able to draw into both buffers at the same time ...
... enabling the backbuffer automatically disables frontbuffer drawing
and vice versa. This seems not to be the case with a true GL.

o  glxSingleBufferIn: aGLXWindowId
set single buffer mode

o  glxSwapBuffersIn: aGLXWindowId
swap the back and front buffers.

To animate things smoothly, draw into the backBuffer while the frontBuffer is
displayed and swap them for every frame.

flat drawing
o  glxBeginClosedLineIn: aGLXWindowId
start a closed line

o  glxBeginLineIn: aGLXWindowId
start a line group

o  glxBeginPointIn: aGLXWindowId
start a point-group

o  glxBeginPolygonIn: aGLXWindowId
start a polygon

o  glxBeginQuadrilateralStripIn: aGLXWindowId
start a quadrilateral strip

o  glxBeginTriangleMeshIn: aGLXWindowId
start a triangle mesh

o  glxEndClosedLineIn: aGLXWindowId
end a closed line

o  glxEndLineIn: aGLXWindowId
end a line group

o  glxEndPointIn: aGLXWindowId
end a point group

o  glxEndPolygonIn: aGLXWindowId
end a polygon

o  glxEndQuadrilateralStripIn: aGLXWindowId
end a quadrilateral strip

o  glxEndTriangleMeshIn: aGLXWindowId
end a triangle mesh

graphics position
o  glxMove2: v in: aGLXWindowId
change the graphics position to a 2D point, as passed in vector v

o  glxMove2X: x y: y in: aGLXWindowId
change the graphics position to a 2D point, as passed in x/y

o  glxMove2iX: x y: y in: aGLXWindowId
change the graphics position to a 2D point, as passed in x/y.
The arguments must be smallIntegers.

o  glxMove2sX: x y: y in: aGLXWindowId
change the graphics position to a 2D point, as passed in x/y.
The arguments must be smallIntegers.

o  glxMove: v in: aGLXWindowId
change the graphics position to a 3D point, as passed in vector v

o  glxMoveX: x y: y z: z in: aGLXWindowId
change the graphics position to a 3D point, as passed in x/y/z

o  glxMoveiX: x y: y z: z in: aGLXWindowId
change the graphics position to a 3D point, as passed in x/y/z.
The arguments must be smallIntegers.

o  glxMovesX: x y: y z: z in: aGLXWindowId
change the graphics position to a 3D point, as passed in x/y/z.
The arguments must be smallIntegers.

o  glxRmv2: v in: aGLXWindowId
change the graphics position to a 2D point,
the relative distance is passed in vector v

o  glxRmv2X: x y: y in: aGLXWindowId
change the graphics position to a 2D point,
the relative distance is passed in x/y

o  glxRmv2iX: x y: y in: aGLXWindowId
change the graphics position to a 2D point,
the relative distance is passed in x/y.
The arguments must be smallIntegers.

o  glxRmv2sX: x y: y in: aGLXWindowId
change the graphics position to a 2D point,
the relative distance is passed in x/y.
The arguments must be smallIntegers.

o  glxRmv: v in: aGLXWindowId
change the graphics position to a 3D point,
the relative distance is passed in vector v

o  glxRmvX: x y: y z: z in: aGLXWindowId
change the graphics position to a 3D point,
the relative distance is passed in x/y/z

o  glxRmviX: x y: y z: z in: aGLXWindowId
change the graphics position to a 3D point,
the relative distance is passed in x/y/z.
The arguments must be smallIntegers.

o  glxRmvsX: x y: y z: z in: aGLXWindowId
change the graphics position to a 3D point,
the relative distance is passed in x/y/z.
The arguments must be smallIntegers.

initialization
o  initializeFor: aDisplayName

o  initializeScreenProperties
GL has a 'bug' (or feature ?)

lines
o  glxDeflinestyleN: n ls: ls in: aGLXWindowId
define a line style

o  glxDraw2: v in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passed in vector v.

o  glxDraw2X: x y: y in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passed in x/y.

o  glxDraw2iX: x y: y in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passed in x/y.

o  glxDraw2sX: x y: y in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passed in x/y.

o  glxDraw: v in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passed in vector v.

o  glxDrawX: x y: y z: z in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passed in x/y/z.
The arguments may be floats, fractions or smallIntegers

o  glxDrawiX: x y: y z: z in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passed in x/y/z.
The arguments must be smallIntegers.

o  glxDrawsX: x y: y z: z in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passed in x/y/z.
The arguments must be (16bit) smallIntegers.

o  glxLinewidth: n in: aGLXWindowId
set the linewidth

o  glxLinewidthf: n in: aGLXWindowId
set the linewidth

o  glxRdr2: v in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passing the relative distance in the vector v.

o  glxRdr2X: x y: y in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passing the relative distance in x/y.

o  glxRdr2iX: x y: y in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passing the relative distance in x/y.

o  glxRdr2sX: x y: y in: aGLXWindowId
draw a line from the current graphics position
to a new 2D position, passing the relative distance in x/y.

o  glxRdr: v in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passing the relative distance in the vector v.

o  glxRdrX: x y: y z: z in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passing the relative distance in x/y/z.

o  glxRdriX: x y: y z: z in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passing the relative distance in x/y/z.

o  glxRdrsX: x y: y z: z in: aGLXWindowId
draw a line from the current graphics position
to a new 3D position, passing the relative distance in x/y/z.

o  glxSetlinestyle: index in: aGLXWindowId
set the linestyle

materials & lights
o  glxLmbind: target index: index in: aGLXWindowId
select a material, light or lighting model.
target must be a symbol from: #material, #backMaterial,
#light0-light7 or #lightModel.

o  glxLmdef: what index: index np: np props: props in: aGLXWindowId
define a material, light source or lighting model;
what must be one of #material, #light or #lightModel.
props must be a FloatArray or a subclass of FloatArray

o  glxTevbind: target index: index in: aGLXWindowId
bind a texture environment; target must be 0
or the symbol #env0.

o  glxTevdef: index np: np props: props in: aGLXWindowId

o  glxTexDef2d: index nc: nc width: w height: h bits: image np: np props: props in: aGLXWindowId
define a 2D texture. index is the 'name' of the texture;
nc is the number of components (1-4) per pixel;
w/h define the size of the texture; bits is a byteArray containing the
long-word aligned pixel data; np is the number of props found in
the floatArray props. Props must be delimited by a 0.0 entry.

o  glxTexDef3d: index nc: nc width: w height: h depth: d bits: image np: np props: props in: aGLXWindowId
define a 3D texture. index is the 'name' of the texture;
nc is the number of components (1-4) per pixel;
w/h/d define the size of the texture; bits is a byteArray containing the
long-word aligned pixel data; np is the number of props found in
the floatArray props. Props must be delimited by a 0.0 entry.

o  glxTexbind: target index: index in: aGLXWindowId
bind a texture; target must be an integer or one
of the symbols #texture0, #textureDetail or #textureIdle.

matrix stack
o  glxGetMatrix: arrayOf16Floats in: aGLXWindowId
argument must be an array (a matrix) of 16 floats. The current matrix
will be stored into that.

o  glxLoadMatrix: arrayOf16Floats in: aGLXWindowId
argument must be an array(a matrix) of 16 floats. The current matrix
will be loaded from that.

o  glxMultMatrix: arrayOf16Floats in: aGLXWindowId
argument must be an array(a matrix) of 16 floats containing a
matrix to multiply into the current matrix.

o  glxPopmatrixIn: aGLXWindowId
pop transformation stack

o  glxPushmatrixIn: aGLXWindowId
push down transformation stack

misc
o  glxGconfigIn: aGLXWindowId
must be sent after RGBmode, doubleBuffer etc. to have these
changes really take effect. See GLX manual.
(Actually, it seems to be not allowed - I don't really know)

o  glxMmode: aSymbol in: aGLXWindowId
set matrix mode: #single, #viewing, #projection or #texture

o  glxNmode: aSymbol in: aGLXWindowId
set normalize mode: #auto, #normalize

o  glxRGBmodeIn: aGLXWindowId
set true color mode (no colormap)

objects
o  glxCallObject: obj in: aGLXWindowId
perform the commands of an object (macro).

o  glxCloseObjectIn: aGLXWindowId
end object defnition

o  glxDeleteObject: obj in: aGLXWindowId

o  glxGenObjectIn: aGLXWindowId
return a new (free & unused) object id for use
with makeObj

o  glxGetopenobjIn: aGLXWindowId
return the currently open objects id; -1 if none is open

o  glxIsobj: obj in: aGLXWindowId
return true, if obj is a valid object id

o  glxMakeObject: id in: aGLXWindowId
start object definition -
another name conflict

patches & surfaces
o  glxBeginCurveIn: aGLXWindowId
start a NURBS curve def - in real GL only

o  glxBeginSurfaceIn: aGLXWindowId
start a NURBS surface def - in real GL only

o  glxDefBasis: id mat: aMatrix in: aGLXWindowId
define the basis matrix for a patch or curve

o  glxEndCurveIn: aGLXWindowId
end a NURBS curve def - in real GL only

o  glxEndSurfaceIn: aGLXWindowId
end a NURBS surface def - in real GL only

o  glxNurbsSurfaceUKnotCount: uKnotCount uKnot: uKnot vKnotCount: vKnotCount vKnot: vKnot uOffset: uOffset vOffset: vOffset ctlArray: ctlArray uOrder: uOrder vOrder: vOrder type: type in: aGLXWindowId

o  glxPatchBasisU: u v: v in: aGLXWindowId
set the two basis matrices for a patch

o  glxPatchCurvesU: u v: v in: aGLXWindowId
set the number of curves to be drawn in each direction on a patch

o  glxPatchPrecisionU: u v: v in: aGLXWindowId
set the patch precision

o  glxPatchX: arrayOf16XFloats y: arrayOf16YFloats z: arrayOf16ZFloats in: aGLXWindowId
Draws a bicubic patch.
arguments must be arrays of 16 floats containing the patch

o  glxRpatchX: arrayOf16XFloats y: arrayOf16YFloats z: arrayOf16ZFloats w: arrayOf16WFloats in: aGLXWindowId
Draws a rational bicubic patch.
arguments must be arrays of 16 floats containing the patch

pixel copy
o  glxRectcopyX1: x1 y1: y1 x2: x2 y2: y2 newx: newx newy: newy in: aGLXWindowId
copy a rectangular area in the view.
For now, this is only supported with a true GL.
readsource specifies which plane/buffer is affected by this operation.

pixel reading
o  glxReadpixelsTo: dest in: aGLXWindowId
read pixels from the view.
Dest must be an array and gets pixel values assigned,
reading n pixels starting at the current x/y coordinate (pixel coordinates).
For now, pixel-reading is only supported with a true GL.
Caveat: the number of pixels is limited to 256.
In double buffer mode, the backBuffer is read.

o  glxReadsource: src in: aGLXWindowId
specify what is read with folowing readPixels requests.
For now, pixel-reading is only supported with a true GL

o  glxRectreadX1: x1 y1: y1 x2: x2 y2: y2 h: viewHeight to: dest in: aGLXWindowId
read pixels from a rectanglular area.
Dest must be an array and gets pixel values assigned,
reading n*m pixels.
For now, pixel-reading is only supported with a true GL.
Caveat: the number of pixels is limited to 256.
In double buffer mode, the backBuffer is read.

o  glxXColorToGLColor: pixel
only for VOGL: given a pixel as read from the view,
return the corresponding GL color

o  vglGetPixelX: x y: y in: aGLXWindowId
special for VGL

points
o  glxPnt2X: x y: y in: aGLXWindowId
plot a point in x, y, 0.

o  glxPnt2iX: x y: y in: aGLXWindowId
plot a point in x, y, 0.

o  glxPnt2sX: x y: y in: aGLXWindowId
plot a point in x, y, 0.

o  glxPntX: x y: y z: z in: aGLXWindowId
plot a point in x, y, z.

o  glxPntiX: x y: y z: z in: aGLXWindowId
plot a point in x, y, z.

o  glxPntsX: x y: y z: z in: aGLXWindowId
plot a point in x, y, z.

o  glxPntsize: n in: aGLXWindowId

o  glxPntsizef: n in: aGLXWindowId

polygons
o  glxBackface: b in: aGLXWindowId
enable/disable culling of backfacing polygons (suppress its drawing).
A polygon is backfacing if it's orientation in *screen* coords is clockwise

o  glxConcave: b in: aGLXWindowId
signal whether or not polygons are concave

o  glxFrontface: b in: aGLXWindowId
enable/disable culling of frontfacing polygons (suppress its drawing).
A polygon is frontfacing if it's orientation in *screen* coords is
anti-clockwise

o  glxPdr2X: x y: y in: aGLXWindowId
add another vertex to the polygon

o  glxPdr2iX: x y: y in: aGLXWindowId
add another vertex to the polygon

o  glxPdr2sX: x y: y in: aGLXWindowId
add another vertex to the polygon

o  glxPdrX: x y: y z: z in: aGLXWindowId
add another vertex to the polygon

o  glxPdriX: x y: y z: z in: aGLXWindowId
add another vertex to the polygon

o  glxPdrsX: x y: y z: z in: aGLXWindowId
add another vertex to the polygon

o  glxPmv2X: x y: y in: aGLXWindowId
set the start position of a polygon

o  glxPmv2iX: x y: y in: aGLXWindowId
set the start position of a polygon

o  glxPmv2sX: x y: y in: aGLXWindowId
set the start position of a polygon

o  glxPmvX: x y: y z: z in: aGLXWindowId
set the start position of a polygon

o  glxPmviX: x y: y z: z in: aGLXWindowId
set the start position of a polygon

o  glxPmvsX: x y: y z: z in: aGLXWindowId
set the start position of a polygon

o  glxPolymode: mode in: aGLXWindowId
Sets the polygon filling mode - only filled (1) or outlined (0)
are supported

o  glxRpdr2X: x y: y in: aGLXWindowId
add another relative vertex to the polygon

o  glxRpdr2iX: x y: y in: aGLXWindowId
add another relative vertex to the polygon

o  glxRpdr2sX: x y: y in: aGLXWindowId
add another relative vertex to the polygon

o  glxRpdrX: x y: y z: z in: aGLXWindowId
add another relative vertex to the polygon

o  glxRpdriX: x y: y z: z in: aGLXWindowId
add another relative vertex to the polygon

o  glxRpdrsX: x y: y z: z in: aGLXWindowId
add another relative vertex to the polygon

o  glxRpmv2X: x y: y in: aGLXWindowId
set the start position of a polygon

o  glxRpmv2iX: x y: y in: aGLXWindowId
set the start position of a polygon

o  glxRpmv2sX: x y: y in: aGLXWindowId
set the relative start position of a polygon

o  glxRpmvX: x y: y z: z in: aGLXWindowId
set the relative start position of a polygon

o  glxRpmviX: x y: y z: z in: aGLXWindowId
set the relative start position of a polygon

o  glxRpmvsX: x y: y z: z in: aGLXWindowId
set the relative start position of a polygon

queries
o  glVersion
return a string describing the GL version.
For informative use only; portable applications do not depend
on the returned string.

usage example(s):

     Display glVersion

o  glxGetplanesIn: aGLXWindowId
Returns the number if bit planes available on the device.

o  hasStereoExtension
return true, if this workstation supports stereo GL drawing.
Both the server must support it, and the feature must have been
enabled in the smalltalk system, for true to be returned.

usage example(s):

     Display hasStereoExtension

o  isOpenGL
return true, if this is an openGL (as opposed to a GL)

o  isTrueGL
return true, if this is a true GL (as opposed to a simulated VOGL).
Returns false for all openGL systems.

o  maxZValue
return the max. Z value (only valid if z-buffer is supported)

o  supportsDoubleBuffer
return true, if this gl workstation supports double buffering.
For portable applications, always combine this with a query
if the display supports GL drawing at all.

usage example(s):

     Display supportsDoubleBuffer

o  supportsGLDrawing
return true, if this device supports 3D GL drawing.

usage example(s):

     Display supportsGLDrawing

o  supportsLight
return true, if this gl workstation supports light sources
(i.e. if it's a real GL).
For portable applications, always combine this with a query
if the display supports GL drawing at all.

usage example(s):

     Display supportsLight

o  supportsRGB
return true, if this gl workstation supports rgb
(in addition to indexed) colors. Actually, we return true
for a real GL engine, false for the simulator here.
For portable applications, always combine this with a query
if the display supports GL drawing at all.

usage example(s):

     Display supportsRGB

o  supportsTextures
return true, if this gl workstation supports texture mapping
(i.e. if it's a real GL).
For portable applications, always combine this with a query
if the display supports GL drawing at all.

usage example(s):

     Display supportsTextures

o  supportsZBuffer
return true, if this gl workstation has z buffer support.
For portable applications, always combine this with a query
if the display supports GL drawing at all.

usage example(s):

     Display supportsZBuffer

rectangles
o  glxRectX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxRectfX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxRectfiX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxRectfsX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxRectiX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxRectsX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

spheres
o  glxSphDraw: arrayOf4Floats in: aGLXWindowId
argument must be an array(a matrix) of 4 floats containing the
sphere - in real GL only

o  glxSphDrawX: x y: y z: z radius: r in: aGLXWindowId
arguments must be convertable to floats - in real GL only

o  glxSphfreeIn: aGLXWindowId

o  glxSphgnpolysIn: aGLXWindowId

o  glxSphmode: attribute value: value in: aGLXWindowId

o  glxSphobj: objid in: aGLXWindowId

o  glxSphrotmatrix: mat in: aGLXWindowId

stereo extension
o  glxLeftbuffer: bool in: aGLXWindowId

o  glxMonobufferIn: aGLXWindowId

o  glxRightbuffer: bool in: aGLXWindowId

o  stereoExtensionBuffer: aBufferSymbol for: aWindowId
set the current stereo buffer; the argument may be one of:
#left -> STEREO_BUFFER_LEFT
#right -> STEREO_BUFFER_RIGHT

o  stereoExtensionMode: aModeSymbol height: h offset: o for: aWindowId
set the current stereo mode; the argument may be one of:
nil/false #off -> turn it off
#bottom -> STEREO_BOTTOM
#top -> STEREO_TOP

usage example(s):

     Display stereoExtensionMode:#top height:492 offset:532 for:(Display rootWindowId).
     (Delay forSeconds:10) wait.
     Display stereoExtensionMode:#off height:0 offset:0 for:(Display rootWindowId).

o  stereoExtensionModeIn: aWindowId
return the current stereo mode for some window

o  stereoExtensionVersion
return the stereo extensions version as an array consisting of
major and minor numbers.

usage example(s):

     Display stereoExtensionVersion

texture data transfer
o  glxT2d: v in: aGLXWindowId

o  glxT2f: v in: aGLXWindowId

o  glxT2i: v in: aGLXWindowId

o  glxT2s: v in: aGLXWindowId

o  glxT3d: v in: aGLXWindowId

o  glxT3f: v in: aGLXWindowId

o  glxT3i: v in: aGLXWindowId

o  glxT3s: v in: aGLXWindowId

o  glxT4d: v in: aGLXWindowId

o  glxT4f: v in: aGLXWindowId

o  glxT4i: v in: aGLXWindowId

o  glxT4s: v in: aGLXWindowId

transformations
o  glxRotate: angle axis: axis in: aGLXWindowId
rotate the current matrix around the axis given by the axis arg,
which must be one of the symbols: #x, #y or #z.
The angle is in degrees.

o  glxRotate: arrayOf3Floats in: aGLXWindowId
rotate current matrix, given a 3-element vector (or more).
The elements of the array are degrees.

o  glxRotateI: angle axis: axis in: aGLXWindowId
rotate the current matrix around the axis given by the axis arg,
which must be one of the symbols: #x, #y or #z.
The angle is an integer specifying tenths of a degree.

o  glxRotateIX: angle in: aGLXWindowId
rotate the current matrix on x axis.
The angle is an integer specifying tenths of a degree.

o  glxRotateIX: xAngle y: yAngle z: zAngle in: aGLXWindowId
rotate the current matrix on all axes, given individual x, y and z values.
The values are smallIntegers specifying tenths of a degree.

o  glxRotateIY: angle in: aGLXWindowId
rotate the current matrix on x axis.
The angle is an integer specifying tenths of a degree.

o  glxRotateIZ: angle in: aGLXWindowId
rotate the current matrix on x axis.
The angle is an integer specifying tenths of a degree.

o  glxRotateX: angle in: aGLXWindowId
rotate the current matrix on x axis.
The angle is in degrees.

o  glxRotateX: xAngle y: yAngle z: zAngle in: aGLXWindowId
rotate the current matrix on all axes, given individual x, y and z values.
The values are in degrees

o  glxRotateY: angle in: aGLXWindowId
rotate the current matrix on y axis.
The angle is in degrees.

o  glxRotateZ: angle in: aGLXWindowId
rotate the current matrix on z axis.
The angle is in degrees.

o  glxScale: arrayOf3Floats in: aGLXWindowId
scale current matrix, given a 3-element vector

o  glxScaleX: x in: aGLXWindowId
scale in x direction

o  glxScaleX: x y: y z: z in: aGLXWindowId
scale & mirror current matrix, given individual x, y and z values

o  glxScaleY: y in: aGLXWindowId
scale in y direction

o  glxScaleZ: z in: aGLXWindowId
scale in z direction

o  glxTranslate: arrayOf3Floats in: aGLXWindowId
translate current matrix, given a 3-element vector

o  glxTranslateX: x in: aGLXWindowId
translate current matrix on X axis

o  glxTranslateX: x y: y z: z in: aGLXWindowId
translate current matrix, given individual x, y and z values

o  glxTranslateY: y in: aGLXWindowId
translate current matrix on Y axis

o  glxTranslateZ: z in: aGLXWindowId
translate current matrix on Z axis

unspecified rest
o  glxAcbufOp: op value: value in: aGLXWindowId

o  glxAcsizePlanes: planes in: aGLXWindowId

o  glxAfunctionRef: ref func: func in: aGLXWindowId

o  glxBbox2Xmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxBbox2iXmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxBbox2sXmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxBeginTrimIn: aGLXWindowId

o  glxBlankscreen: b in: aGLXWindowId

o  glxBlanktime: count in: aGLXWindowId

o  glxBlendcolorRed: red green: green blue: blue alpha: alpha in: aGLXWindowId

o  glxBlendfunctionSfactr: sfactr dfactr: dfactr in: aGLXWindowId

o  glxBlinkRate: rate i: i red: red green: green blue: blue in: aGLXWindowId

o  glxBlkqreadData: data n: n in: aGLXWindowId

o  glxC3f: v in: aGLXWindowId

o  glxC3i: v in: aGLXWindowId

o  glxC3s: v in: aGLXWindowId

o  glxC4f: v in: aGLXWindowId

o  glxC4i: v in: aGLXWindowId

o  glxC4s: v in: aGLXWindowId

o  glxClearhitcodeIn: aGLXWindowId

o  glxClipplaneIndex: index mode: mode params: params in: aGLXWindowId

o  glxCmodeIn: aGLXWindowId

o  glxColorfIndex: index in: aGLXWindowId

o  glxCuroriginN: n xorigin: xorigin yorigin: yorigin in: aGLXWindowId

o  glxCursoffIn: aGLXWindowId

o  glxCursonIn: aGLXWindowId

o  glxCurstype: type in: aGLXWindowId

o  glxCyclemapDuration: duration map: map nxtmap: nxtmap in: aGLXWindowId

o  glxDefpatternN: n size: size mask: mask in: aGLXWindowId

o  glxDeltag: t in: aGLXWindowId

o  glxDepthcueMode: mode in: aGLXWindowId

o  glxDitherMode: mode in: aGLXWindowId

o  glxDopup: pup in: aGLXWindowId

o  glxDrawmode: mode in: aGLXWindowId

o  glxEditobj: obj in: aGLXWindowId

o  glxEndTrimIn: aGLXWindowId

o  glxEndfullscrnIn: aGLXWindowId

o  glxEndpupmodeIn: aGLXWindowId

o  glxFinishIn: aGLXWindowId

o  glxFont: fntnum in: aGLXWindowId

o  glxForegroundIn: aGLXWindowId

o  glxFreepup: pup in: aGLXWindowId

o  glxFudgeXfudge: xfudge yfudge: yfudge in: aGLXWindowId

o  glxFullscrnIn: aGLXWindowId

o  glxGbeginIn: aGLXWindowId

o  glxGentagIn: aGLXWindowId

o  glxGetbackfaceIn: aGLXWindowId

o  glxGetbufferIn: aGLXWindowId

o  glxGetbutton: num in: aGLXWindowId

o  glxGetcmmodeIn: aGLXWindowId

o  glxGetcolorIn: aGLXWindowId
return the current drawing color

o  glxGetdcmIn: aGLXWindowId

o  glxGetdescenderIn: aGLXWindowId

o  glxGetdisplaymodeIn: aGLXWindowId

o  glxGetdrawmodeIn: aGLXWindowId

o  glxGetfontIn: aGLXWindowId

o  glxGetgconfigBuffer: buffer in: aGLXWindowId

o  glxGetgdescInquiry: inquiry in: aGLXWindowId

o  glxGetheightIn: aGLXWindowId

o  glxGethitcodeIn: aGLXWindowId

o  glxGetlsbackupIn: aGLXWindowId

o  glxGetlsrepeatIn: aGLXWindowId

o  glxGetlstyleIn: aGLXWindowId

o  glxGetlwidthIn: aGLXWindowId

o  glxGetmapIn: aGLXWindowId

o  glxGetmmodeIn: aGLXWindowId

o  glxGetmonitorIn: aGLXWindowId

o  glxGetmultisampleIn: aGLXWindowId

o  glxGetothermonitorIn: aGLXWindowId

o  glxGetpatternIn: aGLXWindowId

o  glxGetresetlsIn: aGLXWindowId

o  glxGetshadeIn: aGLXWindowId

o  glxGetsmIn: aGLXWindowId

o  glxGetvaluator: dev in: aGLXWindowId

o  glxGetvideo: reg in: aGLXWindowId

o  glxGetwritemaskIn: aGLXWindowId

o  glxGetwscrnIn: aGLXWindowId

o  glxGetzbufferIn: aGLXWindowId

o  glxGexitIn: aGLXWindowId

o  glxGflushIn: aGLXWindowId

o  glxGinitIn: aGLXWindowId

o  glxGlcompatMode: mode value: value in: aGLXWindowId

o  glxGresetIn: aGLXWindowId

o  glxGsyncIn: aGLXWindowId

o  glxIconsizeX: x y: y in: aGLXWindowId

o  glxImakebackgroundIn: aGLXWindowId

o  glxInitnamesIn: aGLXWindowId

o  glxIsqueued: dev in: aGLXWindowId

o  glxIstag: t in: aGLXWindowId

o  glxKeepaspectX: x y: y in: aGLXWindowId

o  glxLinesmoothMode: mode in: aGLXWindowId

o  glxLmcolorMode: mode in: aGLXWindowId

o  glxLoadname: name in: aGLXWindowId

o  glxLogicop: opcode in: aGLXWindowId

o  glxLsbackup: b in: aGLXWindowId

o  glxLsetdepthNear: znear far: zfar in: aGLXWindowId

o  glxLshaderangeLowin: lowin hiwin: hiwin znear: znear zfar: zfar in: aGLXWindowId

o  glxLsrepeatFactor: factor in: aGLXWindowId

o  glxMaketag: t in: aGLXWindowId

o  glxMaxsizeX: x y: y in: aGLXWindowId

o  glxMinsizeX: x y: y in: aGLXWindowId

o  glxMsalphaMode: mode in: aGLXWindowId

o  glxMsmask: mask inverse: inverse in: aGLXWindowId

o  glxMspattern: pattern in: aGLXWindowId

o  glxMssizeSamples: samples zsize: zsize ssize: ssize in: aGLXWindowId

o  glxMswapbuffers: fbuf in: aGLXWindowId

o  glxMultimapIn: aGLXWindowId

o  glxMultisample: bool in: aGLXWindowId

o  glxNewpupIn: aGLXWindowId

o  glxNewtag: newtg oldtg: oldtg offst: offst in: aGLXWindowId

o  glxNoborderIn: aGLXWindowId

o  glxNoise: v delta: delta in: aGLXWindowId

o  glxNoportIn: aGLXWindowId

o  glxNurbscurveKnotCount: knotCount knotList: knotList offset: offset ctlArray: ctlArray order: order type: type in: aGLXWindowId

o  glxObjdeleteTag1: tag1 tag2: tag2 in: aGLXWindowId

o  glxObjinsert: t in: aGLXWindowId

o  glxObjreplace: t in: aGLXWindowId

o  glxOnemapIn: aGLXWindowId

o  glxPagecolor: pcolor in: aGLXWindowId

o  glxPassthroughToken: token in: aGLXWindowId

o  glxPclosIn: aGLXWindowId

o  glxPicksizeX: x y: y in: aGLXWindowId

o  glxPixmode: mode value: value in: aGLXWindowId

o  glxPntsmoothMode: mode in: aGLXWindowId

o  glxPolysmoothMode: mode in: aGLXWindowId

o  glxPopnameIn: aGLXWindowId

o  glxPrefpositionX1: x1 x2: x2 y1: y1 y2: y2 in: aGLXWindowId

o  glxPrefsizeX: x y: y in: aGLXWindowId

o  glxPupmodeIn: aGLXWindowId

o  glxPushname: name In: aGLXWindowId

o  glxQdevice: dev in: aGLXWindowId

o  glxQenterDev: dev val: val in: aGLXWindowId

o  glxQgetfdIn: aGLXWindowId

o  glxQreadIn: aGLXWindowId

o  glxQresetIn: aGLXWindowId

o  glxQtestIn: aGLXWindowId

o  glxRGBcursorIndex: index red: red green: green blue: blue redm: redm greenm: greenm bluem: bluem in: aGLXWindowId

o  glxRGBwritemaskRed: red green: green blue: blue in: aGLXWindowId

o  glxRectzoomX: xfactor y: yfactor in: aGLXWindowId

o  glxResetls: b in: aGLXWindowId

o  glxRingbellIn: aGLXWindowId

o  glxSboxX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxSboxfX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxSboxfiX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxSboxfsX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxSboxiX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxSboxsX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxSclearSval: sval in: aGLXWindowId

o  glxScrbox: arg in: aGLXWindowId

o  glxScreenspaceIn: aGLXWindowId

o  glxScrmaskLeft: left right: right bottom: bottom top: top in: aGLXWindowId

o  glxScrnattach: gsnr in: aGLXWindowId

o  glxScrnselect: gsnr in: aGLXWindowId

o  glxSetcursorIndex: index color: color wtn: wtn in: aGLXWindowId

o  glxSetdblightsMask: mask in: aGLXWindowId

o  glxSetdepthNear: znear far: zfar in: aGLXWindowId

o  glxSetmap: mapnum in: aGLXWindowId

o  glxSetmonitor: mtype in: aGLXWindowId

o  glxSetnurbsproperty: property value: value in: aGLXWindowId

o  glxSetpattern: index in: aGLXWindowId

o  glxSetpup: pup entry: entry mode: mode in: aGLXWindowId

o  glxSetvaluator: v init: init vmin: vmin vmax: vmax in: aGLXWindowId

o  glxSetvideo: reg value: value in: aGLXWindowId

o  glxShademodel: model in: aGLXWindowId

o  glxShaderangeLowin: lowin hiwin: hiwin z1: z1 z2: z2 in: aGLXWindowId

o  glxSmoothline: mode in: aGLXWindowId

o  glxStencilEnable: enable ref: ref func: func mask: mask fail: fail pass: pass zpass: zpass in: aGLXWindowId

o  glxStensize: planes in: aGLXWindowId

o  glxStepunitX: x y: y in: aGLXWindowId

o  glxSubpixel: b in: aGLXWindowId

o  glxSwapinterval: i in: aGLXWindowId

o  glxSwaptmeshIn: aGLXWindowId

o  glxSwinopen: parent in: aGLXWindowId

o  glxSwritemask: mask in: aGLXWindowId

o  glxTextinitIn: aGLXWindowId

o  glxTextportLeft: left right: right bottom: bottom top: top in: aGLXWindowId

o  glxTieB: b v1: v1 v2: v2 in: aGLXWindowId

o  glxTlutbind: target index: index in: aGLXWindowId

o  glxTpoffIn: aGLXWindowId

o  glxTponIn: aGLXWindowId

o  glxUnqdevice: dev in: aGLXWindowId

o  glxWmpack: pack in: aGLXWindowId

o  glxWritemask: wtm in: aGLXWindowId

o  glxXfpt2X: x y: y in: aGLXWindowId

o  glxXfpt2iX: x y: y in: aGLXWindowId

o  glxXfpt2sX: x y: y in: aGLXWindowId

o  glxXfpt4X: x y: y z: z w: w in: aGLXWindowId

o  glxXfpt4iX: x y: y z: z w: w in: aGLXWindowId

o  glxXfpt4sX: x y: y z: z w: w in: aGLXWindowId

o  glxXfptX: x y: y z: z in: aGLXWindowId

o  glxXfptiX: x y: y z: z in: aGLXWindowId

o  glxXfptsX: x y: y z: z in: aGLXWindowId

vertex data transfer
o  glxN3f: arrayOf3Floats in: aGLXWindowId
argument must be an array of 3 floats containing the
current vertex normal - in real GL only

o  glxV2d: v in: aGLXWindowId
pass a vertex; v must be a vector with 2 doubles; z is taken as 0

o  glxV2f: v in: aGLXWindowId
pass a vertex; v must be a vector with 2 floats; z is taken as 0

o  glxV2fX: x y: y in: aGLXWindowId
pass a vertex from individual x and y values; z is taken as 0.0

o  glxV2i: v in: aGLXWindowId
pass a vertex; v must be a vector with 2 longs; z is taken as 0

o  glxV2s: v in: aGLXWindowId
pass a vertex; v must be a vector with 2 shorts; z is taken as 0

o  glxV3d: v in: aGLXWindowId
pass a vertex; v must be a 3-element double-vector

o  glxV3f: v in: aGLXWindowId
pass a vertex; v must be a 3-element float-vector

o  glxV3fX: x y: y z: z in: aGLXWindowId
pass a vector from individual x, y and z (float) values

o  glxV3i: v in: aGLXWindowId
pass a vertex; v must be a vector with 3 longs

o  glxV3s: v in: aGLXWindowId
pass a vertex; v must be a vector with 3 shorts

o  glxV4d: v in: aGLXWindowId
pass a vertex; v must be a 4-element double-vector,
containing x, y, z and w

o  glxV4f: v in: aGLXWindowId
pass a vertex; v must be a 4-element float-vector,
containing x, y, z and w

o  glxV4i: v in: aGLXWindowId
pass a vertex; v must be a 4-element int-vector,
containing x, y, z and w

o  glxV4s: v in: aGLXWindowId
pass a vertex; v must be a 4-element short-vector,
containing x, y, z and w

o  glxVOriginIn: aGLXWindowId
pass a 0.0/0.0/0.0 vector.
This is the same as v3f:#(0.0 0.0 0.0), but, since its so
common, this somewhat faster method has been provided

o  glxVUnitXIn: aGLXWindowId
pass a 1.0/0.0/0.0 vector.
This is the same as v3f:#(1.0 0.0 0.0), but, since its so
common, this somewhat faster method has been provided

o  glxVUnitYIn: aGLXWindowId
pass a 0.0/1.0/0.0 vector.
This is the same as v3f:#(0.0 1.0 0.0), but, since its so
common, this somewhat faster method has been provided

o  glxVUnitZIn: aGLXWindowId
pass a 0.0/0.0/1.0 vector.
This is the same as v3f:#(0.0 0.0 1.0), but, since its so
common, this somewhat faster method has been provided

video and planes
o  glxOverlayPlanes: planes in: aGLXWindowId

o  glxStereobufferIn: aGLXWindowId

o  glxUnderlay: planes in: aGLXWindowId

o  glxVideocmd: cmd in: aGLXWindowId

viewing
o  glxLookatVx: vx vy: vy vz: vz px: px py: py pz: pz twist: twist in: aGLXWindowId
define viewing transformation

o  glxOrtho2Left: left right: right bottom: bottom top: top in: aGLXWindowId
define 2D orthogonal projection

o  glxOrthoLeft: left right: right bottom: bottom top: top near: znear far: zfar in: aGLXWindowId
define orthogonal projection

o  glxPerspectiveFovy: fovy aspect: aspect near: znear far: zfar in: aGLXWindowId
define perspective projection

o  glxPolarviewDist: dist azim: azim inc: inc twist: twist in: aGLXWindowId

o  glxPopviewportIn: aGLXWindowId
pops the top viewport off the viewport stack

o  glxPushviewportIn: aGLXWindowId
pushes the current viewport on the viewport stack

o  glxReshapeViewPortIn: aGLXWindowId

o  glxViewportLeft: left right: right bottom: bottom top: top in: aGLXWindowId

o  glxWindowLeft: left right: right bottom: bottom top: top near: znear far: zfar in: aGLXWindowId
this one was added independently by JEFF - kept for his programs ...

o  glxWindowLeft: left right: right top: top bottom: bottom near: znear far: zfar in: aGLXWindowId
define perspective viewing pyramid

window control
o  glxResizedView: aGLXWindowId width: width height: height
pass down resize info to the GL - this adjusts the viewport.
This only works with VGL or openGL

o  glxWinclose: gwid in: aGLXWindowId

o  glxWinconstraintsIn: aGLXWindowId

o  glxWindepth: gwid in: aGLXWindowId

o  glxWingetIn: aGLXWindowId

o  glxWinmoveX: x y: y in: aGLXWindowId

o  glxWinpopIn: aGLXWindowId

o  glxWinpositionX1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId

o  glxWinpushIn: aGLXWindowId

o  glxWinset: gwid in: aGLXWindowId

window creation
o  createGLXWindowFor: aView left: xpos top: ypos width: wwidth height: wheight type: glxType

o  unlinkGLXView: aGLXWindowId
remove X/GLX link

zbuffer
o  glxZbsize: planes in: aGLXWindowId

o  glxZbuffer: aBoolean in: aGLXWindowId
enable/disable z-buffer operation

o  glxZdraw: b in: aGLXWindowId
enable/disable drawing into the z-buffer

o  glxZfunction: func in: aGLXWindowId
set the z-buffer comparison function.
func may be either the numeric value or a symbol (preferred)

o  glxZsource: src in: aGLXWindowId

o  glxZwritemask: mask in: aGLXWindowId



ST/X 7.2.0.0; WebServer 1.670 at bd0aa1f87cdd.unknown:8081; Thu, 28 Mar 2024 10:10:46 GMT