(defpackage :gl (:use :common-lisp :xlib) (:import-from :glx "*CURRENT-CONTEXT*" "CONTEXT" "CONTEXT-P" "CONTEXT-DISPLAY" "CONTEXT-TAG" "CONTEXT-RBUF" "CONTEXT-INDEX" ) (:import-from :xlib "DATA" "WITH-BUFFER-REQUEST" "WITH-BUFFER-REQUEST-AND-REPLY" "CARD32-GET" "SEQUENCE-GET" "WITH-DISPLAY" "DISPLAY-FORCE-OUTPUT" "INT8" "INT16" "INT32" "INTEGER" "CARD8" "CARD16" "CARD32" "ASET-CARD8" "ASET-CARD16" "ASET-CARD32" "ASET-INT8" "ASET-INT16" "ASET-INT32" "DECLARE-BUFFUN" ;; Types "ARRAY-INDEX" "BUFFER-BYTES" ) (:export "GET-STRING" ;; Rendering commands (alphabetical order) "ACCUM" "ACTIVE-TEXTURE-ARB" "ALPHA-FUNC" "BEGIN" "BIND-TEXTURE" "BLEND-COLOR" "BLEND-EQUOTION" "BLEND-FUNC" "CALL-LIST" "CLEAR" "CLEAR-ACCUM" "CLEAR-COLOR" "CLEAR-DEPTH" "CLEAR-INDEX" "CLEAR-STENCIL" "CLIP-PLANE" "COLOR-3B" "COLOR-3D" "COLOR-3F" "COLOR-3I" "COLOR-3S" "COLOR-3UB" "COLOR-3UI" "COLOR-3US" "COLOR-4B" "COLOR-4D" "COLOR-4F" "COLOR-4I" "COLOR-4S" "COLOR-4UB" "COLOR-4UI" "COLOR-4US" "COLOR-MASK" "COLOR-MATERIAL" "CONVOLUTION-PARAMETER-F" "CONVOLUTION-PARAMETER-I" "COPY-COLOR-SUB-TABLE" "COPY-COLOR-TABLE" "COPY-CONVOLUTION-FILTER-ID" "COPY-CONVOLUTION-FILTER-2D" "COPY-PIXELS" "COPY-TEX-IMAGE-1D" "COPY-TEX-IMAGE-2D" "COPY-TEX-SUB-IMAGE-1D" "COPY-TEX-SUB-IMAGE-2D" "COPY-TEX-SUB-IMAGE-3D" "CULL-FACE" "DEPTH-FUNC" "DEPTH-MASK" "DEPTH-RANGE" "DRAW-BUFFER" "EDGE-FLAG-V" "END" "EVAL-COORD-1D" "EVAL-COORD-1F" "EVAL-COORD-2D" "EVAL-COORD-2F" "EVAL-MESH-1" "EVAL-MESH-2" "EVAL-POINT-1" "EVAL-POINT-2" "FOG-F" "FOG-I" "FRONT-FACE" "FRUSTUM" "HINT" "HISTOGRAM" "INDEX-MASK" "INDEX-D" "INDEX-F" "INDEX-I" "INDEX-S" "INDEX-UB" "INIT-NAMES" "LIGHT-MODEL-F" "LIGHT-MODEL-I" "LIGHT-F" "LIGHT-FV" "LIGHT-I" "LIGHT-IV" "LINE-STIPPLE" "LINE-WIDTH" "LIST-BASE" "LOAD-IDENTITY" "LOAD-NAME" "LOGIC-OP" "MAP-GRID-1D" "MAP-GRID-1F" "MAP-GRID-2D" "MAP-GRID-2F" "MATERIAL-F" "MATERIAL-FV" "MATERIAL-I" "MATERIAL-IV" "MATRIX-MODE" "MINMAX" "MULTI-TEX-COORD-1D-ARB" "MULTI-TEX-COORD-1F-ARB" "MULTI-TEX-COORD-1I-ARB" "MULTI-TEX-COORD-1S-ARB" "MULTI-TEX-COORD-2D-ARB" "MULTI-TEX-COORD-2F-ARB" "MULTI-TEX-COORD-2I-ARB" "MULTI-TEX-COORD-2S-ARB" "MULTI-TEX-COORD-3D-ARB" "MULTI-TEX-COORD-3F-ARB" "MULTI-TEX-COORD-3I-ARB" "MULTI-TEX-COORD-3S-ARB" "MULTI-TEX-COORD-4D-ARB" "MULTI-TEX-COORD-4F-ARB" "MULTI-TEX-COORD-4I-ARB" "MULTI-TEX-COORD-4S-ARB" "NORMAL-3B" "NORMAL-3D" "NORMAL-3F" "NORMAL-3I" "NORMAL-3S" "ORTHO" "PASS-THROUGH" "PIXEL-TRANSFER-F" "PIXEL-TRANSFER-I" "PIXEL-ZOOM" "POINT-SIZE" "POLYGON-MODE" "POLYGON-OFFSET" "POP-ATTRIB" "POP-MATRIX" "POP-NAME" "PUSH-ATTRIB" "PUSH-MATRIX" "PUSH-NAME" "RASTER-POS-2D" "RASTER-POS-2F" "RASTER-POS-2I" "RASTER-POS-2S" "RASTER-POS-3D" "RASTER-POS-3F" "RASTER-POS-3I" "RASTER-POS-3S" "RASTER-POS-4D" "RASTER-POS-4F" "RASTER-POS-4I" "RASTER-POS-4S" "READ-BUFFER" "RECT-D" "RECT-F" "RECT-I" "RECT-S" "RESET-HISTOGRAM" "RESET-MINMAX" "ROTATE-D" "ROTATE-F" "SCALE-D" "SCALE-F" "SCISSOR" "SHADE-MODEL" "STENCIL-FUNC" "STENCIL-MASK" "STENCIL-OP" "TEX-ENV-F" "TEX-ENV-I" "TEX-GEN-D" "TEX-GEN-F" "TEX-GEN-I" "TEX-PARAMETER-F" "TEX-PARAMETER-I" "TRANSLATE-D" "TRANSLATE-F" "VERTEX-2D" "VERTEX-2F" "VERTEX-2I" "VERTEX-2S" "VERTEX-3D" "VERTEX-3F" "VERTEX-3I" "VERTEX-3S" "VERTEX-4D" "VERTEX-4F" "VERTEX-4I" "VERTEX-4S" "VIEWPORT" ;; * Where did this come from? ;;"NO-FLOATS" ;; Non-rendering commands "NEW-LIST" "END-LIST" "GEN-LISTS" "ENABLE" "DISABLE" "FLUSH" "FINISH" ;; Constants ;; Boolean "+FALSE+" "+TRUE+" ;; Types "+BYTE+" "+UNSIGNED-BYTE+" "+SHORT+" "+UNSIGNED-SHORT+" "+INT+" "+UNSIGNED-INT+" "+FLOAT+" "+DOUBLE+" "+2-BYTES+" "+3-BYTES+" "+4-BYTES+" ;; Primitives "+POINTS+" "+LINES+" "+LINE-LOOP+" "+LINE-STRIP+" "+TRIANGLES+" "+TRIANGLE-STRIP+" "+triangle-fan+" "+QUADS+" "+QUAD-STRIP+" "+POLYGON+" ;; Arrays "+VERTEX-ARRAY+" "+NORMAL-ARRAY+" "+COLOR-ARRAY+" "+INDEX-ARRAY+" "+TEXTURE-COORD-ARRAY+" "+EDGE-FLAG-ARRAY+" "+VERTEX-ARRAY-SIZE+" "+VERTEX-ARRAY-TYPE+" "+VERTEX-ARRAY-STRIDE+" "+NORMAL-ARRAY-TYPE+" "+NORMAL-ARRAY-STRIDE+" "+COLOR-ARRAY-SIZE+" "+COLOR-ARRAY-TYPE+" "+COLOR-ARRAY-STRIDE+" "+INDEX-ARRAY-TYPE+" "+INDEX-ARRAY-STRIDE+" "+TEXTURE-COORD-ARRAY-SIZE+" "+TEXTURE-COORD-ARRAY-TYPE+" "+TEXTURE-COORD-ARRAY-STRIDE+" "+EDGE-FLAG-ARRAY-STRIDE+" "+VERTEX-ARRAY-POINTER+" "+NORMAL-ARRAY-POINTER+" "+COLOR-ARRAY-POINTER+" "+INDEX-ARRAY-POINTER+" "+TEXTURE-COORD-ARRAY-POINTER+" "+EDGE-FLAG-ARRAY-POINTER+" ;; Array formats "+V2F+" "+V3F+" "+C4UB-V2F+" "+C4UB-V3F+" "+C3F-V3F+" "+N3F-V3F+" "+C4F-N3F-V3F+" "+T2F-V3F+" "+T4F-V4F+" "+T2F-C4UB-V3F+" "+T2F-C3F-V3F+" "+T2F-N3F-V3F+" "+T2F-C4F-N3F-V3F+" "+T4F-C4F-N3F-V4F+" ;; Matrices "+MATRIX-MODE+" "+MODELVIEW+" "+PROJECTION+" "+TEXTURE+" ;; Points "+POINT-SMOOTH+" "+POINT-SIZE+" "+POINT-SIZE-GRANULARITY+" "+POINT-SIZE-RANGE+" ;; Lines "+LINE-SMOOTH+" "+LINE-STIPPLE+" "+LINE-STIPPLE-PATTERN+" "+LINE-STIPPLE-REPEAT+" "+LINE-WIDTH+" "+LINE-WIDTH-GRANULARITY+" "+LINE-WIDTH-RANGE+" ;; Polygons "+POINT+" "+LINE+" "+FILL+" "+CW+" "+CCW+" "+FRONT+" "+BACK+" "+POLYGON-MODE+" "+POLYGON-SMOOTH+" "+POLYGON-STIPPLE+" "+EDGE-FLAG+" "+CULL-FACE+" "+CULL-FACE-MODE+" "+FRONT-FACE+" "+POLYGON-OFFSET-FACTOR+" "+POLYGON-OFFSET-UNITS+" "+POLYGON-OFFSET-POINT+" "+POLYGON-OFFSET-LINE+" "+POLYGON-OFFSET-FILL+" ;; Display Lists "+COMPILE+" "+COMPILE-AND-EXECUTE+" "+LIST-BASE+" "+LIST-INDEX+" "+LIST-MODE+" ;; Depth Buffer "+NEVER+" "+LESS+" "+EQUAL+" "+LEQUAL+" "+GREATER+" "+NOTEQUAL+" "+GEQUAL+" "+ALWAYS+" "+DEPTH-TEST+" "+DEPTH-BITS+" "+DEPTH-CLEAR-VALUE+" "+DEPTH-FUNC+" "+DEPTH-RANGE+" "+DEPTH-WRITEMASK+" "+DEPTH-COMPONENT+" ;; Lighting "+LIGHTING+" "+LIGHT0+" "+LIGHT1+" "+LIGHT2+" "+LIGHT3+" "+LIGHT4+" "+LIGHT5+" "+LIGHT6+" "+LIGHT7+" "+SPOT-EXPONENT+" "+SPOT-CUTOFF+" "+CONSTANT-ATTENUATION+" "+LINEAR-ATTENUATION+" "+QUADRATIC-ATTENUATION+" "+AMBIENT+" "+DIFFUSE+" "+SPECULAR+" "+SHININESS+" "+EMISSION+" "+POSITION+" "+SPOT-DIRECTION+" "+AMBIENT-AND-DIFFUSE+" "+COLOR-INDEXES+" "+LIGHT-MODEL-TWO-SIDE+" "+LIGHT-MODEL-LOCAL-VIEWER+" "+LIGHT-MODEL-AMBIENT+" "+FRONT-AND-BACK+" "+SHADE-MODEL+" "+FLAT+" "+SMOOTH+" "+COLOR-MATERIAL+" "+COLOR-MATERIAL-FACE+" "+COLOR-MATERIAL-PARAMETER+" "+NORMALIZE+" ;; Clipping planes "+CLIP-PLANE0+" "+CLIP-PLANE1+" "+CLIP-PLANE2+" "+CLIP-PLANE3+" "+CLIP-PLANE4+" "+CLIP-PLANE5+" ;; Accumulation buffer "+ACCUM-RED-BITS+" "+ACCUM-GREEN-BITS+" "+ACCUM-BLUE-BITS+" "+ACCUM-ALPHA-BITS+" "+ACCUM-CLEAR-VALUE+" "+ACCUM+" "+ADD+" "+LOAD+" "+MULT+" "+RETURN+" ;; Alpha Testing "+ALPHA-TEST+" "+ALPHA-TEST-REF+" "+ALPHA-TEST-FUNC+" ;; Blending "+BLEND+" "+BLEND-SRC+" "+BLEND-DST+" "+ZERO+" "+ONE+" "+SRC-COLOR+" "+ONE-MINUS-SRC-COLOR+" "+DST-COLOR+" "+ONE-MINUS-DST-COLOR+" "+SRC-ALPHA+" "+ONE-MINUS-SRC-ALPHA+" "+DST-ALPHA+" "+ONE-MINUS-DST-ALPHA+" "+SRC-ALPHA-SATURATE+" "+CONSTANT-COLOR+" "+ONE-MINUS-CONSTANT-COLOR+" "+CONSTANT-ALPHA+" "+ONE-MINUS-CONSTANT-ALPHA+" ;; Render mode "+FEEDBACK+" "+RENDER+" "+SELECT+" ;; Feedback "+2D+" "+3D+" "+3D-COLOR+" "+3D-COLOR-TEXTURE+" "+4D-COLOR-TEXTURE+" "+POINT-TOKEN+" "+LINE-TOKEN+" "+LINE-RESET-TOKEN+" "+POLYGON-TOKEN+" "+BITMAP-TOKEN+" "+DRAW-PIXEL-TOKEN+" "+COPY-PIXEL-TOKEN+" "+PASS-THROUGH-TOKEN+" "+FEEDBACK-BUFFER-POINTER+" "+FEEDBACK-BUFFER-SIZE+" "+FEEDBACK-BUFFER-TYPE+" ;; Selection "+SELECTION-BUFFER-POINTER+" "+SELECTION-BUFFER-SIZE+" ;; Fog "+FOG+" "+FOG-MODE+" "+FOG-DENSITY+" "+FOG-COLOR+" "+FOG-INDEX+" "+FOG-START+" "+FOG-END+" "+LINEAR+" "+EXP+" "+EXP2+" ;; Logic operations "+LOGIC-OP+" "+INDEX-LOGIC-OP+" "+COLOR-LOGIC-OP+" "+LOGIC-OP-MODE+" "+CLEAR+" "+SET+" "+COPY+" "+COPY-INVERTED+" "+NOOP+" "+INVERT+" "+AND+" "+NAND+" "+OR+" "+NOR+" "+XOR+" "+EQUIV+" "+AND-REVERSE+" "+AND-INVERTED+" "+OR-REVERSE+" "+OR-INVERTED+" ;; Stencil "+STENCIL-TEST+" "+STENCIL-WRITEMASK+" "+STENCIL-BITS+" "+STENCIL-FUNC+" "+STENCIL-VALUE-MASK+" "+STENCIL-REF+" "+STENCIL-FAIL+" "+STENCIL-PASS-DEPTH-PASS+" "+STENCIL-PASS-DEPTH-FAIL+" "+STENCIL-CLEAR-VALUE+" "+STENCIL-INDEX+" "+KEEP+" "+REPLACE+" "+INCR+" "+DECR+" ;; Buffers, Pixel Drawing/Reading "+NONE+" "+LEFT+" "+RIGHT+" "+FRONT-LEFT+" "+FRONT-RIGHT+" "+BACK-LEFT+" "+BACK-RIGHT+" "+AUX0+" "+AUX1+" "+AUX2+" "+AUX3+" "+COLOR-INDEX+" "+RED+" "+GREEN+" "+BLUE+" "+ALPHA+" "+LUMINANCE+" "+LUMINANCE-ALPHA+" "+ALPHA-BITS+" "+RED-BITS+" "+GREEN-BITS+" "+BLUE-BITS+" "+INDEX-BITS+" "+SUBPIXEL-BITS+" "+AUX-BUFFERS+" "+READ-BUFFER+" "+DRAW-BUFFER+" "+DOUBLEBUFFER+" "+STEREO+" "+BITMAP+" "+COLOR+" "+DEPTH+" "+STENCIL+" "+DITHER+" "+RGB+" "+RGBA+" ;; Implementation Limits "+MAX-LIST-NESTING+" "+MAX-ATTRIB-STACK-DEPTH+" "+MAX-MODELVIEW-STACK-DEPTH+" "+MAX-NAME-STACK-DEPTH+" "+MAX-PROJECTION-STACK-DEPTH+" "+MAX-TEXTURE-STACK-DEPTH+" "+MAX-EVAL-ORDER+" "+MAX-LIGHTS+" "+MAX-CLIP-PLANES+" "+MAX-TEXTURE-SIZE+" "+MAX-PIXEL-MAP-TABLE+" "+MAX-VIEWPORT-DIMS+" "+MAX-CLIENT-ATTRIB-STACK-DEPTH+" ;; Gets "+ATTRIB-STACK-DEPTH+" "+CLIENT-ATTRIB-STACK-DEPTH+" "+COLOR-CLEAR-VALUE+" "+COLOR-WRITEMASK+" "+CURRENT-INDEX+" "+CURRENT-COLOR+" "+CURRENT-NORMAL+" "+CURRENT-RASTER-COLOR+" "+CURRENT-RASTER-DISTANCE+" "+current-raster-index+" "+CURRENT-RASTER-POSITION+" "+CURRENT-RASTER-TEXTURE-COORDS+" "+CURRENT-RASTER-POSITION-VALID+" "+CURRENT-TEXTURE-COORDS+" "+INDEX-CLEAR-VALUE+" "+INDEX-MODE+" "+INDEX-WRITEMASK+" "+MODELVIEW-MATRIX+" "+MODELVIEW-STACK-DEPTH+" "+NAME-STACK-DEPTH+" "+PROJECTION-MATRIX+" "+PROJECTION-STACK-DEPTH+" "+RENDER-MODE+" "+RGBA-MODE+" "+TEXTURE-MATRIX+" "+TEXTURE-STACK-DEPTH+" "+VIEWPORT+" ;; GL Evaluators "+AUTO-NORMAL+" "+MAP1-COLOR-4+" "+MAP1-GRID-DOMAIN+" "+MAP1-GRID-SEGMENTS+" "+MAP1-INDEX+" "+MAP1-NORMAL+" "+MAP1-TEXTURE-COORD-1+" "+MAP1-TEXTURE-COORD-2+" "+MAP1-TEXTURE-COORD-3+" "+MAP1-TEXTURE-COORD-4+" "+MAP1-VERTEX-3+" "+MAP1-VERTEX-4+" "+MAP2-COLOR-4+" "+MAP2-GRID-DOMAIN+" "+MAP2-GRID-SEGMENTS+" "+MAP2-INDEX+" "+MAP2-NORMAL+" "+MAP2-TEXTURE-COORD-1+" "+MAP2-TEXTURE-COORD-2+" "+MAP2-TEXTURE-COORD-3+" "+MAP2-TEXTURE-COORD-4+" "+MAP2-VERTEX-3+" "+MAP2-VERTEX-4+" "+COEFF+" "+DOMAIN+" "+ORDER+" ;; Hints "+FOG-HINT+" "+LINE-SMOOTH-HINT+" "+PERSPECTIVE-CORRECTION-HINT+" "+POINT-SMOOTH-HINT+" "+POLYGON-SMOOTH-HINT+" "+DONT-CARE+" "+FASTEST+" "+NICEST+" ;; Scissor box "+SCISSOR-TEST+" "+SCISSOR-BOX+" ;; Pixel Mode / Transfer "+MAP-COLOR+" "+MAP-STENCIL+" "+INDEX-SHIFT+" "+INDEX-OFFSET+" "+RED-SCALE+" "+RED-BIAS+" "+GREEN-SCALE+" "+GREEN-BIAS+" "+BLUE-SCALE+" "+BLUE-BIAS+" "+ALPHA-SCALE+" "+ALPHA-BIAS+" "+DEPTH-SCALE+" "+DEPTH-BIAS+" "+PIXEL-MAP-S-TO-S-SIZE+" "+PIXEL-MAP-I-TO-I-SIZE+" "+PIXEL-MAP-I-TO-R-SIZE+" "+PIXEL-MAP-I-TO-G-SIZE+" "+PIXEL-MAP-I-TO-B-SIZE+" "+PIXEL-MAP-I-TO-A-SIZE+" "+PIXEL-MAP-R-TO-R-SIZE+" "+PIXEL-MAP-G-TO-G-SIZE+" "+PIXEL-MAP-B-TO-B-SIZE+" "+PIXEL-MAP-A-TO-A-SIZE+" "+PIXEL-MAP-S-TO-S+" "+PIXEL-MAP-I-TO-I+" "+PIXEL-MAP-I-TO-R+" "+PIXEL-MAP-I-TO-G+" "+PIXEL-MAP-I-TO-B+" "+PIXEL-MAP-I-TO-A+" "+PIXEL-MAP-R-TO-R+" "+PIXEL-MAP-G-TO-G+" "+PIXEL-MAP-B-TO-B+" "+PIXEL-MAP-A-TO-A+" "+PACK-ALIGNMENT+" "+PACK-LSB-FIRST+" "+PACK-ROW-LENGTH+" "+PACK-SKIP-PIXELS+" "+PACK-SKIP-ROWS+" "+PACK-SWAP-BYTES+" "+UNPACK-ALIGNMENT+" "+UNPACK-LSB-FIRST+" "+UNPACK-ROW-LENGTH+" "+UNPACK-SKIP-PIXELS+" "+UNPACK-SKIP-ROWS+" "+UNPACK-SWAP-BYTES+" "+ZOOM-X+" "+ZOOM-Y+" ;; Texture Mapping "+TEXTURE-ENV+" "+TEXTURE-ENV-MODE+" "+TEXTURE-1D+" "+TEXTURE-2D+" "+TEXTURE-WRAP-S+" "+TEXTURE-WRAP-T+" "+TEXTURE-MAG-FILTER+" "+TEXTURE-MIN-FILTER+" "+TEXTURE-ENV-COLOR+" "+TEXTURE-GEN-S+" "+TEXTURE-GEN-T+" "+TEXTURE-GEN-MODE+" "+TEXTURE-BORDER-COLOR+" "+TEXTURE-WIDTH+" "+TEXTURE-HEIGHT+" "+TEXTURE-BORDER+" "+TEXTURE-COMPONENTS+" "+TEXTURE-RED-SIZE+" "+TEXTURE-GREEN-SIZE+" "+TEXTURE-BLUE-SIZE+" "+TEXTURE-ALPHA-SIZE+" "+TEXTURE-LUMINANCE-SIZE+" "+TEXTURE-INTENSITY-SIZE+" "+NEAREST-MIPMAP-NEAREST+" "+NEAREST-MIPMAP-LINEAR+" "+LINEAR-MIPMAP-NEAREST+" "+LINEAR-MIPMAP-LINEAR+" "+OBJECT-LINEAR+" "+OBJECT-PLANE+" "+EYE-LINEAR+" "+EYE-PLANE+" "+SPHERE-MAP+" "+DECAL+" "+MODULATE+" "+NEAREST+" "+REPEAT+" "+CLAMP+" "+S+" "+T+" "+R+" "+Q+" "+TEXTURE-GEN-R+" "+TEXTURE-GEN-Q+" ;; GL 1.1 Texturing "+PROXY-TEXTURE-1D+" "+PROXY-TEXTURE-2D+" "+TEXTURE-PRIORITY+" "+TEXTURE-RESIDENT+" "+TEXTURE-BINDING-1D+" "+TEXTURE-BINDING-2D+" "+TEXTURE-INTERNAL-FORMAT+" "+PACK-SKIP-IMAGES+" "+PACK-IMAGE-HEIGHT+" "+UNPACK-SKIP-IMAGES+" "+UNPACK-IMAGE-HEIGHT+" "+TEXTURE-3D+" "+PROXY-TEXTURE-3D+" "+TEXTURE-DEPTH+" "+TEXTURE-WRAP-R+" "+MAX-3D-TEXTURE-SIZE+" "+TEXTURE-BINDING-3D+" ;; Internal texture formats (GL 1.1) "+ALPHA4+" "+ALPHA8+" "+ALPHA12+" "+ALPHA16+" "+LUMINANCE4+" "+LUMINANCE8+" "+LUMINANCE12+" "+LUMINANCE16+" "+LUMINANCE4-ALPHA4+" "+LUMINANCE6-ALPHA2+" "+LUMINANCE8-ALPHA8+" "+LUMINANCE12-ALPHA4+" "+LUMINANCE12-ALPHA12+" "+LUMINANCE16-ALPHA16+" "+INTENSITY+" "+INTENSITY4+" "+INTENSITY8+" "+INTENSITY12+" "+INTENSITY16+" "+R3-G3-B2+" "+RGB4+" "+RGB5+" "+RGB8+" "+RGB10+" "+RGB12+" "+RGB16+" "+RGBA2+" "+RGBA4+" "+RGB5-A1+" "+RGBA8+" "+rgb10-a2+" "+RGBA12+" "+RGBA16+" ;; Utility "+VENDOR+" "+RENDERER+" "+VERSION+" "+EXTENSIONS+" ;; Errors "+NO-ERROR+" "+INVALID-VALUE+" "+INVALID-ENUM+" "+INVALID-OPERATION+" "+STACK-OVERFLOW+" "+STACK-UNDERFLOW+" "+OUT-OF-MEMORY+" ;; OpenGL 1.2 "+RESCALE-NORMAL+" "+CLAMP-TO-EDGE+" "+MAX-ELEMENTS-VERTICES+" "+MAX-ELEMENTS-INDICES+" "+BGR+" "+BGRA+" "+UNSIGNED-BYTE-3-3-2+" "+UNSIGNED-BYTE-2-3-3-REV+" "+UNSIGNED-SHORT-5-6-5+" "+UNSIGNED-SHORT-5-6-5-REV+" "+UNSIGNED-SHORT-4-4-4-4+" "+UNSIGNED-SHORT-4-4-4-4-REV+" "+UNSIGNED-SHORT-5-5-5-1+" "+UNSIGNED-SHORT-1-5-5-5-REV+" "+UNSIGNED-INT-8-8-8-8+" "+UNSIGNED-INT-8-8-8-8-REV+" "+UNSIGNED-INT-10-10-10-2+" "+UNSIGNED-INT-2-10-10-10-REV+" "+LIGHT-MODEL-COLOR-CONTROL+" "+SINGLE-COLOR+" "+SEPARATE-SPECULAR-COLOR+" "+TEXTURE-MIN-LOD+" "+TEXTURE-MAX-LOD+" "+TEXTURE-BASE-LEVEL+" "+TEXTURE-MAX-LEVEL+" "+SMOOTH-POINT-SIZE-RANGE+" "+SMOOTH-POINT-SIZE-GRANULARITY+" "+SMOOTH-LINE-WIDTH-RANGE+" "+SMOOTH-LINE-WIDTH-GRANULARITY+" "+ALIASED-POINT-SIZE-RANGE+" "+ALIASED-LINE-WIDTH-RANGE+" ;; OpenGL 1.2 Imaging subset ;; GL_EXT_color_table "+COLOR-TABLE+" "+POST-CONVOLUTION-COLOR-TABLE+" "+POST-COLOR-MATRIX-COLOR-TABLE+" "+PROXY-COLOR-TABLE+" "+PROXY-POST-CONVOLUTION-COLOR-TABLE+" "+PROXY-POST-COLOR-MATRIX-COLOR-TABLE+" "+COLOR-TABLE-SCALE+" "+COLOR-TABLE-BIAS+" "+COLOR-TABLE-FORMAT+" "+COLOR-TABLE-WIDTH+" "+COLOR-TABLE-RED-SIZE+" "+COLOR-TABLE-GREEN-SIZE+" "+COLOR-TABLE-BLUE-SIZE+" "+COLOR-TABLE-ALPHA-SIZE+" "+COLOR-TABLE-LUMINANCE-SIZE+" "+COLOR-TABLE-INTENSITY-SIZE+" ;; GL_EXT_convolution and GL_HP_convolution "+CONVOLUTION-1D+" "+CONVOLUTION-2D+" "+SEPARABLE-2D+" "+CONVOLUTION-BORDER-MODE+" "+CONVOLUTION-FILTER-SCALE+" "+CONVOLUTION-FILTER-BIAS+" "+REDUCE+" "+CONVOLUTION-FORMAT+" "+CONVOLUTION-WIDTH+" "+CONVOLUTION-HEIGHT+" "+MAX-CONVOLUTION-WIDTH+" "+MAX-CONVOLUTION-HEIGHT+" "+POST-CONVOLUTION-RED-SCALE+" "+POST-CONVOLUTION-GREEN-SCALE+" "+POST-CONVOLUTION-BLUE-SCALE+" "+POST-CONVOLUTION-ALPHA-SCALE+" "+POST-CONVOLUTION-RED-BIAS+" "+POST-CONVOLUTION-GREEN-BIAS+" "+POST-CONVOLUTION-BLUE-BIAS+" "+POST-CONVOLUTION-ALPHA-BIAS+" "+CONSTANT-BORDER+" "+REPLICATE-BORDER+" "+CONVOLUTION-BORDER-COLOR+" ;; GL_SGI_color_matrix "+COLOR-MATRIX+" "+COLOR-MATRIX-STACK-DEPTH+" "+MAX-COLOR-MATRIX-STACK-DEPTH+" "+POST-COLOR-MATRIX-RED-SCALE+" "+POST-COLOR-MATRIX-GREEN-SCALE+" "+POST-COLOR-MATRIX-BLUE-SCALE+" "+POST-COLOR-MATRIX-ALPHA-SCALE+" "+POST-COLOR-MATRIX-RED-BIAS+" "+POST-COLOR-MATRIX-GREEN-BIAS+" "+POST-COLOR-MATRIX-BLUE-BIAS+" "+POST-COLOR-MATRIX-ALPHA-BIAS+" ;; GL_EXT_histogram "+HISTOGRAM+" "+PROXY-HISTOGRAM+" "+HISTOGRAM-WIDTH+" "+HISTOGRAM-FORMAT+" "+HISTOGRAM-RED-SIZE+" "+HISTOGRAM-GREEN-SIZE+" "+HISTOGRAM-BLUE-SIZE+" "+HISTOGRAM-ALPHA-SIZE+" "+HISTOGRAM-LUMINANCE-SIZE+" "+HISTOGRAM-SINK+" "+MINMAX+" "+MINMAX-FORMAT+" "+MINMAX-SINK+" "+TABLE-TOO-LARGE+" ;; GL_EXT_blend_color, GL_EXT_blend_minmax "+BLEND-EQUATION+" "+MIN+" "+MAX+" "+FUNC-ADD+" "+FUNC-SUBTRACT+" "+FUNC-REVERSE-SUBTRACT+" ;; glPush/PopAttrib bits "+CURRENT-BIT+" "+POINT-BIT+" "+LINE-BIT+" "+POLYGON-BIT+" "+POLYGON-STIPPLE-BIT+" "+PIXEL-MODE-BIT+" "+LIGHTING-BIT+" "+FOG-BIT+" "+DEPTH-BUFFER-BIT+" "+ACCUM-BUFFER-BIT+" "+STENCIL-BUFFER-BIT+" "+VIEWPORT-BIT+" "+TRANSFORM-BIT+" "+ENABLE-BIT+" "+COLOR-BUFFER-BIT+" "+HINT-BIT+" "+EVAL-BIT+" "+LIST-BIT+" "+TEXTURE-BIT+" "+SCISSOR-BIT+" "+ALL-ATTRIB-BITS+" "+CLIENT-PIXEL-STORE-BIT+" "+CLIENT-VERTEX-ARRAY-BIT+" "+CLIENT-ALL-ATTRIB-BITS+" ;; ARB Multitexturing extension "+ARB-MULTITEXTURE+" "+TEXTURE0-ARB+" "+TEXTURE1-ARB+" "+TEXTURE2-ARB+" "+TEXTURE3-ARB+" "+TEXTURE4-ARB+" "+TEXTURE5-ARB+" "+TEXTURE6-ARB+" "+TEXTURE7-ARB+" "+TEXTURE8-ARB+" "+TEXTURE9-ARB+" "+TEXTURE10-ARB+" "+TEXTURE11-ARB+" "+TEXTURE12-ARB+" "+TEXTURE13-ARB+" "+TEXTURE14-ARB+" "+TEXTURE15-ARB+" "+TEXTURE16-ARB+" "+TEXTURE17-ARB+" "+TEXTURE18-ARB+" "+TEXTURE19-ARB+" "+TEXTURE20-ARB+" "+TEXTURE21-ARB+" "+TEXTURE22-ARB+" "+TEXTURE23-ARB+" "+TEXTURE24-ARB+" "+TEXTURE25-ARB+" "+TEXTURE26-ARB+" "+TEXTURE27-ARB+" "+TEXTURE28-ARB+" "+TEXTURE29-ARB+" "+TEXTURE30-ARB+" "+TEXTURE31-ARB+" "+ACTIVE-TEXTURE-ARB+" "+CLIENT-ACTIVE-TEXTURE-ARB+" "+MAX-TEXTURE-UNITS-ARB+" ;;; Misc extensions "+EXT-ABGR+" "+ABGR-EXT+" "+EXT-BLEND-COLOR+" "+CONSTANT-COLOR-EXT+" "+ONE-MINUS-CONSTANT-COLOR-EXT+" "+CONSTANT-ALPHA-EXT+" "+ONE-MINUS-CONSTANT-ALPHA-EXT+" "+blend-color-ext+" "+EXT-POLYGON-OFFSET+" "+POLYGON-OFFSET-EXT+" "+POLYGON-OFFSET-FACTOR-EXT+" "+POLYGON-OFFSET-BIAS-EXT+" "+EXT-TEXTURE3D+" "+PACK-SKIP-IMAGES-EXT+" "+PACK-IMAGE-HEIGHT-EXT+" "+UNPACK-SKIP-IMAGES-EXT+" "+UNPACK-IMAGE-HEIGHT-EXT+" "+TEXTURE-3D-EXT+" "+PROXY-TEXTURE-3D-EXT+" "+TEXTURE-DEPTH-EXT+" "+TEXTURE-WRAP-R-EXT+" "+MAX-3D-TEXTURE-SIZE-EXT+" "+TEXTURE-3D-BINDING-EXT+" "+EXT-TEXTURE-OBJECT+" "+TEXTURE-PRIORITY-EXT+" "+TEXTURE-RESIDENT-EXT+" "+TEXTURE-1D-BINDING-EXT+" "+TEXTURE-2D-BINDING-EXT+" "+EXT-RESCALE-NORMAL+" "+RESCALE-NORMAL-EXT+" "+EXT-VERTEX-ARRAY+" "+VERTEX-ARRAY-EXT+" "+NORMAL-ARRAY-EXT+" "+COLOR-ARRAY-EXT+" "+INDEX-ARRAY-EXT+" "+TEXTURE-COORD-ARRAY-EXT+" "+EDGE-FLAG-ARRAY-EXT+" "+VERTEX-ARRAY-SIZE-EXT+" "+VERTEX-ARRAY-TYPE-EXT+" "+VERTEX-ARRAY-STRIDE-EXT+" "+VERTEX-ARRAY-COUNT-EXT+" "+NORMAL-ARRAY-TYPE-EXT+" "+NORMAL-ARRAY-STRIDE-EXT+" "+NORMAL-ARRAY-COUNT-EXT+" "+COLOR-ARRAY-SIZE-EXT+" "+COLOR-ARRAY-TYPE-EXT+" "+COLOR-ARRAY-STRIDE-EXT+" "+COLOR-ARRAY-COUNT-EXT+" "+INDEX-ARRAY-TYPE-EXT+" "+INDEX-ARRAY-STRIDE-EXT+" "+INDEX-ARRAY-COUNT-EXT+" "+TEXTURE-COORD-ARRAY-SIZE-EXT+" "+TEXTURE-COORD-ARRAY-TYPE-EXT+" "+TEXTURE-COORD-ARRAY-STRIDE-EXT+" "+TEXTURE-COORD-ARRAY-COUNT-EXT+" "+EDGE-FLAG-ARRAY-STRIDE-EXT+" "+EDGE-FLAG-ARRAY-COUNT-EXT+" "+VERTEX-ARRAY-POINTER-EXT+" "+NORMAL-ARRAY-POINTER-EXT+" "+COLOR-ARRAY-POINTER-EXT+" "+INDEX-ARRAY-POINTER-EXT+" "+TEXTURE-COORD-ARRAY-POINTER-EXT+" "+EDGE-FLAG-ARRAY-POINTER-EXT+" "+SGIS-TEXTURE-EDGE-CLAMP+" "+CLAMP-TO-EDGE-SGIS+" "+EXT-BLEND-MINMAX+" "+FUNC-ADD-EXT+" "+MIN-EXT+" "+MAX-EXT+" "+BLEND-EQUATION-EXT+" "+EXT-BLEND-SUBTRACT+" "+FUNC-SUBTRACT-EXT+" "+FUNC-REVERSE-SUBTRACT-EXT+" "+EXT-BLEND-LOGIC-OP+" "+EXT-POINT-PARAMETERS+" "+POINT-SIZE-MIN-EXT+" "+POINT-SIZE-MAX-EXT+" "+POINT-FADE-THRESHOLD-SIZE-EXT+" "+DISTANCE-ATTENUATION-EXT+" "+EXT-PALETTED-TEXTURE+" "+TABLE-TOO-LARGE-EXT+" "+COLOR-TABLE-FORMAT-EXT+" "+COLOR-TABLE-WIDTH-EXT+" "+COLOR-TABLE-RED-SIZE-EXT+" "+COLOR-TABLE-GREEN-SIZE-EXT+" "+COLOR-TABLE-BLUE-SIZE-EXT+" "+COLOR-TABLE-ALPHA-SIZE-EXT+" "+COLOR-TABLE-LUMINANCE-SIZE-EXT+" "+COLOR-TABLE-INTENSITY-SIZE-EXT+" "+TEXTURE-INDEX-SIZE-EXT+" "+COLOR-INDEX1-EXT+" "+COLOR-INDEX2-EXT+" "+COLOR-INDEX4-EXT+" "+COLOR-INDEX8-EXT+" "+COLOR-INDEX12-EXT+" "+COLOR-INDEX16-EXT+" "+EXT-CLIP-VOLUME-HINT+" "+CLIP-VOLUME-CLIPPING-HINT-EXT+" "+EXT-COMPILED-VERTEX-ARRAY+" "+ARRAY-ELEMENT-LOCK-FIRST-EXT+" "+ARRAY-ELEMENT-LOCK-COUNT-EXT+" "+HP-OCCLUSION-TEST+" "+OCCLUSION-TEST-HP+" "+OCCLUSION-TEST-RESULT-HP+" "+EXT-SHARED-TEXTURE-PALETTE+" "+SHARED-TEXTURE-PALETTE-EXT+" "+EXT-STENCIL-WRAP+" "+INCR-WRAP-EXT+" "+DECR-WRAP-EXT+" "+NV-TEXGEN-REFLECTION+" "+NORMAL-MAP-NV+" "+REFLECTION-MAP-NV+" "+EXT-TEXTURE-ENV-ADD+" "+MESA-WINDOW-POS+" "+MESA-RESIZE-BUFFERS+" )) (in-package :gl) ;;; Opcodes. (eval-when (:compile-toplevel :load-toplevel :execute) (defconstant +get-string+ 129) (defconstant +new-list+ 101) (defconstant +end-list+ 102) (defconstant +gen-lists+ 104) (defconstant +finish+ 108) (defconstant +disable+ 138) (defconstant +enable+ 139) (defconstant +flush+ 142) ;;; Constants. ;;; Shamelessly taken from CL-SDL. ;; Boolean (defconstant +false+ #x0) (defconstant +true+ #x1) ;; Types (defconstant +byte+ #x1400) (defconstant +unsigned-byte+ #x1401) (defconstant +short+ #x1402) (defconstant +unsigned-short+ #x1403) (defconstant +int+ #x1404) (defconstant +unsigned-int+ #x1405) (defconstant +float+ #x1406) (defconstant +double+ #x140a) (defconstant +2-bytes+ #x1407) (defconstant +3-bytes+ #x1408) (defconstant +4-bytes+ #x1409) ;; Primitives (defconstant +points+ #x0000) (defconstant +lines+ #x0001) (defconstant +line-loop+ #x0002) (defconstant +line-strip+ #x0003) (defconstant +triangles+ #x0004) (defconstant +triangle-strip+ #x0005) (defconstant +triangle-fan+ #x0006) (defconstant +quads+ #x0007) (defconstant +quad-strip+ #x0008) (defconstant +polygon+ #x0009) ;; Arrays (defconstant +vertex-array+ #x8074) (defconstant +normal-array+ #x8075) (defconstant +color-array+ #x8076) (defconstant +index-array+ #x8077) (defconstant +texture-coord-array+ #x8078) (defconstant +edge-flag-array+ #x8079) (defconstant +vertex-array-size+ #x807a) (defconstant +vertex-array-type+ #x807b) (defconstant +vertex-array-stride+ #x807c) (defconstant +normal-array-type+ #x807e) (defconstant +normal-array-stride+ #x807f) (defconstant +color-array-size+ #x8081) (defconstant +color-array-type+ #x8082) (defconstant +color-array-stride+ #x8083) (defconstant +index-array-type+ #x8085) (defconstant +index-array-stride+ #x8086) (defconstant +texture-coord-array-size+ #x8088) (defconstant +texture-coord-array-type+ #x8089) (defconstant +texture-coord-array-stride+ #x808a) (defconstant +edge-flag-array-stride+ #x808c) (defconstant +vertex-array-pointer+ #x808e) (defconstant +normal-array-pointer+ #x808f) (defconstant +color-array-pointer+ #x8090) (defconstant +index-array-pointer+ #x8091) (defconstant +texture-coord-array-pointer+ #x8092) (defconstant +edge-flag-array-pointer+ #x8093) ;; Array formats (defconstant +v2f+ #x2a20) (defconstant +v3f+ #x2a21) (defconstant +c4ub-v2f+ #x2a22) (defconstant +c4ub-v3f+ #x2a23) (defconstant +c3f-v3f+ #x2a24) (defconstant +n3f-v3f+ #x2a25) (defconstant +c4f-n3f-v3f+ #x2a26) (defconstant +t2f-v3f+ #x2a27) (defconstant +t4f-v4f+ #x2a28) (defconstant +t2f-c4ub-v3f+ #x2a29) (defconstant +t2f-c3f-v3f+ #x2a2a) (defconstant +t2f-n3f-v3f+ #x2a2b) (defconstant +t2f-c4f-n3f-v3f+ #x2a2c) (defconstant +t4f-c4f-n3f-v4f+ #x2a2d) ;; Matrices (defconstant +matrix-mode+ #x0ba0) (defconstant +modelview+ #x1700) (defconstant +projection+ #x1701) (defconstant +texture+ #x1702) ;; Points (defconstant +point-smooth+ #x0b10) (defconstant +point-size+ #x0b11) (defconstant +point-size-granularity+ #x0b13) (defconstant +point-size-range+ #x0b12) ;; Lines (defconstant +line-smooth+ #x0b20) (defconstant +line-stipple+ #x0b24) (defconstant +line-stipple-pattern+ #x0b25) (defconstant +line-stipple-repeat+ #x0b26) (defconstant +line-width+ #x0b21) (defconstant +line-width-granularity+ #x0b23) (defconstant +line-width-range+ #x0b22) ;; Polygons (defconstant +point+ #x1b00) (defconstant +line+ #x1b01) (defconstant +fill+ #x1b02) (defconstant +cw+ #x0900) (defconstant +ccw+ #x0901) (defconstant +front+ #x0404) (defconstant +back+ #x0405) (defconstant +polygon-mode+ #x0b40) (defconstant +polygon-smooth+ #x0b41) (defconstant +polygon-stipple+ #x0b42) (defconstant +edge-flag+ #x0b43) (defconstant +cull-face+ #x0b44) (defconstant +cull-face-mode+ #x0b45) (defconstant +front-face+ #x0b46) (defconstant +polygon-offset-factor+ #x8038) (defconstant +polygon-offset-units+ #x2a00) (defconstant +polygon-offset-point+ #x2a01) (defconstant +polygon-offset-line+ #x2a02) (defconstant +polygon-offset-fill+ #x8037) ;; Display Lists (defconstant +compile+ #x1300) (defconstant +compile-and-execute+ #x1301) (defconstant +list-base+ #x0b32) (defconstant +list-index+ #x0b33) (defconstant +list-mode+ #x0b30) ;; Depth Buffer (defconstant +never+ #x0200) (defconstant +less+ #x0201) (defconstant +equal+ #x0202) (defconstant +lequal+ #x0203) (defconstant +greater+ #x0204) (defconstant +notequal+ #x0205) (defconstant +gequal+ #x0206) (defconstant +always+ #x0207) (defconstant +depth-test+ #x0b71) (defconstant +depth-bits+ #x0d56) (defconstant +depth-clear-value+ #x0b73) (defconstant +depth-func+ #x0b74) (defconstant +depth-range+ #x0b70) (defconstant +depth-writemask+ #x0b72) (defconstant +depth-component+ #x1902) ;; Lighting (defconstant +lighting+ #x0b50) (defconstant +light0+ #x4000) (defconstant +light1+ #x4001) (defconstant +light2+ #x4002) (defconstant +light3+ #x4003) (defconstant +light4+ #x4004) (defconstant +light5+ #x4005) (defconstant +light6+ #x4006) (defconstant +light7+ #x4007) (defconstant +spot-exponent+ #x1205) (defconstant +spot-cutoff+ #x1206) (defconstant +constant-attenuation+ #x1207) (defconstant +linear-attenuation+ #x1208) (defconstant +quadratic-attenuation+ #x1209) (defconstant +ambient+ #x1200) (defconstant +diffuse+ #x1201) (defconstant +specular+ #x1202) (defconstant +shininess+ #x1601) (defconstant +emission+ #x1600) (defconstant +position+ #x1203) (defconstant +spot-direction+ #x1204) (defconstant +ambient-and-diffuse+ #x1602) (defconstant +color-indexes+ #x1603) (defconstant +light-model-two-side+ #x0b52) (defconstant +light-model-local-viewer+ #x0b51) (defconstant +light-model-ambient+ #x0b53) (defconstant +front-and-back+ #x0408) (defconstant +shade-model+ #x0b54) (defconstant +flat+ #x1d00) (defconstant +smooth+ #x1d01) (defconstant +color-material+ #x0b57) (defconstant +color-material-face+ #x0b55) (defconstant +color-material-parameter+ #x0b56) (defconstant +normalize+ #x0ba1) ;; Clipping planes (defconstant +clip-plane0+ #x3000) (defconstant +clip-plane1+ #x3001) (defconstant +clip-plane2+ #x3002) (defconstant +clip-plane3+ #x3003) (defconstant +clip-plane4+ #x3004) (defconstant +clip-plane5+ #x3005) ;; Accumulation buffer (defconstant +accum-red-bits+ #x0d58) (defconstant +accum-green-bits+ #x0d59) (defconstant +accum-blue-bits+ #x0d5a) (defconstant +accum-alpha-bits+ #x0d5b) (defconstant +accum-clear-value+ #x0b80) (defconstant +accum+ #x0100) (defconstant +add+ #x0104) (defconstant +load+ #x0101) (defconstant +mult+ #x0103) (defconstant +return+ #x0102) ;; Alpha Testing (defconstant +alpha-test+ #x0bc0) (defconstant +alpha-test-ref+ #x0bc2) (defconstant +alpha-test-func+ #x0bc1) ;; Blending (defconstant +blend+ #x0be2) (defconstant +blend-src+ #x0be1) (defconstant +blend-dst+ #x0be0) (defconstant +zero+ #x0) (defconstant +one+ #x1) (defconstant +src-color+ #x0300) (defconstant +one-minus-src-color+ #x0301) (defconstant +dst-color+ #x0306) (defconstant +one-minus-dst-color+ #x0307) (defconstant +src-alpha+ #x0302) (defconstant +one-minus-src-alpha+ #x0303) (defconstant +dst-alpha+ #x0304) (defconstant +one-minus-dst-alpha+ #x0305) (defconstant +src-alpha-saturate+ #x0308) (defconstant +constant-color+ #x8001) (defconstant +one-minus-constant-color+ #x8002) (defconstant +constant-alpha+ #x8003) (defconstant +one-minus-constant-alpha+ #x8004) ;; Render mode (defconstant +feedback+ #x1c01) (defconstant +render+ #x1c00) (defconstant +select+ #x1c02) ;; Feedback (defconstant +2d+ #x0600) (defconstant +3d+ #x0601) (defconstant +3d-color+ #x0602) (defconstant +3d-color-texture+ #x0603) (defconstant +4d-color-texture+ #x0604) (defconstant +point-token+ #x0701) (defconstant +line-token+ #x0702) (defconstant +line-reset-token+ #x0707) (defconstant +polygon-token+ #x0703) (defconstant +bitmap-token+ #x0704) (defconstant +draw-pixel-token+ #x0705) (defconstant +copy-pixel-token+ #x0706) (defconstant +pass-through-token+ #x0700) (defconstant +feedback-buffer-pointer+ #x0df0) (defconstant +feedback-buffer-size+ #x0df1) (defconstant +feedback-buffer-type+ #x0df2) ;; Selection (defconstant +selection-buffer-pointer+ #x0df3) (defconstant +selection-buffer-size+ #x0df4) ;; Fog (defconstant +fog+ #x0b60) (defconstant +fog-mode+ #x0b65) (defconstant +fog-density+ #x0b62) (defconstant +fog-color+ #x0b66) (defconstant +fog-index+ #x0b61) (defconstant +fog-start+ #x0b63) (defconstant +fog-end+ #x0b64) (defconstant +linear+ #x2601) (defconstant +exp+ #x0800) (defconstant +exp2+ #x0801) ;; Logic operations (defconstant +logic-op+ #x0bf1) (defconstant +index-logic-op+ #x0bf1) (defconstant +color-logic-op+ #x0bf2) (defconstant +logic-op-mode+ #x0bf0) (defconstant +clear+ #x1500) (defconstant +set+ #x150f) (defconstant +copy+ #x1503) (defconstant +copy-inverted+ #x150c) (defconstant +noop+ #x1505) (defconstant +invert+ #x150a) (defconstant +and+ #x1501) (defconstant +nand+ #x150e) (defconstant +or+ #x1507) (defconstant +nor+ #x1508) (defconstant +xor+ #x1506) (defconstant +equiv+ #x1509) (defconstant +and-reverse+ #x1502) (defconstant +and-inverted+ #x1504) (defconstant +or-reverse+ #x150b) (defconstant +or-inverted+ #x150d) ;; Stencil (defconstant +stencil-test+ #x0b90) (defconstant +stencil-writemask+ #x0b98) (defconstant +stencil-bits+ #x0d57) (defconstant +stencil-func+ #x0b92) (defconstant +stencil-value-mask+ #x0b93) (defconstant +stencil-ref+ #x0b97) (defconstant +stencil-fail+ #x0b94) (defconstant +stencil-pass-depth-pass+ #x0b96) (defconstant +stencil-pass-depth-fail+ #x0b95) (defconstant +stencil-clear-value+ #x0b91) (defconstant +stencil-index+ #x1901) (defconstant +keep+ #x1e00) (defconstant +replace+ #x1e01) (defconstant +incr+ #x1e02) (defconstant +decr+ #x1e03) ;; Buffers, Pixel Drawing/Reading (defconstant +none+ #x0) (defconstant +left+ #x0406) (defconstant +right+ #x0407) (defconstant +front-left+ #x0400) (defconstant +front-right+ #x0401) (defconstant +back-left+ #x0402) (defconstant +back-right+ #x0403) (defconstant +aux0+ #x0409) (defconstant +aux1+ #x040a) (defconstant +aux2+ #x040b) (defconstant +aux3+ #x040c) (defconstant +color-index+ #x1900) (defconstant +red+ #x1903) (defconstant +green+ #x1904) (defconstant +blue+ #x1905) (defconstant +alpha+ #x1906) (defconstant +luminance+ #x1909) (defconstant +luminance-alpha+ #x190a) (defconstant +alpha-bits+ #x0d55) (defconstant +red-bits+ #x0d52) (defconstant +green-bits+ #x0d53) (defconstant +blue-bits+ #x0d54) (defconstant +index-bits+ #x0d51) (defconstant +subpixel-bits+ #x0d50) (defconstant +aux-buffers+ #x0c00) (defconstant +read-buffer+ #x0c02) (defconstant +draw-buffer+ #x0c01) (defconstant +doublebuffer+ #x0c32) (defconstant +stereo+ #x0c33) (defconstant +bitmap+ #x1a00) (defconstant +color+ #x1800) (defconstant +depth+ #x1801) (defconstant +stencil+ #x1802) (defconstant +dither+ #x0bd0) (defconstant +rgb+ #x1907) (defconstant +rgba+ #x1908) ;; Implementation Limits (defconstant +max-list-nesting+ #x0b31) (defconstant +max-attrib-stack-depth+ #x0d35) (defconstant +max-modelview-stack-depth+ #x0d36) (defconstant +max-name-stack-depth+ #x0d37) (defconstant +max-projection-stack-depth+ #x0d38) (defconstant +max-texture-stack-depth+ #x0d39) (defconstant +max-eval-order+ #x0d30) (defconstant +max-lights+ #x0d31) (defconstant +max-clip-planes+ #x0d32) (defconstant +max-texture-size+ #x0d33) (defconstant +max-pixel-map-table+ #x0d34) (defconstant +max-viewport-dims+ #x0d3a) (defconstant +max-client-attrib-stack-depth+ #x0d3b) ;; Gets (defconstant +attrib-stack-depth+ #x0bb0) (defconstant +client-attrib-stack-depth+ #x0bb1) (defconstant +color-clear-value+ #x0c22) (defconstant +color-writemask+ #x0c23) (defconstant +current-index+ #x0b01) (defconstant +current-color+ #x0b00) (defconstant +current-normal+ #x0b02) (defconstant +current-raster-color+ #x0b04) (defconstant +current-raster-distance+ #x0b09) (defconstant +current-raster-index+ #x0b05) (defconstant +current-raster-position+ #x0b07) (defconstant +current-raster-texture-coords+ #x0b06) (defconstant +current-raster-position-valid+ #x0b08) (defconstant +current-texture-coords+ #x0b03) (defconstant +index-clear-value+ #x0c20) (defconstant +index-mode+ #x0c30) (defconstant +index-writemask+ #x0c21) (defconstant +modelview-matrix+ #x0ba6) (defconstant +modelview-stack-depth+ #x0ba3) (defconstant +name-stack-depth+ #x0d70) (defconstant +projection-matrix+ #x0ba7) (defconstant +projection-stack-depth+ #x0ba4) (defconstant +render-mode+ #x0c40) (defconstant +rgba-mode+ #x0c31) (defconstant +texture-matrix+ #x0ba8) (defconstant +texture-stack-depth+ #x0ba5) (defconstant +viewport+ #x0ba2) ;; GL Evaluators (defconstant +auto-normal+ #x0d80) (defconstant +map1-color-4+ #x0d90) (defconstant +map1-grid-domain+ #x0dd0) (defconstant +map1-grid-segments+ #x0dd1) (defconstant +map1-index+ #x0d91) (defconstant +map1-normal+ #x0d92) (defconstant +map1-texture-coord-1+ #x0d93) (defconstant +map1-texture-coord-2+ #x0d94) (defconstant +map1-texture-coord-3+ #x0d95) (defconstant +map1-texture-coord-4+ #x0d96) (defconstant +map1-vertex-3+ #x0d97) (defconstant +map1-vertex-4+ #x0d98) (defconstant +map2-color-4+ #x0db0) (defconstant +map2-grid-domain+ #x0dd2) (defconstant +map2-grid-segments+ #x0dd3) (defconstant +map2-index+ #x0db1) (defconstant +map2-normal+ #x0db2) (defconstant +map2-texture-coord-1+ #x0db3) (defconstant +map2-texture-coord-2+ #x0db4) (defconstant +map2-texture-coord-3+ #x0db5) (defconstant +map2-texture-coord-4+ #x0db6) (defconstant +map2-vertex-3+ #x0db7) (defconstant +map2-vertex-4+ #x0db8) (defconstant +coeff+ #x0a00) (defconstant +domain+ #x0a02) (defconstant +order+ #x0a01) ;; Hints (defconstant +fog-hint+ #x0c54) (defconstant +line-smooth-hint+ #x0c52) (defconstant +perspective-correction-hint+ #x0c50) (defconstant +point-smooth-hint+ #x0c51) (defconstant +polygon-smooth-hint+ #x0c53) (defconstant +dont-care+ #x1100) (defconstant +fastest+ #x1101) (defconstant +nicest+ #x1102) ;; Scissor box (defconstant +scissor-test+ #x0c11) (defconstant +scissor-box+ #x0c10) ;; Pixel Mode / Transfer (defconstant +map-color+ #x0d10) (defconstant +map-stencil+ #x0d11) (defconstant +index-shift+ #x0d12) (defconstant +index-offset+ #x0d13) (defconstant +red-scale+ #x0d14) (defconstant +red-bias+ #x0d15) (defconstant +green-scale+ #x0d18) (defconstant +green-bias+ #x0d19) (defconstant +blue-scale+ #x0d1a) (defconstant +blue-bias+ #x0d1b) (defconstant +alpha-scale+ #x0d1c) (defconstant +alpha-bias+ #x0d1d) (defconstant +depth-scale+ #x0d1e) (defconstant +depth-bias+ #x0d1f) (defconstant +pixel-map-s-to-s-size+ #x0cb1) (defconstant +pixel-map-i-to-i-size+ #x0cb0) (defconstant +pixel-map-i-to-r-size+ #x0cb2) (defconstant +pixel-map-i-to-g-size+ #x0cb3) (defconstant +pixel-map-i-to-b-size+ #x0cb4) (defconstant +pixel-map-i-to-a-size+ #x0cb5) (defconstant +pixel-map-r-to-r-size+ #x0cb6) (defconstant +pixel-map-g-to-g-size+ #x0cb7) (defconstant +pixel-map-b-to-b-size+ #x0cb8) (defconstant +pixel-map-a-to-a-size+ #x0cb9) (defconstant +pixel-map-s-to-s+ #x0c71) (defconstant +pixel-map-i-to-i+ #x0c70) (defconstant +pixel-map-i-to-r+ #x0c72) (defconstant +pixel-map-i-to-g+ #x0c73) (defconstant +pixel-map-i-to-b+ #x0c74) (defconstant +pixel-map-i-to-a+ #x0c75) (defconstant +pixel-map-r-to-r+ #x0c76) (defconstant +pixel-map-g-to-g+ #x0c77) (defconstant +pixel-map-b-to-b+ #x0c78) (defconstant +pixel-map-a-to-a+ #x0c79) (defconstant +pack-alignment+ #x0d05) (defconstant +pack-lsb-first+ #x0d01) (defconstant +pack-row-length+ #x0d02) (defconstant +pack-skip-pixels+ #x0d04) (defconstant +pack-skip-rows+ #x0d03) (defconstant +pack-swap-bytes+ #x0d00) (defconstant +unpack-alignment+ #x0cf5) (defconstant +unpack-lsb-first+ #x0cf1) (defconstant +unpack-row-length+ #x0cf2) (defconstant +unpack-skip-pixels+ #x0cf4) (defconstant +unpack-skip-rows+ #x0cf3) (defconstant +unpack-swap-bytes+ #x0cf0) (defconstant +zoom-x+ #x0d16) (defconstant +zoom-y+ #x0d17) ;; Texture Mapping (defconstant +texture-env+ #x2300) (defconstant +texture-env-mode+ #x2200) (defconstant +texture-1d+ #x0de0) (defconstant +texture-2d+ #x0de1) (defconstant +texture-wrap-s+ #x2802) (defconstant +texture-wrap-t+ #x2803) (defconstant +texture-mag-filter+ #x2800) (defconstant +texture-min-filter+ #x2801) (defconstant +texture-env-color+ #x2201) (defconstant +texture-gen-s+ #x0c60) (defconstant +texture-gen-t+ #x0c61) (defconstant +texture-gen-mode+ #x2500) (defconstant +texture-border-color+ #x1004) (defconstant +texture-width+ #x1000) (defconstant +texture-height+ #x1001) (defconstant +texture-border+ #x1005) (defconstant +texture-components+ #x1003) (defconstant +texture-red-size+ #x805c) (defconstant +texture-green-size+ #x805d) (defconstant +texture-blue-size+ #x805e) (defconstant +texture-alpha-size+ #x805f) (defconstant +texture-luminance-size+ #x8060) (defconstant +texture-intensity-size+ #x8061) (defconstant +nearest-mipmap-nearest+ #x2700) (defconstant +nearest-mipmap-linear+ #x2702) (defconstant +linear-mipmap-nearest+ #x2701) (defconstant +linear-mipmap-linear+ #x2703) (defconstant +object-linear+ #x2401) (defconstant +object-plane+ #x2501) (defconstant +eye-linear+ #x2400) (defconstant +eye-plane+ #x2502) (defconstant +sphere-map+ #x2402) (defconstant +decal+ #x2101) (defconstant +modulate+ #x2100) (defconstant +nearest+ #x2600) (defconstant +repeat+ #x2901) (defconstant +clamp+ #x2900) (defconstant +s+ #x2000) (defconstant +t+ #x2001) (defconstant +r+ #x2002) (defconstant +q+ #x2003) (defconstant +texture-gen-r+ #x0c62) (defconstant +texture-gen-q+ #x0c63) ;; GL 1.1 Texturing (defconstant +proxy-texture-1d+ #x8063) (defconstant +proxy-texture-2d+ #x8064) (defconstant +texture-priority+ #x8066) (defconstant +texture-resident+ #x8067) (defconstant +texture-binding-1d+ #x8068) (defconstant +texture-binding-2d+ #x8069) (defconstant +texture-internal-format+ #x1003) (defconstant +pack-skip-images+ #x806b) (defconstant +pack-image-height+ #x806c) (defconstant +unpack-skip-images+ #x806d) (defconstant +unpack-image-height+ #x806e) (defconstant +texture-3d+ #x806f) (defconstant +proxy-texture-3d+ #x8070) (defconstant +texture-depth+ #x8071) (defconstant +texture-wrap-r+ #x8072) (defconstant +max-3d-texture-size+ #x8073) (defconstant +texture-binding-3d+ #x806a) ;; Internal texture formats (GL 1.1) (defconstant +alpha4+ #x803b) (defconstant +alpha8+ #x803c) (defconstant +alpha12+ #x803d) (defconstant +alpha16+ #x803e) (defconstant +luminance4+ #x803f) (defconstant +luminance8+ #x8040) (defconstant +luminance12+ #x8041) (defconstant +luminance16+ #x8042) (defconstant +luminance4-alpha4+ #x8043) (defconstant +luminance6-alpha2+ #x8044) (defconstant +luminance8-alpha8+ #x8045) (defconstant +luminance12-alpha4+ #x8046) (defconstant +luminance12-alpha12+ #x8047) (defconstant +luminance16-alpha16+ #x8048) (defconstant +intensity+ #x8049) (defconstant +intensity4+ #x804a) (defconstant +intensity8+ #x804b) (defconstant +intensity12+ #x804c) (defconstant +intensity16+ #x804d) (defconstant +r3-g3-b2+ #x2a10) (defconstant +rgb4+ #x804f) (defconstant +rgb5+ #x8050) (defconstant +rgb8+ #x8051) (defconstant +rgb10+ #x8052) (defconstant +rgb12+ #x8053) (defconstant +rgb16+ #x8054) (defconstant +rgba2+ #x8055) (defconstant +rgba4+ #x8056) (defconstant +rgb5-a1+ #x8057) (defconstant +rgba8+ #x8058) (defconstant +rgb10-a2+ #x8059) (defconstant +rgba12+ #x805a) (defconstant +rgba16+ #x805b) ;; Utility (defconstant +vendor+ #x1f00) (defconstant +renderer+ #x1f01) (defconstant +version+ #x1f02) (defconstant +extensions+ #x1f03) ;; Errors (defconstant +no-error+ #x0) (defconstant +invalid-value+ #x0501) (defconstant +invalid-enum+ #x0500) (defconstant +invalid-operation+ #x0502) (defconstant +stack-overflow+ #x0503) (defconstant +stack-underflow+ #x0504) (defconstant +out-of-memory+ #x0505) ;; OpenGL 1.2 (defconstant +rescale-normal+ #x803a) (defconstant +clamp-to-edge+ #x812f) (defconstant +max-elements-vertices+ #x80e8) (defconstant +max-elements-indices+ #x80e9) (defconstant +bgr+ #x80e0) (defconstant +bgra+ #x80e1) (defconstant +unsigned-byte-3-3-2+ #x8032) (defconstant +unsigned-byte-2-3-3-rev+ #x8362) (defconstant +unsigned-short-5-6-5+ #x8363) (defconstant +unsigned-short-5-6-5-rev+ #x8364) (defconstant +unsigned-short-4-4-4-4+ #x8033) (defconstant +unsigned-short-4-4-4-4-rev+ #x8365) (defconstant +unsigned-short-5-5-5-1+ #x8034) (defconstant +unsigned-short-1-5-5-5-rev+ #x8366) (defconstant +unsigned-int-8-8-8-8+ #x8035) (defconstant +unsigned-int-8-8-8-8-rev+ #x8367) (defconstant +unsigned-int-10-10-10-2+ #x8036) (defconstant +unsigned-int-2-10-10-10-rev+ #x8368) (defconstant +light-model-color-control+ #x81f8) (defconstant +single-color+ #x81f9) (defconstant +separate-specular-color+ #x81fa) (defconstant +texture-min-lod+ #x813a) (defconstant +texture-max-lod+ #x813b) (defconstant +texture-base-level+ #x813c) (defconstant +texture-max-level+ #x813d) (defconstant +smooth-point-size-range+ #x0b12) (defconstant +smooth-point-size-granularity+ #x0b13) (defconstant +smooth-line-width-range+ #x0b22) (defconstant +smooth-line-width-granularity+ #x0b23) (defconstant +aliased-point-size-range+ #x846d) (defconstant +aliased-line-width-range+ #x846e) ;; OpenGL 1.2 Imaging subset ;; GL_EXT_color_table (defconstant +color-table+ #x80d0) (defconstant +post-convolution-color-table+ #x80d1) (defconstant +post-color-matrix-color-table+ #x80d2) (defconstant +proxy-color-table+ #x80d3) (defconstant +proxy-post-convolution-color-table+ #x80d4) (defconstant +proxy-post-color-matrix-color-table+ #x80d5) (defconstant +color-table-scale+ #x80d6) (defconstant +color-table-bias+ #x80d7) (defconstant +color-table-format+ #x80d8) (defconstant +color-table-width+ #x80d9) (defconstant +color-table-red-size+ #x80da) (defconstant +color-table-green-size+ #x80db) (defconstant +color-table-blue-size+ #x80dc) (defconstant +color-table-alpha-size+ #x80dd) (defconstant +color-table-luminance-size+ #x80de) (defconstant +color-table-intensity-size+ #x80df) ;; GL_EXT_convolution and GL_HP_convolution (defconstant +convolution-1d+ #x8010) (defconstant +convolution-2d+ #x8011) (defconstant +separable-2d+ #x8012) (defconstant +convolution-border-mode+ #x8013) (defconstant +convolution-filter-scale+ #x8014) (defconstant +convolution-filter-bias+ #x8015) (defconstant +reduce+ #x8016) (defconstant +convolution-format+ #x8017) (defconstant +convolution-width+ #x8018) (defconstant +convolution-height+ #x8019) (defconstant +max-convolution-width+ #x801a) (defconstant +max-convolution-height+ #x801b) (defconstant +post-convolution-red-scale+ #x801c) (defconstant +post-convolution-green-scale+ #x801d) (defconstant +post-convolution-blue-scale+ #x801e) (defconstant +post-convolution-alpha-scale+ #x801f) (defconstant +post-convolution-red-bias+ #x8020) (defconstant +post-convolution-green-bias+ #x8021) (defconstant +post-convolution-blue-bias+ #x8022) (defconstant +post-convolution-alpha-bias+ #x8023) (defconstant +constant-border+ #x8151) (defconstant +replicate-border+ #x8153) (defconstant +convolution-border-color+ #x8154) ;; GL_SGI_color_matrix (defconstant +color-matrix+ #x80b1) (defconstant +color-matrix-stack-depth+ #x80b2) (defconstant +max-color-matrix-stack-depth+ #x80b3) (defconstant +post-color-matrix-red-scale+ #x80b4) (defconstant +post-color-matrix-green-scale+ #x80b5) (defconstant +post-color-matrix-blue-scale+ #x80b6) (defconstant +post-color-matrix-alpha-scale+ #x80b7) (defconstant +post-color-matrix-red-bias+ #x80b8) (defconstant +post-color-matrix-green-bias+ #x80b9) (defconstant +post-color-matrix-blue-bias+ #x80ba) (defconstant +post-color-matrix-alpha-bias+ #x80bb) ;; GL_EXT_histogram (defconstant +histogram+ #x8024) (defconstant +proxy-histogram+ #x8025) (defconstant +histogram-width+ #x8026) (defconstant +histogram-format+ #x8027) (defconstant +histogram-red-size+ #x8028) (defconstant +histogram-green-size+ #x8029) (defconstant +histogram-blue-size+ #x802a) (defconstant +histogram-alpha-size+ #x802b) (defconstant +histogram-luminance-size+ #x802c) (defconstant +histogram-sink+ #x802d) (defconstant +minmax+ #x802e) (defconstant +minmax-format+ #x802f) (defconstant +minmax-sink+ #x8030) (defconstant +table-too-large+ #x8031) ;; GL_EXT_blend_color, GL_EXT_blend_minmax (defconstant +blend-equation+ #x8009) (defconstant +min+ #x8007) (defconstant +max+ #x8008) (defconstant +func-add+ #x8006) (defconstant +func-subtract+ #x800a) (defconstant +func-reverse-subtract+ #x800b) ;; glPush/PopAttrib bits (defconstant +current-bit+ #x00000001) (defconstant +point-bit+ #x00000002) (defconstant +line-bit+ #x00000004) (defconstant +polygon-bit+ #x00000008) (defconstant +polygon-stipple-bit+ #x00000010) (defconstant +pixel-mode-bit+ #x00000020) (defconstant +lighting-bit+ #x00000040) (defconstant +fog-bit+ #x00000080) (defconstant +depth-buffer-bit+ #x00000100) (defconstant +accum-buffer-bit+ #x00000200) (defconstant +stencil-buffer-bit+ #x00000400) (defconstant +viewport-bit+ #x00000800) (defconstant +transform-bit+ #x00001000) (defconstant +enable-bit+ #x00002000) (defconstant +color-buffer-bit+ #x00004000) (defconstant +hint-bit+ #x00008000) (defconstant +eval-bit+ #x00010000) (defconstant +list-bit+ #x00020000) (defconstant +texture-bit+ #x00040000) (defconstant +scissor-bit+ #x00080000) (defconstant +all-attrib-bits+ #x000fffff) (defconstant +client-pixel-store-bit+ #x00000001) (defconstant +client-vertex-array-bit+ #x00000002) (defconstant +client-all-attrib-bits+ #xffffffff) ;; ARB Multitexturing extension (defconstant +arb-multitexture+ 1) (defconstant +texture0-arb+ #x84c0) (defconstant +texture1-arb+ #x84c1) (defconstant +texture2-arb+ #x84c2) (defconstant +texture3-arb+ #x84c3) (defconstant +texture4-arb+ #x84c4) (defconstant +texture5-arb+ #x84c5) (defconstant +texture6-arb+ #x84c6) (defconstant +texture7-arb+ #x84c7) (defconstant +texture8-arb+ #x84c8) (defconstant +texture9-arb+ #x84c9) (defconstant +texture10-arb+ #x84ca) (defconstant +texture11-arb+ #x84cb) (defconstant +texture12-arb+ #x84cc) (defconstant +texture13-arb+ #x84cd) (defconstant +texture14-arb+ #x84ce) (defconstant +texture15-arb+ #x84cf) (defconstant +texture16-arb+ #x84d0) (defconstant +texture17-arb+ #x84d1) (defconstant +texture18-arb+ #x84d2) (defconstant +texture19-arb+ #x84d3) (defconstant +texture20-arb+ #x84d4) (defconstant +texture21-arb+ #x84d5) (defconstant +texture22-arb+ #x84d6) (defconstant +texture23-arb+ #x84d7) (defconstant +texture24-arb+ #x84d8) (defconstant +texture25-arb+ #x84d9) (defconstant +texture26-arb+ #x84da) (defconstant +texture27-arb+ #x84db) (defconstant +texture28-arb+ #x84dc) (defconstant +texture29-arb+ #x84dd) (defconstant +texture30-arb+ #x84de) (defconstant +texture31-arb+ #x84df) (defconstant +active-texture-arb+ #x84e0) (defconstant +client-active-texture-arb+ #x84e1) (defconstant +max-texture-units-arb+ #x84e2) ;;; Misc extensions (defconstant +ext-abgr+ 1) (defconstant +abgr-ext+ #x8000) (defconstant +ext-blend-color+ 1) (defconstant +constant-color-ext+ #x8001) (defconstant +one-minus-constant-color-ext+ #x8002) (defconstant +constant-alpha-ext+ #x8003) (defconstant +one-minus-constant-alpha-ext+ #x8004) (defconstant +blend-color-ext+ #x8005) (defconstant +ext-polygon-offset+ 1) (defconstant +polygon-offset-ext+ #x8037) (defconstant +polygon-offset-factor-ext+ #x8038) (defconstant +polygon-offset-bias-ext+ #x8039) (defconstant +ext-texture3d+ 1) (defconstant +pack-skip-images-ext+ #x806b) (defconstant +pack-image-height-ext+ #x806c) (defconstant +unpack-skip-images-ext+ #x806d) (defconstant +unpack-image-height-ext+ #x806e) (defconstant +texture-3d-ext+ #x806f) (defconstant +proxy-texture-3d-ext+ #x8070) (defconstant +texture-depth-ext+ #x8071) (defconstant +texture-wrap-r-ext+ #x8072) (defconstant +max-3d-texture-size-ext+ #x8073) (defconstant +texture-3d-binding-ext+ #x806a) (defconstant +ext-texture-object+ 1) (defconstant +texture-priority-ext+ #x8066) (defconstant +texture-resident-ext+ #x8067) (defconstant +texture-1d-binding-ext+ #x8068) (defconstant +texture-2d-binding-ext+ #x8069) (defconstant +ext-rescale-normal+ 1) (defconstant +rescale-normal-ext+ #x803a) (defconstant +ext-vertex-array+ 1) (defconstant +vertex-array-ext+ #x8074) (defconstant +normal-array-ext+ #x8075) (defconstant +color-array-ext+ #x8076) (defconstant +index-array-ext+ #x8077) (defconstant +texture-coord-array-ext+ #x8078) (defconstant +edge-flag-array-ext+ #x8079) (defconstant +vertex-array-size-ext+ #x807a) (defconstant +vertex-array-type-ext+ #x807b) (defconstant +vertex-array-stride-ext+ #x807c) (defconstant +vertex-array-count-ext+ #x807d) (defconstant +normal-array-type-ext+ #x807e) (defconstant +normal-array-stride-ext+ #x807f) (defconstant +normal-array-count-ext+ #x8080) (defconstant +color-array-size-ext+ #x8081) (defconstant +color-array-type-ext+ #x8082) (defconstant +color-array-stride-ext+ #x8083) (defconstant +color-array-count-ext+ #x8084) (defconstant +index-array-type-ext+ #x8085) (defconstant +index-array-stride-ext+ #x8086) (defconstant +index-array-count-ext+ #x8087) (defconstant +texture-coord-array-size-ext+ #x8088) (defconstant +texture-coord-array-type-ext+ #x8089) (defconstant +texture-coord-array-stride-ext+ #x808a) (defconstant +texture-coord-array-count-ext+ #x808b) (defconstant +edge-flag-array-stride-ext+ #x808c) (defconstant +edge-flag-array-count-ext+ #x808d) (defconstant +vertex-array-pointer-ext+ #x808e) (defconstant +normal-array-pointer-ext+ #x808f) (defconstant +color-array-pointer-ext+ #x8090) (defconstant +index-array-pointer-ext+ #x8091) (defconstant +texture-coord-array-pointer-ext+ #x8092) (defconstant +edge-flag-array-pointer-ext+ #x8093) (defconstant +sgis-texture-edge-clamp+ 1) (defconstant +clamp-to-edge-sgis+ #x812f) (defconstant +ext-blend-minmax+ 1) (defconstant +func-add-ext+ #x8006) (defconstant +min-ext+ #x8007) (defconstant +max-ext+ #x8008) (defconstant +blend-equation-ext+ #x8009) (defconstant +ext-blend-subtract+ 1) (defconstant +func-subtract-ext+ #x800a) (defconstant +func-reverse-subtract-ext+ #x800b) (defconstant +ext-blend-logic-op+ 1) (defconstant +ext-point-parameters+ 1) (defconstant +point-size-min-ext+ #x8126) (defconstant +point-size-max-ext+ #x8127) (defconstant +point-fade-threshold-size-ext+ #x8128) (defconstant +distance-attenuation-ext+ #x8129) (defconstant +ext-paletted-texture+ 1) (defconstant +table-too-large-ext+ #x8031) (defconstant +color-table-format-ext+ #x80d8) (defconstant +color-table-width-ext+ #x80d9) (defconstant +color-table-red-size-ext+ #x80da) (defconstant +color-table-green-size-ext+ #x80db) (defconstant +color-table-blue-size-ext+ #x80dc) (defconstant +color-table-alpha-size-ext+ #x80dd) (defconstant +color-table-luminance-size-ext+ #x80de) (defconstant +color-table-intensity-size-ext+ #x80df) (defconstant +texture-index-size-ext+ #x80ed) (defconstant +color-index1-ext+ #x80e2) (defconstant +color-index2-ext+ #x80e3) (defconstant +color-index4-ext+ #x80e4) (defconstant +color-index8-ext+ #x80e5) (defconstant +color-index12-ext+ #x80e6) (defconstant +color-index16-ext+ #x80e7) (defconstant +ext-clip-volume-hint+ 1) (defconstant +clip-volume-clipping-hint-ext+ #x80f0) (defconstant +ext-compiled-vertex-array+ 1) (defconstant +array-element-lock-first-ext+ #x81a8) (defconstant +array-element-lock-count-ext+ #x81a9) (defconstant +hp-occlusion-test+ 1) (defconstant +occlusion-test-hp+ #x8165) (defconstant +occlusion-test-result-hp+ #x8166) (defconstant +ext-shared-texture-palette+ 1) (defconstant +shared-texture-palette-ext+ #x81fb) (defconstant +ext-stencil-wrap+ 1) (defconstant +incr-wrap-ext+ #x8507) (defconstant +decr-wrap-ext+ #x8508) (defconstant +nv-texgen-reflection+ 1) (defconstant +normal-map-nv+ #x8511) (defconstant +reflection-map-nv+ #x8512) (defconstant +ext-texture-env-add+ 1) (defconstant +mesa-window-pos+ 1) (defconstant +mesa-resize-buffers+ 1) ) ;;; Utility stuff (deftype bool () 'card8) (deftype float32 () 'single-float) (deftype float64 () 'double-float) (declaim (inline aset-float32 aset-float64)) #+sbcl (defun aset-float32 (value array index) (declare (type single-float value) (type buffer-bytes array) (type array-index index)) #.(declare-buffun) (let ((bits (sb-kernel:single-float-bits value))) (declare (type (unsigned-byte 32) bits)) (aset-card32 bits array index)) value) #+cmu (defun aset-float32 (value array index) (declare (type single-float value) (type buffer-bytes array) (type array-index index)) #.(declare-buffun) (let ((bits (kernel:single-float-bits value))) (declare (type (unsigned-byte 32) bits)) (aset-card32 bits array index)) value) #+openmcl (defun aset-float32 (value array index) (declare (type single-float value) (type buffer-bytes array) (type array-index index)) #.(declare-buffun) (let ((bits (ccl::single-float-bits value))) (declare (type (unsigned-byte 32) bits)) (aset-card32 bits array index)) value) #+sbcl (defun aset-float64 (value array index) (declare (type double-float value) (type buffer-bytes array) (type array-index index)) #.(declare-buffun) (let ((low (sb-kernel:double-float-low-bits value)) (high (sb-kernel:double-float-high-bits value))) (declare (type (unsigned-byte 32) low high)) (aset-card32 low array index) (aset-card32 high array (the array-index (+ index 4)))) value) #+cmu (defun aset-float64 (value array index) (declare (type double-float value) (type buffer-bytes array) (type array-index index)) #.(declare-buffun) (let ((low (kernel:double-float-low-bits value)) (high (kernel:double-float-high-bits value))) (declare (type (unsigned-byte 32) low high)) (aset-card32 low array index) (aset-card32 high array (+ index 4))) value) #+openmcl (defun aset-float64 (value array index) (declare (type double-float value) (type buffer-bytes array) (type array-index index)) #.(declare-buffun) (multiple-value-bind (low high) (ccl::double-float-bits value) (declare (type (unsigned-byte 32) low high)) (aset-card32 low array index) (aset-card32 high array (the array-index (+ index 4)))) value) (eval-when (:compile-toplevel :load-toplevel :execute) (defun byte-width (type) (ecase type ((int8 card8 bool) 1) ((int16 card16) 2) ((int32 card32 float32) 4) ((float64) 8))) (defun setter (type) (ecase type (int8 'aset-int8) (int16 'aset-int16) (int32 'aset-int32) (bool 'aset-card8) (card8 'aset-card8) (card16 'aset-card16) (card32 'aset-card32) (float32 'aset-float32) (float64 'aset-float64))) (defun sequence-setter (type) (ecase type (int8 'sset-int8) (int16 'sset-int16) (int32 'sset-int32) (bool 'sset-card8) (card8 'sset-card8) (card16 'sset-card16) (card32 'sset-card32) (float32 'sset-float32) (float64 'sset-float64))) (defmacro define-sequence-setter (type) `(defun ,(intern (format nil "~A-~A" 'sset type)) (seq buffer start length) (declare (type sequence seq) (type buffer-bytes buffer) (type array-index start) (type fixnum length)) #.(declare-buffun) (assert (= length (length seq)) (length seq) "SEQUENCE length should be ~D, not ~D." length (length seq)) (typecase seq (list (let ((offset 0)) (declare (type fixnum offset)) (dolist (n seq) (declare (type ,type n)) (,(setter type) n buffer (the array-index (+ start offset))) (incf offset ,(byte-width type))))) ((simple-array ,type) (dotimes (i ,(byte-width type)) (,(setter type) (aref seq i) buffer (the array-index (+ start (* i ,(byte-width type))))))) (vector (dotimes (i ,(byte-width type)) (,(setter type) (svref seq i) buffer (the array-index (+ start (* i ,(byte-width type)))))))))) (define-sequence-setter int8) (define-sequence-setter int16) (define-sequence-setter int32) (define-sequence-setter bool) (define-sequence-setter card8) (define-sequence-setter card16) (define-sequence-setter card32) (define-sequence-setter float32) (define-sequence-setter float64) (defun make-argspecs (list) (destructuring-bind (name type) list (etypecase type (symbol `(,name ,type 1 nil)) (list `(,name ,(second type) ,(third type) ,(if (consp (third type)) (make-symbol (format nil "~A-~A" name 'length)) nil)))))) (defun byte-width-calculation (argspecs) (let ((constant 0) (calculated ())) (loop for (name type length length-var) in argspecs do (let ((byte-width (byte-width type))) (typecase length (number (incf constant (* byte-width length))) (symbol (push `(* ,byte-width ,length) calculated)) (cons (push `(* ,byte-width ,length-var) calculated))))) (if (null calculated) constant (list* '+ constant calculated)))) (defun composite-args (argspecs) (loop for (name type length length-var) in argspecs when (consp length) collect (list length-var length))) (defun make-setter-forms (argspecs) (loop for (name type length length-var) in argspecs collecting `(progn ,(if (and (numberp length) (= 1 length)) `(,(setter type) ,name .rbuf. .index.) `(,(sequence-setter type) ,name .rbuf. .index. ,(if length-var length-var length))) (setf .index. (the array-index (+ .index. (the fixnum (* ,(byte-width type) ,(if length-var length-var length))))))))) (defmacro define-rendering-command (name opcode &rest args) ;; FIXME: Must heavily type-annotate. (labels ((expand-args (list) (loop for (arg type) in list if (consp arg) append (loop for name in arg collecting (list name type)) else collect (list arg type)))) (let* ((args (expand-args args)) (argspecs (mapcar 'make-argspecs args)) (total-byte-width (byte-width-calculation argspecs)) (composite-args (composite-args argspecs))) `(defun ,name ,(mapcar #'first argspecs) (declare ,@(mapcar #'(lambda (list) (if (symbolp (second list)) (list* 'type (reverse list)) `(type sequence ,(first list)))) args)) #.(declare-buffun) (assert (context-p *current-context*) (*current-context*) "*CURRENT-CONTEXT* is not set (~S)." *current-context*) (let* ((.ctx. *current-context*) (.index0. (context-index .ctx.)) (.index. (+ .index0. 4)) (.rbuf. (context-rbuf .ctx.)) ,@composite-args (.length. (+ 4 (* 4 (ceiling ,total-byte-width 4))))) (declare (type context .ctx.) (type array-index .index. .index0.) (type buffer-bytes .rbuf.) ,@(mapcar #'(lambda (list) `(type fixnum ,(first list))) composite-args) (type fixnum .length.)) (when (< (- (length .rbuf.) 8) (+ .index. .length.)) (error "Rendering command sequence too long. Implement automatic buffer flushing.")) (aset-card16 .length. .rbuf. (the array-index .index0.)) (aset-card16 ,opcode .rbuf. (the array-index (+ .index0. 2))) ,@(make-setter-forms argspecs) (setf (context-index .ctx.) (the array-index (+ .index0. .length.)))))))) ) ;; eval-when ;;; Command implementation. (defun get-string (name) (assert (context-p *current-context*) (*current-context*) "*CURRENT-CONTEXT* is not set (~S)." *current-context*) (let* ((ctx *current-context*) (display (context-display ctx))) (with-buffer-request-and-reply (display (extension-opcode display "GLX") nil) ((data +get-string+) ;; *** This is CONTEXT-TAG (card32 (context-tag ctx)) ;; *** This is ENUM. (card32 name)) (let* ((length (card32-get 12)) (bytes (sequence-get :format card8 :result-type '(simple-array card8 (*)) :index 32 :length length))) (declare (type (simple-array card8 (*)) bytes) (type fixnum length)) ;; FIXME: How does this interact with unicode? (map-into (make-string (1- length)) #'code-char bytes))))) ;;; Rendering commands (in alphabetical order). (define-rendering-command accum 137 ;; *** ENUM (op card32) (value float32)) (define-rendering-command active-texture-arb 197 ;; *** ENUM (texture card32)) (define-rendering-command alpha-func 159 ;; *** ENUM (func card32) (ref float32)) (define-rendering-command begin 4 ;; *** ENUM (mode card32)) (define-rendering-command bind-texture 4117 ;; *** ENUM (target card32) (texture card32)) (define-rendering-command blend-color 4096 (red float32) (green float32) (blue float32) (alpha float32)) (define-rendering-command blend-equotion 4097 ;; *** ENUM (mode card32)) (define-rendering-command blend-func 160 ;; *** ENUM (sfactor card32) ;; *** ENUM (dfactor card32)) (define-rendering-command call-list 1 (list card32)) (define-rendering-command clear 127 ;; *** BITFIELD (mask card32)) (define-rendering-command clear-accum 128 (red float32) (green float32) (blue float32) (alpha float32)) (define-rendering-command clear-color 130 (red float32) (green float32) (blue float32) (alpha float32)) (define-rendering-command clear-depth 132 (depth float64)) (define-rendering-command clear-index 129 (c float32)) (define-rendering-command clear-stencil 131 (s int32)) (define-rendering-command clip-plane 77 (equotion-0 float64) (equotion-1 float64) (equotion-2 float64) (equotion-3 float64) ;; *** ENUM (plane card32)) (define-rendering-command color-3b 6 ((r g b) int8)) (define-rendering-command color-3d 7 ((r g b) float64)) (define-rendering-command color-3f 8 ((r g b) float32)) (define-rendering-command color-3i 9 ((r g b) int32)) (define-rendering-command color-3s 10 ((r g b) int16)) (define-rendering-command color-3ub 11 ((r g b) card8)) (define-rendering-command color-3ui 12 ((r g b) card32)) (define-rendering-command color-3us 13 ((r g b) card16)) (define-rendering-command color-4b 14 ((r g b a) int8)) (define-rendering-command color-4d 15 ((r g b a) float64)) (define-rendering-command color-4f 16 ((r g b a) float32)) (define-rendering-command color-4i 17 ((r g b a) int32)) (define-rendering-command color-4s 18 ((r g b a) int16)) (define-rendering-command color-4ub 19 ((r g b a) card8)) (define-rendering-command color-4ui 20 ((r g b a) card32)) (define-rendering-command color-4us 21 ((r g b a) card16)) (define-rendering-command color-mask 134 (red bool) (green bool) (blue bool) (alpha bool)) (define-rendering-command color-material 78 ;; *** ENUM (face card32) ;; *** ENUM (mode card32)) (define-rendering-command color-table-parameter-fv 2054 ;; *** ENUM (target card32) ;; TODO: ;; +GL-COLOR-TABLE-SCALE+ (#x80D6) => (length params) = 4 ;; +GL-COLOR-TABLE-BIAS+ (#x80d7) => (length params) = 4 ;; else (length params) = 0 (command is erronous) ;; *** ENUM (pname card32) (params (list float32 4))) (define-rendering-command color-table-parameter-iv 2055 ;; *** ENUM (target card32) ;; TODO: ;; +GL-COLOR-TABLE-SCALE+ (#x80D6) => (length params) = 4 ;; +GL-COLOR-TABLE-BIAS+ (#x80d7) => (length params) = 4 ;; else (length params) = 0 (command is erronous) ;; *** ENUM (pname card32) (params (list int32 4))) (define-rendering-command convolution-parameter-f 4103 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (params float32)) (define-rendering-command convolution-parameter-fv 4104 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (params (list float32 (ecase pname ((#.+convolution-border-mode+ #.+convolution-format+ #.+convolution-width+ #.+convolution-height+ #.+max-convolution-width+ #.+max-convolution-width+) 1) ((#.+convolution-filter-scale+ #.+convolution-filter-bias+) 4))))) (define-rendering-command convolution-parameter-i 4105 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (params int32)) (define-rendering-command convolution-parameter-iv 4106 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (params (list int32 (ecase pname ((#.+convolution-border-mode+ #.+convolution-format+ #.+convolution-width+ #.+convolution-height+ #.+max-convolution-width+ #.+max-convolution-width+) 1) ((#.+convolution-filter-scale+ #.+convolution-filter-bias+) 4))))) (define-rendering-command copy-color-sub-table 196 ;; *** ENUM (target card32) (start int32) (x int32) (y int32) (width int32)) (define-rendering-command copy-color-table 2056 ;; *** ENUM (target card32) ;; *** ENUM (internalformat card32) (x int32) (y int32) (width int32)) (define-rendering-command copy-convolution-filter-id 4107 ;; *** ENUM (target card32) ;; *** ENUM (internalformat card32) (x int32) (y int32) (width int32)) (define-rendering-command copy-convolution-filter-2d 4108 ;; *** ENUM (target card32) ;; *** ENUM (internalformat card32) (x int32) (y int32) (width int32) (height int32)) (define-rendering-command copy-pixels 172 (x int32) (y int32) (width int32) (height int32) ;; *** ENUM (type card32)) (define-rendering-command copy-tex-image-1d 4119 ;; *** ENUM (target card32) (level int32) ;; *** ENUM (internalformat card32) (x int32) (y int32) (width int32) (border int32)) (define-rendering-command copy-tex-image-2d 4120 ;; *** ENUM (target card32) (level int32) ;; *** ENUM (internalformat card32) (x int32) (y int32) (width int32) (height int32) (border int32)) (define-rendering-command copy-tex-sub-image-1d 4121 ;; *** ENUM (target card32) (level int32) (xoffset int32) (x int32) (y int32) (width int32)) (define-rendering-command copy-tex-sub-image-2d 4122 ;; *** ENUM (target card32) (level int32) (xoffset int32) (yoffset int32) (x int32) (y int32) (width int32) (height int32)) (define-rendering-command copy-tex-sub-image-3d 4123 ;; *** ENUM (target card32) (level int32) (xoffset int32) (yoffset int32) (zoffset int32) (x int32) (y int32) (width int32) (height int32)) (define-rendering-command cull-face 79 ;; *** ENUM (mode card32)) (define-rendering-command depth-func 164 ;; *** ENUM (func card32)) (define-rendering-command depth-mask 135 (mask bool)) (define-rendering-command depth-range 174 (z-near float64) (z-far float64)) (define-rendering-command draw-buffer 126 ;; *** ENUM (mode card32)) (define-rendering-command edge-flag-v 22 (flag-0 bool)) (define-rendering-command end 23) (define-rendering-command eval-coord-1d 151 (u-0 float64)) (define-rendering-command eval-coord-1f 152 (u-0 float32)) (define-rendering-command eval-coord-2d 153 ((u-0 u-1) float64)) (define-rendering-command eval-coord-2f 154 ((u-0 u-1) float32)) (define-rendering-command eval-mesh-1 155 ;; *** ENUM (mode card32) ((i1 i2) int32)) (define-rendering-command eval-mesh-2 157 ;; *** ENUM (mode card32) ((i1 i2 j1 j2) int32)) (define-rendering-command eval-point-1 156 (i int32)) (define-rendering-command eval-point-2 158 (i int32) (j int32)) (define-rendering-command fog-f 80 ;; *** ENUM (pname card32) (param float32)) (define-rendering-command fog-fv 81 ;; *** ENUM (pname card32) (params (list float32 (ecase pname ((#.+fog-index+ #.+fog-density+ #.+fog-start+ #.+fog-end+ #.+fog-mode+) 1) ((#.+fog-color+) 4))))) (define-rendering-command fog-i 82 ;; *** ENUM (pname card32) (param int32)) (define-rendering-command fog-iv 83 ;; *** ENUM (pname card32) (params (list int32 (ecase pname ((#.+fog-index+ #.+fog-density+ #.+fog-start+ #.+fog-end+ #.+fog-mode+) 1) ((#.+fog-color+) 4))))) (define-rendering-command front-face 84 ;; *** ENUM (mode card32)) (define-rendering-command frustum 175 (left float64) (right float64) (bottom float64) (top float64) (z-near float64) (z-far float64)) (define-rendering-command hint 85 ;; *** ENUM (target card32) ;; *** ENUM (mode card32)) (define-rendering-command histogram 4110 ;; *** ENUM (target card32) (width int32) ;; *** ENUM (internalformat card32) (sink bool)) (define-rendering-command index-mask 136 (mask card32)) (define-rendering-command index-d 24 (c-0 float64)) (define-rendering-command index-f 25 (c-0 float32)) (define-rendering-command index-i 26 (c-0 int32)) (define-rendering-command index-s 27 (c-0 int16)) (define-rendering-command index-ub 194 (c-0 card8)) (define-rendering-command init-names 121) (define-rendering-command light-model-f 90 ;; *** ENUM (pname card32) (param float32)) (define-rendering-command light-model-fv 91 ;; *** ENUM (pname card32) (params (list float32 (ecase pname ((#.+light-model-color-control+ #.+light-model-local-viewer+ #.+light-model-two-side+) 1) ((#.+light-model-ambient+) 4))))) (define-rendering-command light-model-i 92 ;; *** ENUM (pname card32) (param int32)) (define-rendering-command light-model-iv 93 ;; *** ENUM (pname card32) (params (list int32 (ecase pname ((#.+light-model-color-control+ #.+light-model-local-viewer+ #.+light-model-two-side+) 1) ((#.+light-model-ambient+) 4))))) (define-rendering-command light-f 86 ;; *** ENUM (light card32) ;; *** ENUM (pname card32) (param float32)) (define-rendering-command light-fv 87 ;; *** ENUM (light card32) ;; *** ENUM (pname card32) (params (list float32 (ecase pname ((#.+ambient+ #.+diffuse+ #.+specular+ #.+position+) 4) ((#.+spot-direction+) 3) ((#.+spot-exponent+ #.+spot-cutoff+ #.+constant-attenuation+ #.+linear-attenuation+ #.+quadratic-attenuation+) 1))))) (define-rendering-command light-i 88 ;; *** ENUM (light card32) ;; *** ENUM (pname card32) (param int32)) (define-rendering-command light-iv 89 ;; *** ENUM (light card32) ;; *** ENUM (pname card32) (params (list int32 (ecase pname ((#.+ambient+ #.+diffuse+ #.+specular+ #.+position+) 4) ((#.+spot-direction+) 3) ((#.+spot-exponent+ #.+spot-cutoff+ #.+constant-attenuation+ #.+linear-attenuation+ #.+quadratic-attenuation+) 1))))) (define-rendering-command line-stipple 94 (factor int32) (pattern card16)) (define-rendering-command line-width 95 (width float32)) (define-rendering-command list-base 3 (base card32)) (define-rendering-command load-identity 176) (define-rendering-command load-matrix-d 178 (m (list float64 16))) (define-rendering-command load-matrix-f 177 (m (list float32 16))) (define-rendering-command load-name 122 (name card32)) (define-rendering-command logic-op 161 ;; *** ENUM (name card32)) (define-rendering-command map-grid-1d 147 (u1 float64) (u2 float64) (un int32)) (define-rendering-command map-grid-1f 148 (un int32) (u1 float32) (u2 float32)) (define-rendering-command map-grid-2d 149 (u1 float64) (u2 float64) (v1 float64) (v2 float64) (un int32) (vn int32)) (define-rendering-command map-grid-2f 150 (un int32) (u1 float32) (u2 float32) (vn int32) (v1 float32) (v2 float32)) (define-rendering-command material-f 96 ;; *** ENUM (face card32) ;; *** ENUM (pname card32) (param float32)) (define-rendering-command material-fv 97 ;; *** ENUM (face card32) ;; *** ENUM (pname card32) (params (list float32 (ecase pname ((#.+ambient+ #.+diffuse+ #.+specular+ #.+emission+ #.+ambient-and-diffuse+) 4) ((#.+shininess+) 1) ((#.+color-index+) 3))))) (define-rendering-command material-i 98 ;; *** ENUM (face card32) ;; *** ENUM (pname card32) (param int32)) (define-rendering-command material-iv 99 ;; *** ENUM (face card32) ;; *** ENUM (pname card32) (params (list int32 (ecase pname ((#.+ambient+ #.+diffuse+ #.+specular+ #.+emission+ #.+ambient-and-diffuse+) 4) ((#.+shininess+) 1) ((#.+color-index+) 3))))) (define-rendering-command matrix-mode 179 ;; *** ENUM (mode card32)) (define-rendering-command minmax 4111 ;; *** ENUM (target card32) ;; *** ENUM (internalformat card32) (sink bool)) (define-rendering-command mult-matrix-d 181 (m (list float64 16))) (define-rendering-command mult-matrix-f 180 (m (list float32 16))) ;;; *** Note that TARGET is placed last for FLOAT64 versions. (define-rendering-command multi-tex-coord-1d-arb 198 (v-0 float64) ;; *** ENUM (target card32)) (define-rendering-command multi-tex-coord-1f-arb 199 ;; *** ENUM (target card32) (v-0 float32)) (define-rendering-command multi-tex-coord-1i-arb 200 ;; *** ENUM (target card32) (v-0 int32)) (define-rendering-command multi-tex-coord-1s-arb 201 ;; *** ENUM (target card32) (v-0 int16)) (define-rendering-command multi-tex-coord-2d-arb 202 ((v-0 v-1) float64) ;; *** ENUM (target card32)) (define-rendering-command multi-tex-coord-2f-arb 203 ;; *** ENUM (target card32) ((v-0 v-1) float32)) (define-rendering-command multi-tex-coord-2i-arb 204 ;; *** ENUM (target card32) ((v-0 v-1) int32)) (define-rendering-command multi-tex-coord-2s-arb 205 ;; *** ENUM (target card32) ((v-0 v-1) int16)) (define-rendering-command multi-tex-coord-3d-arb 206 ((v-0 v-1 v-2) float64) ;; *** ENUM (target card32)) (define-rendering-command multi-tex-coord-3f-arb 207 ;; *** ENUM (target card32) ((v-0 v-1 v-2) float32)) (define-rendering-command multi-tex-coord-3i-arb 208 ;; *** ENUM (target card32) ((v-0 v-1 v-2) int32)) (define-rendering-command multi-tex-coord-3s-arb 209 ;; *** ENUM (target card32) ((v-0 v-1 v-2) int16)) (define-rendering-command multi-tex-coord-4d-arb 210 ((v-0 v-1 v-2 v-3) float64) ;; *** ENUM (target card32)) (define-rendering-command multi-tex-coord-4f-arb 211 ;; *** ENUM (target card32) ((v-0 v-1 v-2 v-3) float32)) (define-rendering-command multi-tex-coord-4i-arb 212 ;; *** ENUM (target card32) ((v-0 v-1 v-2 v-3) int32)) (define-rendering-command multi-tex-coord-4s-arb 213 ;; *** ENUM (target card32) ((v-0 v-1 v-2 v-3) int16)) (define-rendering-command normal-3b 28 ((v-0 v-1 v-2) int8)) (define-rendering-command normal-3d 29 ((v-0 v-1 v-2) float64)) (define-rendering-command normal-3f 30 ((v-0 v-1 v-2) float32)) (define-rendering-command normal-3i 31 ((v-0 v-1 v-2) int32)) (define-rendering-command normal-3s 32 ((v-0 v-1 v-2) int16)) (define-rendering-command ortho 182 (left float64) (right float64) (bottom float64) (top float64) (z-near float64) (z-far float64)) (define-rendering-command pass-through 123 (token float32)) (define-rendering-command pixel-transfer-f 166 ;; *** ENUM (pname card32) (param float32)) (define-rendering-command pixel-transfer-i 167 ;; *** ENUM (pname card32) (param int32)) (define-rendering-command pixel-zoom 165 (xfactor float32) (yfactor float32)) (define-rendering-command point-size 100 (size float32)) (define-rendering-command polygon-mode 101 ;; *** ENUM (face card32) ;; *** ENUM (mode card32)) (define-rendering-command polygon-offset 192 (factor float32) (units float32)) (define-rendering-command pop-attrib 141) (define-rendering-command pop-matrix 183) (define-rendering-command pop-name 124) (define-rendering-command prioritize-textures 4118 (n int32) (textures (list card32 n)) (priorities (list float32 n))) (define-rendering-command push-attrib 142 ;; *** BITFIELD (mask card32)) (define-rendering-command push-matrix 184) (define-rendering-command push-name 125 (name card32)) (define-rendering-command raster-pos-2d 33 ((v-0 v-1) float64)) (define-rendering-command raster-pos-2f 34 ((v-0 v-1) float32)) (define-rendering-command raster-pos-2i 35 ((v-0 v-1) int32)) (define-rendering-command raster-pos-2s 36 ((v-0 v-1) int16)) (define-rendering-command raster-pos-3d 37 ((v-0 v-1 v-2) float64)) (define-rendering-command raster-pos-3f 38 ((v-0 v-1 v-2) float32)) (define-rendering-command raster-pos-3i 39 ((v-0 v-1 v-2) int32)) (define-rendering-command raster-pos-3s 40 ((v-0 v-1 v-2) int16)) (define-rendering-command raster-pos-4d 41 ((v-0 v-1 v-2 v-3) float64)) (define-rendering-command raster-pos-4f 42 ((v-0 v-1 v-2 v-3) float32)) (define-rendering-command raster-pos-4i 43 ((v-0 v-1 v-2 v-3) int32)) (define-rendering-command raster-pos-4s 44 ((v-0 v-1 v-2 v-3) int16)) (define-rendering-command read-buffer 171 ;; *** ENUM (mode card32)) (define-rendering-command rect-d 45 ((v1-0 v1-1 v2-0 v2-1) float64)) (define-rendering-command rect-f 46 ((v1-0 v1-1 v2-0 v2-1) float32)) (define-rendering-command rect-i 47 ((v1-0 v1-1 v2-0 v2-1) int32)) (define-rendering-command rect-s 48 ((v1-0 v1-1 v2-0 v2-1) int16)) (define-rendering-command reset-histogram 4112 ;; *** ENUM (target card32)) (define-rendering-command reset-minmax 4113 ;; *** ENUM (target card32)) (define-rendering-command rotate-d 185 ((angle x y z) float64)) (define-rendering-command rotate-f 186 ((angle x y z) float32)) (define-rendering-command scale-d 187 ((x y z) float64)) (define-rendering-command scale-f 188 ((x y z) float32)) (define-rendering-command scissor 103 ((x y width height) int32)) (define-rendering-command shade-model 104 ;; *** ENUM (mode card32)) (define-rendering-command stencil-func 162 ;; *** ENUM (func card32) (ref int32) (mask card32)) (define-rendering-command stencil-mask 133 (mask card32)) (define-rendering-command stencil-op 163 ;; *** ENUM (fail card32) ;; *** ENUM (zfail card32) ;; *** ENUM (zpass card32)) (define-rendering-command tex-env-f 111 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (param float32)) (define-rendering-command tex-env-fv 112 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (param (list float32 (ecase pname (#.+texture-env-mode+ 1) (#.+texture-env-color+ 4))))) (define-rendering-command tex-env-i 113 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (param int32)) (define-rendering-command tex-env-iv 114 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (param (list int32 (ecase pname (#.+texture-env-mode+ 1) (#.+texture-env-color+ 4))))) ;;; *** ;;; last there. (define-rendering-command tex-gen-d 115 (param float64) ;; *** ENUM (coord card32) ;; *** ENUM (pname card32)) (define-rendering-command tex-gen-dv 116 ;; *** ENUM (coord card32) ;; *** ENUM (pname card32) ;; +texture-gen-mode+ n=1 ;; +object-plane+ n=4 ;; +eye-plane+ n=1 (params (list float64 (ecase pname ((#.+texture-gen-mode+ #.+eye-plane+) 1) (#.+object-plane+ 4))))) (define-rendering-command tex-gen-f 117 ;; *** ENUM (coord card32) ;; *** ENUM (pname card32) (param float32)) (define-rendering-command tex-gen-fv 118 ;; *** ENUM (coord card32) ;; *** ENUM (pname card32) (params (list float32 (ecase pname ((#.+texture-gen-mode+ #.+eye-plane+) 1) (#.+object-plane+ 4))))) (define-rendering-command tex-gen-i 119 ;; *** ENUM (coord card32) ;; *** ENUM (pname card32) (param int32)) (define-rendering-command tex-gen-iv 120 ;; *** ENUM (coord card32) ;; *** ENUM (pname card32) (params (list int32 (ecase pname ((#.+texture-gen-mode+ #.+eye-plane+) 1) (#.+object-plane+ 4))))) (define-rendering-command tex-parameter-f 105 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (param float32)) (define-rendering-command tex-parameter-fv 106 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (params (list float32 (ecase pname ((#.+texture-border-color+) 4) ((#.+texture-mag-filter+ #.+texture-min-filter+ #.+texture-wrap-s+ #.+texture-wrap-t+) 1))))) (define-rendering-command tex-parameter-i 107 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (param int32)) (define-rendering-command tex-parameter-iv 108 ;; *** ENUM (target card32) ;; *** ENUM (pname card32) (params (list int32 (ecase pname ((#.+texture-border-color+) 4) ((#.+texture-mag-filter+ #.+texture-min-filter+ #.+texture-wrap-s+ #.+texture-wrap-t+) 1))))) (define-rendering-command translate-d 189 ((x y z) float64)) (define-rendering-command translate-f 190 ((x y z) float32)) (define-rendering-command vertex-2d 65 ((x y) float64)) (define-rendering-command vertex-2f 66 ((x y) float32)) (define-rendering-command vertex-2i 67 ((x y) int32)) (define-rendering-command vertex-2s 68 ((x y) int16)) (define-rendering-command vertex-3d 69 ((x y z) float64)) (define-rendering-command vertex-3f 70 ((x y z) float32)) (define-rendering-command vertex-3i 71 ((x y z) int32)) (define-rendering-command vertex-3s 72 ((x y z) int16)) (define-rendering-command vertex-4d 73 ((x y z w) float64)) (define-rendering-command vertex-4f 74 ((x y z w) float32)) (define-rendering-command vertex-4i 75 ((x y z w) int32)) (define-rendering-command vertex-4s 76 ((x y z w) int16)) (define-rendering-command viewport 191 ((x y width height) int32)) ;;; Potentially lerge rendering commands. #-(and) (define-large-rendering-command call-lists 2 (n int32) ;; *** ENUM (type card32) (lists (list type n))) ;;; Requests for GL non-rendering commands. (defun new-list (list mode) (assert (context-p *current-context*) (*current-context*) "~S is not a context." *current-context*) (let* ((ctx *current-context*) (display (context-display ctx))) (with-buffer-request (display (extension-opcode display "GLX")) (data +new-list+) ;; *** GLX_CONTEXT_TAG (card32 (context-tag ctx)) (card32 list) ;; *** ENUM (card32 mode)))) (defun gen-lists (range) (assert (context-p *current-context*) (*current-context*) "~S is not a context." *current-context*) (let* ((ctx *current-context*) (display (context-display ctx))) (with-buffer-request-and-reply (display (extension-opcode display "GLX") nil) ((data +gen-lists+) ;; *** GLX_CONTEXT_TAG (card32 (context-tag ctx)) (integer range)) (card32-get 8)))) (defun end-list () (assert (context-p *current-context*) (*current-context*) "~S is not a context." *current-context*) (let* ((ctx *current-context*) (display (context-display ctx))) (with-buffer-request (display (extension-opcode display "GLX")) (data +end-list+) ;; *** GLX_CONTEXT_TAG (card32 (context-tag ctx))))) (defun enable (cap) (assert (context-p *current-context*) (*current-context*) "~S is not a context." *current-context*) (let* ((ctx *current-context*) (display (context-display ctx))) (with-buffer-request-and-reply (display (extension-opcode display "GLX") nil) ((data +enable+) ;; *** GLX_CONTEXT_TAG (card32 (context-tag ctx)) ;; *** ENUM? (card32 cap))))) ;;; FIXME: FLUSH and FINISH should send *all* buffered data, including ;;; buffered rendering commands. (defun flush () (assert (context-p *current-context*) (*current-context*) "~S is not a context." *current-context*) (let* ((ctx *current-context*) (display (context-display ctx))) (with-buffer-request (display (extension-opcode display "GLX")) (data +flush+) ;; *** GLX_CONTEXT_TAG (card32 (context-tag ctx))))) (defun finish () (assert (context-p *current-context*) (*current-context*) "~S is not a context." *current-context*) (let* ((ctx *current-context*) (display (context-display ctx))) (with-buffer-request-and-reply (display (extension-opcode display "GLX") nil) ((data +finish+) ;; *** GLX_CONTEXT_TAG (card32 (context-tag ctx))))))