#lang scribble/doc @(require "common.ss" scribble/bnf scribble/eval (for-syntax racket/base)) @title[#:tag "gl"]{C-Style OpenGL} @defmodule[sgl/gl] The @racketmodname[sgl/gl] module provides a direct interface to the system's GL library closely following the conventions of the C-language OpenGL API. It provides a binding for each @tt{#defined} constant (these start with @racketidfont{GL_}) and for the functions in the GL 1.5 and GLU 1.3 specifications, except for the following: @itemize[#:style 'compact @item{Vertex arrays (GL 1.5, Section 2.8)} @item{Buffer objects (GL 1.5, Section 2.9)} @item{@tt{glGetPointerv} (GL 1.5, Section 6.1.11)} @item{Buffer object queries (GL 1.5, Section 6.1.13)} @item{Polygon tessellation (GLU 1.3, Section 5)} @item{@tt{gluQuadricCallback} (GLU 1.3, Section 6.2)} @item{NURBS (GLU 1.3, Section 7)} ] If one of the provided functions is not present on your system (e.g. if your system supports only GL 1.3), then the corresponding @racketmodname[sgl/gl] function raises a run-time exception when invoked. The functions provided by @racketmodname[sgl/gl] perform comparable checking to their C-language counterparts; they check the types of their arguments, but do not check the length of array arguments. The following details the kinds of Racket values that can be provided for each primitive OpenGL type: @itemize[ @item{@as-index{@tt{GLbyte}}, @as-index{@tt{GLshort}}, @as-index{@tt{GLint}}: exact integer in the proper range} @item{@as-index{@tt{GLubyte}}, @as-index{@tt{GLushort}}, @as-index{@tt{GLuint}}: exact non-negative integer in the proper range} @item{@as-index{@tt{GLsizei}}, @as-index{@tt{GLenum}}, @as-index{@tt{GLbitfield}}: exact non-negative integer in the proper range} @item{@as-index{@tt{GFfloat}}, @as-index{@tt{GLdouble}}: real number} @item{@as-index{@tt{GFclampf}}, @as-index{@tt{GLclampd}}: real number} @item{@as-index{@tt{GLboolean}}: any value, where @racket[#f] means @as-index{@tt{GL_FALSE}} and all other values mean @as-index{@tt{GL_TRUE}}; do not use @racket[GL_FALSE] or @racket[GL_TRUE], since they are bound to integers, both will end up being converted to GL_TRUE.} ] OpenGL functions that take vector arguments accept @racket[cvector] values. The type of the @racket[cvector] is checked; for example, @tt{glVertex3fv} expects a vector of @tt{GLfloats}, so @racket[glVertex3fv] accepts only a @racket[cvector] containing reals. See also @racketmodname[sgl/gl-vectors]. Functions that accept arrays of type @tt{void*} accept any @racket[cvector]; you must ensure that you supply the proper kind of vector, as in the C-language OpenGL API. @as-examples[ @racketblock[ (require sgl/gl sgl/gl-vectors) (glBegin GL_TRIANGLES) (glVertex3i 1 2 3) (glVertex4fv (gl-float-vector 1 2 3 4)) (glEnd) ]] @(define-syntax-rule (def-C-gl (id ...) body ...) @deftogether[( @defthing[id procedure?] ... ) body ...]) @def-C-gl[( glPixelMapfv glPixelMapuiv glPixelMapusv glDeleteTextures glDeleteQueries )]{ These functions do not take a size argument, because it is derived from the length of the argument vector.} @def-C-gl[( glGenTextures glGenQueries )]{ These functions do not take vector arguments. Instead, they allocate a vector of the requested size and return it.} @def-C-gl[( glAreTexturesResident )]{ This function takes in a @tt{GLuint} vector and textures, and it returns 2 values: the specified boolean and a boolean vector of residences.} @def-C-gl[( glGetBooleanv glGetIntegerv glGetFloatv glGetDoublev glGetLightfv glGetLightiv glGetMaterialfv glGetMaterialiv glGetTexEnvfv glGetTexEnviv glGetTexGendv glGetTexGenfv glGetTexGeniv glGetTexParameterfv glGetTexParameteriv glGetTexLevelParameterfv glGetTexLevelParameteriv glGetPixelMapfv glGetPixelMapuiv glGetPixelMapusv glGetMapdv glGetMapfv glGetMapiv glGetBufferParameteriv glGetConvolutionParameterfv glGetConvolutionParameteriv glGetHistogramParameterfv glGetHistogramParameteriv glGetMinmaxParameterfv glGetMinmaxParameteriv glGetQueryiv glGetQueryObjectiv glGetQueryObjectuiv )]{ Instead of taking a vector argument, these function take an integer argument that specifies the size of the vector that is returned.} @def-C-gl[( glGetClipPlane )]{ This function does not take a vector argument and returns a @tt{GLdouble} vector of length 4.} @def-C-gl[( glGetString gluCheckExtension gluErrorString gluGetString )]{ These functions deal with strings instead of @tt{GLubyte} vectors.} @def-C-gl[( gluProject gluUnProject gluUnProject4 )]{ Instead of taking pointers to @tt{GLdoubles} for return values, these function directly return @tt{GLdouble} vectors.} @def-C-gl[( glSelectBuffer glFeedbackBuffer )]{ These functions do not take vectors, instead they return a @racket[selection-buffer-object] or @racket[feedback-buffer-object]. The @racket[select-buffer->gl-uint-vector] and @racket[feedback-buffer->gl-float-vector] functions copy the contents of the buffer into a vector. Because the OpenGL library writes to the buffer-object on OpenGL function calls after @tt{glSelectBuffer} or @tt{glFeedbackBuffer} has returned, if the buffer is garbage collected before OpenGL is finished writing to it, the entire Racket system can crash. The @racket[gl-process-selection] function in @racketmodname[sgl] helps interpret the results of @tt{glSelectBuffer} in a Racket-friendly format.} @def-C-gl[( glAccum glActiveTexture glAlphaFunc glBegin glBeginQuery glBindTexture glBitmap glBlendColor glBlendEquation glBlendFunc glBlendFuncSeparate glCallList glCallLists glClear glClearAccum glClearColor glClearDepth glClearIndex glClearStencil glClipPlane glColor3b glColor3bv glColor3d glColor3dv glColor3f glColor3fv glColor3i glColor3iv glColor3s glColor3sv glColor3ub glColor3ubv glColor3ui glColor3uiv glColor3us glColor3usv glColor4b glColor4bv glColor4d glColor4dv glColor4f glColor4fv glColor4i glColor4iv glColor4s glColor4sv glColor4ub glColor4ubv glColor4ui glColor4uiv glColor4us glColor4usv glColorMask glColorMaterial glColorSubTable glColorTable glColorTableParameterfv glColorTableParameteriv glCompressedTexImage1D glCompressedTexImage2D glCompressedTexImage3D glCompressedTexSubImage1D glCompressedTexSubImage2D glCompressedTexSubImage3D glConvolutionFilter1D glConvolutionFilter2D glConvolutionParameterf glConvolutionParameterfv glConvolutionParameteri glConvolutionParameteriv glCopyColorSubTable glCopyColorTable glCopyConvolutionFilter1D glCopyConvolutionFilter2D glCopyPixels glCopyTexImage1D glCopyTexImage2D glCopyTexSubImage1D glCopyTexSubImage2D glCopyTexSubImage3D glCullFace glDeleteLists glDepthFunc glDepthMask glDepthRange glDisable glDrawBuffer glDrawPixels glEdgeFlag glEdgeFlagv glEnable glEnd glEndList glEndQuery glEvalCoord1d glEvalCoord1dv glEvalCoord1f glEvalCoord1fv glEvalCoord2d glEvalCoord2dv glEvalCoord2f glEvalCoord2fv glEvalMesh1 glEvalMesh2 glEvalPoint1 glEvalPoint2 glFinish glFlush glFogCoordd glFogCoorddv glFogCoordf glFogCoordfv glFogf glFogfv glFogi glFogiv glFrontFace glFrustum glGenLists glGetColorTable glGetCompressedTexImage glGetConvolutionFilter glGetError glGetHistogram glGetMinmax glGetPolygonStipple glGetSeparableFilter glGetTexImage glHint glHistogram glIndexMask glIndexd glIndexdv glIndexf glIndexfv glIndexi glIndexiv glIndexs glIndexsv glIndexub glIndexubv glInitNames glIsBuffer glIsEnabled glIsList glIsQuery glIsTexture glLightModelf glLightModelfv glLightModeli glLightModeliv glLightf glLightfv glLighti glLightiv glLineStipple glLineWidth glListBase glLoadIdentity glLoadMatrixd glLoadMatrixf glLoadName glLoadTransposeMatrixd glLoadTransposeMatrixf glLogicOp glMap1d glMap1f glMap2d glMap2f glMapGrid1d glMapGrid1f glMapGrid2d glMapGrid2f glMaterialf glMaterialfv glMateriali glMaterialiv glMatrixMode glMinmax glMultMatrixd glMultMatrixf glMultTransposeMatrixd glMultTransposeMatrixf glMultiTexCoord1d glMultiTexCoord1dv glMultiTexCoord1f glMultiTexCoord1fv glMultiTexCoord1i glMultiTexCoord1iv glMultiTexCoord1s glMultiTexCoord1sv glMultiTexCoord2d glMultiTexCoord2dv glMultiTexCoord2f glMultiTexCoord2fv glMultiTexCoord2i glMultiTexCoord2iv glMultiTexCoord2s glMultiTexCoord2sv glMultiTexCoord3d glMultiTexCoord3dv glMultiTexCoord3f glMultiTexCoord3fv glMultiTexCoord3i glMultiTexCoord3iv glMultiTexCoord3s glMultiTexCoord3sv glMultiTexCoord4d glMultiTexCoord4dv glMultiTexCoord4f glMultiTexCoord4fv glMultiTexCoord4i glMultiTexCoord4iv glMultiTexCoord4s glMultiTexCoord4sv glNewList glNormal3b glNormal3bv glNormal3d glNormal3dv glNormal3f glNormal3fv glNormal3i glNormal3iv glNormal3s glNormal3sv glOrtho glPassThrough glPixelStoref glPixelStorei glPixelTransferf glPixelTransferi glPixelZoom glPointParameterf glPointParameterfv glPointParameteri glPointParameteriv glPointSize glPolygonMode glPolygonOffset glPolygonStipple glPopAttrib glPopClientAttrib glPopMatrix glPopName glPushAttrib glPushClientAttrib glPushMatrix glPushName glRasterPos2d glRasterPos2dv glRasterPos2f glRasterPos2fv glRasterPos2i glRasterPos2iv glRasterPos2s glRasterPos2sv glRasterPos3d glRasterPos3dv glRasterPos3f glRasterPos3fv glRasterPos3i glRasterPos3iv glRasterPos3s glRasterPos3sv glRasterPos4d glRasterPos4dv glRasterPos4f glRasterPos4fv glRasterPos4i glRasterPos4iv glRasterPos4s glRasterPos4sv glReadBuffer glReadPixels glRectd glRectdv glRectf glRectfv glRecti glRectiv glRects glRectsv glRenderMode glResetHistogram glResetMinmax glRotated glRotatef glSampleCoverage glScaled glScalef glScissor glSecondaryColor3b glSecondaryColor3bv glSecondaryColor3d glSecondaryColor3dv glSecondaryColor3f glSecondaryColor3fv glSecondaryColor3i glSecondaryColor3iv glSecondaryColor3s glSecondaryColor3sv glSecondaryColor3ub glSecondaryColor3ubv glSecondaryColor3ui glSecondaryColor3uiv glSecondaryColor3us glSecondaryColor3usv glSeparableFilter2D glShadeModel glStencilFunc glStencilMask glStencilOp glTexCoord1d glTexCoord1dv glTexCoord1f glTexCoord1fv glTexCoord1i glTexCoord1iv glTexCoord1s glTexCoord1sv glTexCoord2d glTexCoord2dv glTexCoord2f glTexCoord2fv glTexCoord2i glTexCoord2iv glTexCoord2s glTexCoord2sv glTexCoord3d glTexCoord3dv glTexCoord3f glTexCoord3fv glTexCoord3i glTexCoord3iv glTexCoord3s glTexCoord3sv glTexCoord4d glTexCoord4dv glTexCoord4f glTexCoord4fv glTexCoord4i glTexCoord4iv glTexCoord4s glTexCoord4sv glTexEnvf glTexEnvfv glTexEnvi glTexEnviv glTexGend glTexGendv glTexGenf glTexGenfv glTexGeni glTexGeniv glTexImage1D glTexImage2D glTexImage3D glTexParameterf glTexParameterfv glTexParameteri glTexParameteriv glTexSubImage1D glTexSubImage2D glTexSubImage3D glTranslated glTranslatef glVertex2d glVertex2dv glVertex2f glVertex2fv glVertex2i glVertex2iv glVertex2s glVertex2sv glVertex3d glVertex3dv glVertex3f glVertex3fv glVertex3i glVertex3iv glVertex3s glVertex3sv glVertex4d glVertex4dv glVertex4f glVertex4fv glVertex4i glVertex4iv glVertex4s glVertex4sv glViewport glWindowPos2d glWindowPos2dv glWindowPos2f glWindowPos2fv glWindowPos2i glWindowPos2iv glWindowPos2s glWindowPos2sv glWindowPos3d glWindowPos3dv glWindowPos3f glWindowPos3fv glWindowPos3i glWindowPos3iv glWindowPos3s glWindowPos3sv gluBuild1DMipmapLevels gluBuild1DMipmaps gluBuild2DMipmapLevels gluBuild2DMipmaps gluBuild3DMipmapLevels gluBuild3DMipmaps gluCylinder gluDisk gluLookAt gluNewQuadric gluOrtho2D gluPartialDisk gluPerspective gluPickMatrix gluQuadricDrawStyle gluQuadricNormals gluQuadricOrientation gluQuadricTexture gluScaleImage gluSphere )]{ These functions are all direct translations of the C OpenGL API.} @(define-syntax def-one-thing (syntax-rules () [(_ [id pred]) @defthing[id pred]] [(_ id) @defthing[id exact-integer?]])) @(define-syntax-rule (def-C-const (decl ...) body ...) @deftogether[( @def-one-thing[decl] ... ) body ...]) @def-C-const[( GL_FALSE GL_TRUE GL_BYTE GL_UNSIGNED_BYTE GL_SHORT GL_UNSIGNED_SHORT GL_INT GL_UNSIGNED_INT GL_FLOAT GL_DOUBLE GL_2_BYTES GL_3_BYTES GL_4_BYTES GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON GL_VERTEX_ARRAY GL_NORMAL_ARRAY GL_COLOR_ARRAY GL_INDEX_ARRAY GL_TEXTURE_COORD_ARRAY GL_EDGE_FLAG_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_TYPE GL_VERTEX_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMAL_ARRAY_STRIDE GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_TYPE GL_COLOR_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_COORD_ARRAY_STRIDE GL_EDGE_FLAG_ARRAY_STRIDE GL_VERTEX_ARRAY_POINTER GL_NORMAL_ARRAY_POINTER GL_COLOR_ARRAY_POINTER GL_INDEX_ARRAY_POINTER GL_TEXTURE_COORD_ARRAY_POINTER GL_EDGE_FLAG_ARRAY_POINTER GL_V2F GL_V3F GL_C4UB_V2F GL_C4UB_V3F GL_C3F_V3F GL_N3F_V3F GL_C4F_N3F_V3F GL_T2F_V3F GL_T4F_V4F GL_T2F_C4UB_V3F GL_T2F_C3F_V3F GL_T2F_N3F_V3F GL_T2F_C4F_N3F_V3F GL_T4F_C4F_N3F_V4F GL_MATRIX_MODE GL_MODELVIEW GL_PROJECTION GL_TEXTURE GL_POINT_SMOOTH GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_LINE_SMOOTH GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_POINT GL_LINE GL_FILL GL_CW GL_CCW GL_FRONT GL_BACK GL_POLYGON_MODE GL_POLYGON_SMOOTH GL_POLYGON_STIPPLE GL_EDGE_FLAG GL_CULL_FACE GL_CULL_FACE_MODE GL_FRONT_FACE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_UNITS GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_FILL GL_COMPILE GL_COMPILE_AND_EXECUTE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_NEVER GL_LESS GL_EQUAL GL_LEQUAL GL_GREATER GL_NOTEQUAL GL_GEQUAL GL_ALWAYS GL_DEPTH_TEST GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_WRITEMASK GL_DEPTH_COMPONENT GL_LIGHTING GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_SHININESS GL_EMISSION GL_POSITION GL_SPOT_DIRECTION GL_AMBIENT_AND_DIFFUSE GL_COLOR_INDEXES GL_LIGHT_MODEL_TWO_SIDE GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_AMBIENT GL_FRONT_AND_BACK GL_SHADE_MODEL GL_FLAT GL_SMOOTH GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_NORMALIZE GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_ACCUM_RED_BITS GL_ACCUM_GREEN_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_ALPHA_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM GL_ADD GL_LOAD GL_MULT GL_RETURN GL_ALPHA_TEST GL_ALPHA_TEST_REF GL_ALPHA_TEST_FUNC GL_BLEND GL_BLEND_SRC GL_BLEND_DST GL_ZERO GL_ONE GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA GL_DST_ALPHA GL_ONE_MINUS_DST_ALPHA GL_DST_COLOR GL_ONE_MINUS_DST_COLOR GL_SRC_ALPHA_SATURATE GL_FEEDBACK GL_RENDER GL_SELECT GL_2D GL_3D GL_3D_COLOR GL_3D_COLOR_TEXTURE GL_4D_COLOR_TEXTURE GL_POINT_TOKEN GL_LINE_TOKEN GL_LINE_RESET_TOKEN GL_POLYGON_TOKEN GL_BITMAP_TOKEN GL_DRAW_PIXEL_TOKEN GL_COPY_PIXEL_TOKEN GL_PASS_THROUGH_TOKEN GL_FEEDBACK_BUFFER_POINTER GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_SELECTION_BUFFER_POINTER GL_SELECTION_BUFFER_SIZE GL_FOG GL_FOG_MODE GL_FOG_DENSITY GL_FOG_COLOR GL_FOG_INDEX GL_FOG_START GL_FOG_END GL_LINEAR GL_EXP GL_EXP2 GL_LOGIC_OP GL_INDEX_LOGIC_OP GL_COLOR_LOGIC_OP GL_LOGIC_OP_MODE GL_CLEAR GL_SET GL_COPY GL_COPY_INVERTED GL_NOOP GL_INVERT GL_AND GL_NAND GL_OR GL_NOR GL_XOR GL_EQUIV GL_AND_REVERSE GL_AND_INVERTED GL_OR_REVERSE GL_OR_INVERTED GL_STENCIL_TEST GL_STENCIL_WRITEMASK GL_STENCIL_BITS GL_STENCIL_FUNC GL_STENCIL_VALUE_MASK GL_STENCIL_REF GL_STENCIL_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_CLEAR_VALUE GL_STENCIL_INDEX GL_KEEP GL_REPLACE GL_INCR GL_DECR GL_NONE GL_LEFT GL_RIGHT GL_FRONT_LEFT GL_FRONT_RIGHT GL_BACK_LEFT GL_BACK_RIGHT GL_AUX0 GL_AUX1 GL_AUX2 GL_AUX3 GL_COLOR_INDEX GL_RED GL_GREEN GL_BLUE GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GL_ALPHA_BITS GL_RED_BITS GL_GREEN_BITS GL_BLUE_BITS GL_INDEX_BITS GL_SUBPIXEL_BITS GL_AUX_BUFFERS GL_READ_BUFFER GL_DRAW_BUFFER GL_DOUBLEBUFFER GL_STEREO GL_BITMAP GL_COLOR GL_DEPTH GL_STENCIL GL_DITHER GL_RGB GL_RGBA GL_MAX_LIST_NESTING GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_CLIP_PLANES GL_MAX_TEXTURE_SIZE GL_MAX_PIXEL_MAP_TABLE GL_MAX_VIEWPORT_DIMS GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_ATTRIB_STACK_DEPTH GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_CLEAR_VALUE GL_COLOR_WRITEMASK GL_CURRENT_INDEX GL_CURRENT_COLOR GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_TEXTURE_COORDS GL_INDEX_CLEAR_VALUE GL_INDEX_MODE GL_INDEX_WRITEMASK GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_RENDER_MODE GL_RGBA_MODE GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_VIEWPORT GL_AUTO_NORMAL GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_COEFF GL_DOMAIN GL_ORDER GL_FOG_HINT GL_LINE_SMOOTH_HINT GL_PERSPECTIVE_CORRECTION_HINT GL_POINT_SMOOTH_HINT GL_POLYGON_SMOOTH_HINT GL_DONT_CARE GL_FASTEST GL_NICEST GL_SCISSOR_TEST GL_SCISSOR_BOX GL_MAP_COLOR GL_MAP_STENCIL GL_INDEX_SHIFT GL_INDEX_OFFSET GL_RED_SCALE GL_RED_BIAS GL_GREEN_SCALE GL_GREEN_BIAS GL_BLUE_SCALE GL_BLUE_BIAS GL_ALPHA_SCALE GL_ALPHA_BIAS GL_DEPTH_SCALE GL_DEPTH_BIAS GL_PIXEL_MAP_S_TO_S_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_S_TO_S GL_PIXEL_MAP_I_TO_I GL_PIXEL_MAP_I_TO_R GL_PIXEL_MAP_I_TO_G GL_PIXEL_MAP_I_TO_B GL_PIXEL_MAP_I_TO_A GL_PIXEL_MAP_R_TO_R GL_PIXEL_MAP_G_TO_G GL_PIXEL_MAP_B_TO_B GL_PIXEL_MAP_A_TO_A GL_PACK_ALIGNMENT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_UNPACK_ALIGNMENT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_ZOOM_X GL_ZOOM_Y GL_TEXTURE_ENV GL_TEXTURE_ENV_MODE GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_FILTER GL_TEXTURE_ENV_COLOR GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_GEN_MODE GL_TEXTURE_BORDER_COLOR GL_TEXTURE_WIDTH GL_TEXTURE_HEIGHT GL_TEXTURE_BORDER GL_TEXTURE_COMPONENTS GL_TEXTURE_RED_SIZE GL_TEXTURE_GREEN_SIZE GL_TEXTURE_BLUE_SIZE GL_TEXTURE_ALPHA_SIZE GL_TEXTURE_LUMINANCE_SIZE GL_TEXTURE_INTENSITY_SIZE GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR GL_OBJECT_LINEAR GL_OBJECT_PLANE GL_EYE_LINEAR GL_EYE_PLANE GL_SPHERE_MAP GL_DECAL GL_MODULATE GL_NEAREST GL_REPEAT GL_CLAMP GL_S GL_T GL_R GL_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_Q GL_VENDOR GL_RENDERER GL_VERSION GL_EXTENSIONS GL_NO_ERROR GL_INVALID_VALUE GL_INVALID_ENUM GL_INVALID_OPERATION GL_STACK_OVERFLOW GL_STACK_UNDERFLOW GL_OUT_OF_MEMORY GL_CURRENT_BIT GL_POINT_BIT GL_LINE_BIT GL_POLYGON_BIT GL_POLYGON_STIPPLE_BIT GL_PIXEL_MODE_BIT GL_LIGHTING_BIT GL_FOG_BIT GL_DEPTH_BUFFER_BIT GL_ACCUM_BUFFER_BIT GL_STENCIL_BUFFER_BIT GL_VIEWPORT_BIT GL_TRANSFORM_BIT GL_ENABLE_BIT GL_COLOR_BUFFER_BIT GL_HINT_BIT GL_EVAL_BIT GL_LIST_BIT GL_TEXTURE_BIT GL_SCISSOR_BIT GL_ALL_ATTRIB_BITS GL_PROXY_TEXTURE_1D GL_PROXY_TEXTURE_2D GL_TEXTURE_PRIORITY GL_TEXTURE_RESIDENT GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_INTERNAL_FORMAT GL_ALPHA4 GL_ALPHA8 GL_ALPHA12 GL_ALPHA16 GL_LUMINANCE4 GL_LUMINANCE8 GL_LUMINANCE12 GL_LUMINANCE16 GL_LUMINANCE4_ALPHA4 GL_LUMINANCE6_ALPHA2 GL_LUMINANCE8_ALPHA8 GL_LUMINANCE12_ALPHA4 GL_LUMINANCE12_ALPHA12 GL_LUMINANCE16_ALPHA16 GL_INTENSITY GL_INTENSITY4 GL_INTENSITY8 GL_INTENSITY12 GL_INTENSITY16 GL_R3_G3_B2 GL_RGB4 GL_RGB5 GL_RGB8 GL_RGB10 GL_RGB12 GL_RGB16 GL_RGBA2 GL_RGBA4 GL_RGB5_A1 GL_RGBA8 GL_RGB10_A2 GL_RGBA12 GL_RGBA16 GL_CLIENT_PIXEL_STORE_BIT GL_CLIENT_VERTEX_ARRAY_BIT GL_ALL_CLIENT_ATTRIB_BITS GL_CLIENT_ALL_ATTRIB_BITS GL_UNSIGNED_BYTE_3_3_2 GL_UNSIGNED_SHORT_4_4_4_4 GL_UNSIGNED_SHORT_5_5_5_1 GL_UNSIGNED_INT_8_8_8_8 GL_UNSIGNED_INT_10_10_10_2 GL_RESCALE_NORMAL GL_TEXTURE_BINDING_3D GL_PACK_SKIP_IMAGES GL_PACK_IMAGE_HEIGHT GL_UNPACK_SKIP_IMAGES GL_UNPACK_IMAGE_HEIGHT GL_TEXTURE_3D GL_PROXY_TEXTURE_3D GL_TEXTURE_DEPTH GL_TEXTURE_WRAP_R GL_MAX_3D_TEXTURE_SIZE GL_UNSIGNED_BYTE_2_3_3_REV GL_UNSIGNED_SHORT_5_6_5 GL_UNSIGNED_SHORT_5_6_5_REV GL_UNSIGNED_SHORT_4_4_4_4_REV GL_UNSIGNED_SHORT_1_5_5_5_REV GL_UNSIGNED_INT_8_8_8_8_REV GL_UNSIGNED_INT_2_10_10_10_REV GL_BGR GL_BGRA GL_MAX_ELEMENTS_VERTICES GL_MAX_ELEMENTS_INDICES GL_CLAMP_TO_EDGE GL_TEXTURE_MIN_LOD GL_TEXTURE_MAX_LOD GL_TEXTURE_BASE_LEVEL GL_TEXTURE_MAX_LEVEL GL_LIGHT_MODEL_COLOR_CONTROL GL_SINGLE_COLOR GL_SEPARATE_SPECULAR_COLOR GL_SMOOTH_POINT_SIZE_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_ALIASED_POINT_SIZE_RANGE GL_ALIASED_LINE_WIDTH_RANGE GL_CONSTANT_COLOR GL_ONE_MINUS_CONSTANT_COLOR GL_CONSTANT_ALPHA GL_ONE_MINUS_CONSTANT_ALPHA GL_BLEND_COLOR GL_FUNC_ADD GL_MIN GL_MAX GL_BLEND_EQUATION GL_FUNC_SUBTRACT GL_FUNC_REVERSE_SUBTRACT GL_CONVOLUTION_1D GL_CONVOLUTION_2D GL_SEPARABLE_2D GL_CONVOLUTION_BORDER_MODE GL_CONVOLUTION_FILTER_SCALE GL_CONVOLUTION_FILTER_BIAS GL_REDUCE GL_CONVOLUTION_FORMAT GL_CONVOLUTION_WIDTH GL_CONVOLUTION_HEIGHT GL_MAX_CONVOLUTION_WIDTH GL_MAX_CONVOLUTION_HEIGHT GL_POST_CONVOLUTION_RED_SCALE GL_POST_CONVOLUTION_GREEN_SCALE GL_POST_CONVOLUTION_BLUE_SCALE GL_POST_CONVOLUTION_ALPHA_SCALE GL_POST_CONVOLUTION_RED_BIAS GL_POST_CONVOLUTION_GREEN_BIAS GL_POST_CONVOLUTION_BLUE_BIAS GL_POST_CONVOLUTION_ALPHA_BIAS GL_HISTOGRAM GL_PROXY_HISTOGRAM GL_HISTOGRAM_WIDTH GL_HISTOGRAM_FORMAT GL_HISTOGRAM_RED_SIZE GL_HISTOGRAM_GREEN_SIZE GL_HISTOGRAM_BLUE_SIZE GL_HISTOGRAM_ALPHA_SIZE GL_HISTOGRAM_LUMINANCE_SIZE GL_HISTOGRAM_SINK GL_MINMAX GL_MINMAX_FORMAT GL_MINMAX_SINK GL_TABLE_TOO_LARGE GL_COLOR_MATRIX GL_COLOR_MATRIX_STACK_DEPTH GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_POST_COLOR_MATRIX_RED_SCALE GL_POST_COLOR_MATRIX_GREEN_SCALE GL_POST_COLOR_MATRIX_BLUE_SCALE GL_POST_COLOR_MATRIX_ALPHA_SCALE GL_POST_COLOR_MATRIX_RED_BIAS GL_POST_COLOR_MATRIX_GREEN_BIAS GL_POST_COLOR_MATRIX_BLUE_BIAS GL_POST_COLOR_MATRIX_ALPHA_BIAS GL_COLOR_TABLE GL_POST_CONVOLUTION_COLOR_TABLE GL_POST_COLOR_MATRIX_COLOR_TABLE GL_PROXY_COLOR_TABLE GL_PROXY_POST_CONVOLUTION_COLOR_TABLE GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE GL_COLOR_TABLE_SCALE GL_COLOR_TABLE_BIAS GL_COLOR_TABLE_FORMAT GL_COLOR_TABLE_WIDTH GL_COLOR_TABLE_RED_SIZE GL_COLOR_TABLE_GREEN_SIZE GL_COLOR_TABLE_BLUE_SIZE GL_COLOR_TABLE_ALPHA_SIZE GL_COLOR_TABLE_LUMINANCE_SIZE GL_COLOR_TABLE_INTENSITY_SIZE GL_CONSTANT_BORDER GL_REPLICATE_BORDER GL_CONVOLUTION_BORDER_COLOR GL_TEXTURE0 GL_TEXTURE1 GL_TEXTURE2 GL_TEXTURE3 GL_TEXTURE4 GL_TEXTURE5 GL_TEXTURE6 GL_TEXTURE7 GL_TEXTURE8 GL_TEXTURE9 GL_TEXTURE10 GL_TEXTURE11 GL_TEXTURE12 GL_TEXTURE13 GL_TEXTURE14 GL_TEXTURE15 GL_TEXTURE16 GL_TEXTURE17 GL_TEXTURE18 GL_TEXTURE19 GL_TEXTURE20 GL_TEXTURE21 GL_TEXTURE22 GL_TEXTURE23 GL_TEXTURE24 GL_TEXTURE25 GL_TEXTURE26 GL_TEXTURE27 GL_TEXTURE28 GL_TEXTURE29 GL_TEXTURE30 GL_TEXTURE31 GL_ACTIVE_TEXTURE GL_CLIENT_ACTIVE_TEXTURE GL_MAX_TEXTURE_UNITS GL_TRANSPOSE_MODELVIEW_MATRIX GL_TRANSPOSE_PROJECTION_MATRIX GL_TRANSPOSE_TEXTURE_MATRIX GL_TRANSPOSE_COLOR_MATRIX GL_MULTISAMPLE GL_SAMPLE_ALPHA_TO_COVERAGE GL_SAMPLE_ALPHA_TO_ONE GL_SAMPLE_COVERAGE GL_SAMPLE_BUFFERS GL_SAMPLES GL_SAMPLE_COVERAGE_VALUE GL_SAMPLE_COVERAGE_INVERT GL_MULTISAMPLE_BIT GL_NORMAL_MAP GL_REFLECTION_MAP GL_TEXTURE_CUBE_MAP GL_TEXTURE_BINDING_CUBE_MAP GL_TEXTURE_CUBE_MAP_POSITIVE_X GL_TEXTURE_CUBE_MAP_NEGATIVE_X GL_TEXTURE_CUBE_MAP_POSITIVE_Y GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GL_TEXTURE_CUBE_MAP_POSITIVE_Z GL_TEXTURE_CUBE_MAP_NEGATIVE_Z GL_PROXY_TEXTURE_CUBE_MAP GL_MAX_CUBE_MAP_TEXTURE_SIZE GL_COMPRESSED_ALPHA GL_COMPRESSED_LUMINANCE GL_COMPRESSED_LUMINANCE_ALPHA GL_COMPRESSED_INTENSITY GL_COMPRESSED_RGB GL_COMPRESSED_RGBA GL_TEXTURE_COMPRESSION_HINT GL_TEXTURE_COMPRESSED_IMAGE_SIZE GL_TEXTURE_COMPRESSED GL_NUM_COMPRESSED_TEXTURE_FORMATS GL_COMPRESSED_TEXTURE_FORMATS GL_CLAMP_TO_BORDER GL_COMBINE GL_COMBINE_RGB GL_COMBINE_ALPHA GL_SOURCE0_RGB GL_SOURCE1_RGB GL_SOURCE2_RGB GL_SOURCE0_ALPHA GL_SOURCE1_ALPHA GL_SOURCE2_ALPHA GL_OPERAND0_RGB GL_OPERAND1_RGB GL_OPERAND2_RGB GL_OPERAND0_ALPHA GL_OPERAND1_ALPHA GL_OPERAND2_ALPHA GL_RGB_SCALE GL_ADD_SIGNED GL_INTERPOLATE GL_SUBTRACT GL_CONSTANT GL_PRIMARY_COLOR GL_PREVIOUS GL_DOT3_RGB GL_DOT3_RGBA GL_BLEND_DST_RGB GL_BLEND_SRC_RGB GL_BLEND_DST_ALPHA GL_BLEND_SRC_ALPHA GL_POINT_SIZE_MIN GL_POINT_SIZE_MAX GL_POINT_FADE_THRESHOLD_SIZE GL_POINT_DISTANCE_ATTENUATION GL_GENERATE_MIPMAP GL_GENERATE_MIPMAP_HINT GL_DEPTH_COMPONENT16 GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT32 GL_MIRRORED_REPEAT GL_FOG_COORDINATE_SOURCE GL_FOG_COORDINATE GL_FRAGMENT_DEPTH GL_CURRENT_FOG_COORDINATE GL_FOG_COORDINATE_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY GL_COLOR_SUM GL_CURRENT_SECONDARY_COLOR GL_SECONDARY_COLOR_ARRAY_SIZE GL_SECONDARY_COLOR_ARRAY_TYPE GL_SECONDARY_COLOR_ARRAY_STRIDE GL_SECONDARY_COLOR_ARRAY_POINTER GL_SECONDARY_COLOR_ARRAY GL_MAX_TEXTURE_LOD_BIAS GL_TEXTURE_FILTER_CONTROL GL_TEXTURE_LOD_BIAS GL_INCR_WRAP GL_DECR_WRAP GL_TEXTURE_DEPTH_SIZE GL_DEPTH_TEXTURE_MODE GL_TEXTURE_COMPARE_MODE GL_TEXTURE_COMPARE_FUNC GL_COMPARE_R_TO_TEXTURE GL_BUFFER_SIZE GL_BUFFER_USAGE GL_QUERY_COUNTER_BITS GL_CURRENT_QUERY GL_QUERY_RESULT GL_QUERY_RESULT_AVAILABLE GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER GL_ARRAY_BUFFER_BINDING GL_ELEMENT_ARRAY_BUFFER_BINDING GL_VERTEX_ARRAY_BUFFER_BINDING GL_NORMAL_ARRAY_BUFFER_BINDING GL_COLOR_ARRAY_BUFFER_BINDING GL_INDEX_ARRAY_BUFFER_BINDING GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING GL_EDGE_FLAG_ARRAY_BUFFER_BINDING GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING GL_WEIGHT_ARRAY_BUFFER_BINDING GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING GL_READ_ONLY GL_WRITE_ONLY GL_READ_WRITE GL_BUFFER_ACCESS GL_BUFFER_MAPPED GL_BUFFER_MAP_POINTER GL_STREAM_DRAW GL_STREAM_READ GL_STREAM_COPY GL_STATIC_DRAW GL_STATIC_READ GL_STATIC_COPY GL_DYNAMIC_DRAW GL_DYNAMIC_READ GL_DYNAMIC_COPY GL_SAMPLES_PASSED GL_FOG_COORD_SRC GL_FOG_COORD GL_CURRENT_FOG_COORD GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORD_ARRAY GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_SRC0_RGB GL_SRC1_RGB GL_SRC2_RGB GL_SRC0_ALPHA GL_SRC1_ALPHA GL_SRC2_ALPHA GLU_FALSE GLU_TRUE GLU_VERSION GLU_EXTENSIONS GLU_INVALID_ENUM GLU_INVALID_VALUE GLU_OUT_OF_MEMORY GLU_INVALID_OPERATION GLU_OUTLINE_POLYGON GLU_OUTLINE_PATCH GLU_NURBS_ERROR GLU_ERROR GLU_NURBS_BEGIN GLU_NURBS_BEGIN_EXT GLU_NURBS_VERTEX GLU_NURBS_VERTEX_EXT GLU_NURBS_NORMAL GLU_NURBS_NORMAL_EXT GLU_NURBS_COLOR GLU_NURBS_COLOR_EXT GLU_NURBS_TEXTURE_COORD GLU_NURBS_TEX_COORD_EXT GLU_NURBS_END GLU_NURBS_END_EXT GLU_NURBS_BEGIN_DATA GLU_NURBS_BEGIN_DATA_EXT GLU_NURBS_VERTEX_DATA GLU_NURBS_VERTEX_DATA_EXT GLU_NURBS_NORMAL_DATA GLU_NURBS_NORMAL_DATA_EXT GLU_NURBS_COLOR_DATA GLU_NURBS_COLOR_DATA_EXT GLU_NURBS_TEXTURE_COORD_DATA GLU_NURBS_TEX_COORD_DATA_EXT GLU_NURBS_END_DATA GLU_NURBS_END_DATA_EXT GLU_NURBS_ERROR1 GLU_NURBS_ERROR2 GLU_NURBS_ERROR3 GLU_NURBS_ERROR4 GLU_NURBS_ERROR5 GLU_NURBS_ERROR6 GLU_NURBS_ERROR7 GLU_NURBS_ERROR8 GLU_NURBS_ERROR9 GLU_NURBS_ERROR10 GLU_NURBS_ERROR11 GLU_NURBS_ERROR12 GLU_NURBS_ERROR13 GLU_NURBS_ERROR14 GLU_NURBS_ERROR15 GLU_NURBS_ERROR16 GLU_NURBS_ERROR17 GLU_NURBS_ERROR18 GLU_NURBS_ERROR19 GLU_NURBS_ERROR20 GLU_NURBS_ERROR21 GLU_NURBS_ERROR22 GLU_NURBS_ERROR23 GLU_NURBS_ERROR24 GLU_NURBS_ERROR25 GLU_NURBS_ERROR26 GLU_NURBS_ERROR27 GLU_NURBS_ERROR28 GLU_NURBS_ERROR29 GLU_NURBS_ERROR30 GLU_NURBS_ERROR31 GLU_NURBS_ERROR32 GLU_NURBS_ERROR33 GLU_NURBS_ERROR34 GLU_NURBS_ERROR35 GLU_NURBS_ERROR36 GLU_NURBS_ERROR37 GLU_AUTO_LOAD_MATRIX GLU_CULLING GLU_SAMPLING_TOLERANCE GLU_DISPLAY_MODE GLU_PARAMETRIC_TOLERANCE GLU_SAMPLING_METHOD GLU_U_STEP GLU_V_STEP GLU_NURBS_MODE GLU_NURBS_MODE_EXT GLU_NURBS_TESSELLATOR GLU_NURBS_TESSELLATOR_EXT GLU_NURBS_RENDERER GLU_NURBS_RENDERER_EXT GLU_OBJECT_PARAMETRIC_ERROR GLU_OBJECT_PARAMETRIC_ERROR_EXT GLU_OBJECT_PATH_LENGTH GLU_OBJECT_PATH_LENGTH_EXT GLU_PATH_LENGTH GLU_PARAMETRIC_ERROR GLU_DOMAIN_DISTANCE GLU_MAP1_TRIM_2 GLU_MAP1_TRIM_3 GLU_POINT GLU_LINE GLU_FILL GLU_SILHOUETTE GLU_SMOOTH GLU_FLAT GLU_NONE GLU_OUTSIDE GLU_INSIDE GLU_TESS_BEGIN GLU_BEGIN GLU_TESS_VERTEX GLU_VERTEX GLU_TESS_END GLU_END GLU_TESS_ERROR GLU_TESS_EDGE_FLAG GLU_EDGE_FLAG GLU_TESS_COMBINE GLU_TESS_BEGIN_DATA GLU_TESS_VERTEX_DATA GLU_TESS_END_DATA GLU_TESS_ERROR_DATA GLU_TESS_EDGE_FLAG_DATA GLU_TESS_COMBINE_DATA GLU_CW GLU_CCW GLU_INTERIOR GLU_EXTERIOR GLU_UNKNOWN GLU_TESS_WINDING_RULE GLU_TESS_BOUNDARY_ONLY GLU_TESS_TOLERANCE GLU_TESS_ERROR1 GLU_TESS_ERROR2 GLU_TESS_ERROR3 GLU_TESS_ERROR4 GLU_TESS_ERROR5 GLU_TESS_ERROR6 GLU_TESS_ERROR7 GLU_TESS_ERROR8 GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_MISSING_END_POLYGON GLU_TESS_MISSING_END_CONTOUR GLU_TESS_COORD_TOO_LARGE GLU_TESS_NEED_COMBINE_CALLBACK GLU_TESS_WINDING_ODD GLU_TESS_WINDING_NONZERO GLU_TESS_WINDING_POSITIVE GLU_TESS_WINDING_NEGATIVE GLU_TESS_WINDING_ABS_GEQ_TWO [GLU_TESS_MAX_COORD real?] )]{ All OpenGL-defined constants.} @defproc[(feedback-buffer->gl-float-vector [buf feedback-buffer-object?]) gl-float-vector?]{ Converts a result from @racket[glFeedbackBuffer] to a vector.} @defproc[(select-buffer->gl-uint-vector [buf select-buffer-object?]) gl-uint-vector?]{ Converts a result from @racket[glSelectBuffer] to a vector.}