Intro glA glB glC glD glE glF glG glH glI glL glM glN glO glP glR glS glT glV glu glut

Intro.
Les procédures Tcl sont définies de manière à être les plus proches possible des fonctions OpenGL associées. Beaucoup des fonctions C OpenGL prennent en argument des nombres et n'ont pas de valeur de retour :
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
L'équivalent en Tcl est simple :
glClearColor 0.0 0.0 0.0 0.0
glClear [expr $GL::GL_COLOR_BUFFER_BIT | $GL::GL_DEPTH_BUFFER_BIT]
Pour les fonctions qui prennent en argument un buffer en lecture ou en écriture, il y a plusieurs possibilités. Les buffers peuvent être transmis en ascii (défaut) ou en binaire et les buffers accédés en lecture peuvent être transmis par valeur (défaut) ou par référence. Les buffers accédés en écriture sont toujours transmis par référence. Par exemple, le code C suivant...
GLbyte lst[] = {5, 7, 9};
GLint vp[4]; 
glCallLists(3, GL_BYTE, lst);
glGetIntegerv(GL_VIEWPORT, vp);
printf("viewport : %d %d %d %d\n", vp[0], vp[1], vp[2], vp[4]);
...devient en Tcl :
set lst {5 7 9}
glCallLists 3 $GL::GL_BYTE $lst
glGetIntegerv $GL::GL_VIEWPORT vp
puts "viewport : $vp"
Les deux premières lignes peuvent être fusionnées car le buffer est transmis par valeur :
glCallLists 3 $GL::GL_BYTE {5 7 9}
Il est plus efficace et parfois plus simple de traiter les arguments par référence ou en binaire plutôt qu'en ascii :
# tex is 64 * 64 * 3 bytes binary string read from file
glTexImage2D -binary -variable $GL::GL_TEXTURE_2D 0 3 64 64 0\
            $GL::GL_RGB $GL::GL_UNSIGNED_BYTE tex
Afin d'optimiser un peu les performances et d'éviter de taper trop de code, il est possible de changer les switches par défaut d'un widget en particulier :
% tom .gl
.gl	
% .gl params
-ascii -value
% .gl params -binary
% .gl params
-binary -value
% .gl p -a -var
% .gl p
-ascii -variable
glA...
glAccum op value
glAlphaFunc func ref
glB...
glBegin mode
glBitmap ?switches? width height xorig yorig xmove ymove bitmap
glBlendFunc sfactor dfactor
glC...
glCallList list
glCallLists ?switches? n type lists
glClear mask
glClearAccum red green blue alpha
glClearColor red green blue alpha
glClearDepth depth
glClearIndex c
glClearStencil s
glClipPlane plane equation
glColor3[b d f i s ub ui us] red green blue
glColor3[b d f i s ub ui us]v ?switches? v
glColor4[b d f i s ub ui us] red green blue alpha
glColor4[b d f i s ub ui us]v ?switches? v
glColorMask red green blue alpha
glColorMaterial face mode
glCopyPixels x y width height type
glCullFace mode
glD...
glDeleteLists list range
glDepthFunc func
glDepthMask flag
glDisable cap
glDrawBuffer mode
glDrawPixels ?switches? width height format type pixels
glE...
glEdgeFlag flag
glEnable cap
glEnd
glEndList
glEvalCoord1[d f] u
glEvalCoord2[d f] u v
glEvalMesh1 mode i1 i2
glEvalMesh2 mode i1 i2 j1 j2
glEvalPoint1 i
glEvalPoint2 i1 i2
glF...
glFinish
glFlush
glFog[f i]v ?switches? pname params
glFrontFace mode
glFrustum left right bottom top near far
glG...
glGenLists range
glGetBooleanv ?switches? pnames params
glGetDoublev ?switches? pnames params
glGetError
glGetFloatv ?switches? pnames params
glGetIntegerv ?switches? pnames params
glGetMaterial[f i]v ?switches? face pname params
glGetString name
glH...
glHint target mode
glI...
glInitNames
glIsEnabled cap
glIsList list
glL...
glLight[f i]v ?switches? light pname params
glLightModel[f i]v ?switches? pnames params
glLineStipple factor pattern
glLineWidth width
glLoadIdentity
glLoadMatrix[d f] ?switches? matrix
glLoadName name
glM...
glMap1[d f] ?switches? target u1 u2 stride order points
glMap2[d f] ?switches? target u1 u2 ustride uorder v1 v2 vstride vorder points
glMapGrid1[d f] un u1 u2
glMapGrid2[d f] un u1 u2 v1 v2
glMaterial[f i]v ?switches? face pnames params
glMatrixMode mode
glMultMatrix[d f] ?switches? matrix
glN...
glNewList list mode
glNormal3[b d f i s] nx ny nz
glNormal3[b d f i s]v ?switches? v
glO...
glOrtho left right bottom top near far
glP...
glPixelStore[f i] pname param
glPixelTransfer[f i] pname param
glPixelZoom xfactor yfactor
glPointSize size
glPolygonMode face mode
glPopAttrib
glPopMatrix
glPopName
glPushAttrib
glPushMatrix
glPushName name
glR...
glRasterPos2[d f i s] x y
glRasterPos2[d f i s]v ?switches? x y
glRasterPos3[d f i s] x y z
glRasterPos3[d f i s]v ?switches? x y z
glRasterPos4[d f i s] x y z w
glRasterPos4[d f i s]v ?switches? x y z w
glReadBuffer mode
glReadPixels ?switches? x y width height format type pixels
glRect[d f i s] x1 y1 x2 y2
glRect[d f i s]v ?switches? v1 v2
glRenderMode mode
glRotate[d f] angle x y z
glS...
glScale[d f] angle x y z
glScissor x y width height
glSelectBuffer size buffer
glShadeModel mode
glStencilFunc func ref mask
glStencilMask mask
glStencilOp fail zfail zpass
glT...
glTexCoord2[d f i] s t
glTexCoord3[d f i] s t r
glTexCoord4[d f i] s t r q
glTexEnv[f i] target pname param
glTexEnv[f i]v ?switches? target pname params
glTexImage1D ?switches? target level components width border format type pixels
glTexImage2D ?switches? target level components width height border format type pixels
glTexParameter[f i] target pname param
glTranslate[d f] x y z
glV...
glVertex2[d f i] x y
glVertex2[d f i]v ?switches? v
glVertex3[d f i] x y z
glVertex3[d f i]v ?switches? v
glViewport x y width height

glu...
gluBeginCurve nobj
gluBeginSurface nobj
gluBeginTrim nobj
gluDeleteNurbsRenderer nobj
gluDeleteQuadric qobj
gluEndCurve nobj
gluEndSurface nobj
gluEndTrim nobj
gluLookAt eyex eyey eyez centerx centery centerz upx upy ypz
gluNewNurbsRenderer
gluNewQuadric
gluNurbsProperty
gluNurbsSurface nobj nuknot uknot nvknot vknot ustride vstride ctrl uorder vorder type
gluOrtho2D left right bottom top
gluPerspective foyy aspect zNear zFar
gluPickMatrix x y width height viewport
gluQuadricTexture qobj textureCoords
gluSphere qobj radius slices stacks

glut...
glutSolidCone
glutSolidCube
glutSolidDodecahedron
glutSolidSphere
glutSolidTeapot
glutWireCone
glutWireCube
glutWireDodecahedron
glutWireSphere
glutWireTeapot