]> gitweb.factorcode.org Git - factor.git/commitdiff
tidied up gl and glu, simplified FUNCTION:
authorAlex Chapman <chapman.alex@gmail.com>
Mon, 23 May 2005 03:50:55 +0000 (03:50 +0000)
committerAlex Chapman <chapman.alex@gmail.com>
Mon, 23 May 2005 03:50:55 +0000 (03:50 +0000)
contrib/gl/gl-internals.factor
contrib/gl/gl.factor
contrib/gl/glu.factor
contrib/gl/simple-gl.factor

index 4d587dc271f92857747d2f2a2e210976a652bfe8..b7bd187fa7777e7a63bf105544eaa8a6f8e3b975 100644 (file)
@@ -16,7 +16,7 @@ USING: alien kernel sequences stdio math test parser namespaces lists strings wo
 !
 !    FUNCTION: void glEnd ( ) ; -> : glEnd ( -- ) "void" "gl" "glEnd" [ ] alien-invoke ; 
 !
-!    FUNCTION: TODO: something with a return...
+! TODO: show returns in the stack effect
 
 : LIBRARY: scan "c-library" set ; parsing
 
@@ -26,18 +26,6 @@ USING: alien kernel sequences stdio math test parser namespaces lists strings wo
     word r> "stack-effect" set-word-prop
     word compile ;
 
-: (list-split) ( list1 list2 quot -- list1 list2 )
-    dup >r >r dup
-      [ unswons dup r> call
-        [ r> 2drop ]
-        [ rot cons swap r> (list-split) ] ifte ]
-      [ r> r> 2drop ] ifte ;
-
-: list-split ( list quot -- list1 list2 )
-    #! split the list at the first element where 'elem quot call' is t, removing that element.
-    #! if no elements return true, return 'list [ ]'
-    [ ] -rot (list-split) >r reverse r> ;
-
 : unpair ( list -- list1 list2 )
     [ uncons uncons unpair rot swons >r cons r> ]
     [ f f ] ifte* ;
@@ -47,12 +35,10 @@ USING: alien kernel sequences stdio math test parser namespaces lists strings wo
       [ head ] 
       [ nip ] ifte ;
 
-: join-stack-effect ( lst -- str )
+: parse-stack-effect ( lst -- str )
+    unpair reverse "--" swons reverse
     [ CHAR: , remove-trailing-char " " append ] map " " swons concat ;
 
-: parse-stack-effect ( lst -- types stack-effect )
-    [ "--" = ] list-split >r unpair r> "--" swons append join-stack-effect ;
-
 : (function) ( type lib func function-args -- )
     unswons drop reverse unswons drop reverse
     parse-stack-effect compile-function-call ;
index a27ae1a7a8353a5b313d82663716fa9b53d351e3..f566ead62930bc14316d3080883a364f83b9a161 100644 (file)
@@ -4,7 +4,7 @@
 ! This file is based on the gl.h that comes with xorg-x11 6.8.2
 
 IN: gl 
-USING: alien gl-internals kernel parser sequences math ;
+USING: alien gl-internals ;
 
 ALIAS: uint    GLenum
 ALIAS: uchar   GLboolean
@@ -693,8 +693,10 @@ FUNCTION: void glClearAccum ( GLfloat red, GLfloat green, GLfloat blue, GLfloat
 FUNCTION: void glAccum ( GLenum op, GLfloat value ) ;
 
 FUNCTION: void glMatrixMode ( GLenum mode ) ;
-FUNCTION: void glOrtho ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) ;
-FUNCTION: void glFrustum ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) ;
+FUNCTION: void glOrtho ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, 
+                         GLdouble near_val, GLdouble far_val ) ;
+FUNCTION: void glFrustum ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, 
+                           GLdouble near_val, GLdouble far_val ) ;
 FUNCTION: void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) ;
 FUNCTION: void glPushMatrix ( ) ;
 FUNCTION: void glPopMatrix ( ) ;
@@ -895,34 +897,26 @@ FUNCTION: void glRectfv ( GLfloat *v1, GLfloat *v2 ) ;
 FUNCTION: void glRectiv ( GLint *v1, GLint *v2 ) ;
 FUNCTION: void glRectsv ( GLshort *v1, GLshort *v2 ) ;
 
-: gl-version ( -- float )
-    GL_VERSION glGetString
-    ! we're only interested in the first three characters since we're looking for 1.0, 1.1, etc.
-    2 swap head parse-number ;
-
 
 ! Vertex Arrays (1.1)
 
-! gl-version 1.1 >= [
-
-    FUNCTION: void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLvoid* ptr ) ;
-    FUNCTION: void glNormalPointer ( GLenum type, GLsizei stride, GLvoid* ptr ) ;
-    FUNCTION: void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLvoid* ptr ) ;
-    FUNCTION: void glIndexPointer ( GLenum type, GLsizei stride, GLvoid* ptr ) ;
-    FUNCTION: void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLvoid* ptr ) ;
-    FUNCTION: void glEdgeFlagPointer ( GLsizei stride, GLvoid* ptr ) ;
-    
-    ! [09:39] (slava) NULL <void*>
-    ! [09:39] (slava) then keep that object
-    ! [09:39] (slava) when you want to get the value stored there, *void*
-    ! [09:39] (slava) which returns an alien
-    FUNCTION: void glGetPointerv ( GLenum pname, GLvoid** params ) ;
-    
-    FUNCTION: void glArrayElement ( GLint i ) ;
-    FUNCTION: void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) ;
-    FUNCTION: void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLvoid* indices ) ;
-    FUNCTION: void glInterleavedArrays ( GLenum format, GLsizei stride, GLvoid* pointer ) ;
-! ] when
+FUNCTION: void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLvoid* ptr ) ;
+FUNCTION: void glNormalPointer ( GLenum type, GLsizei stride, GLvoid* ptr ) ;
+FUNCTION: void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLvoid* ptr ) ;
+FUNCTION: void glIndexPointer ( GLenum type, GLsizei stride, GLvoid* ptr ) ;
+FUNCTION: void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLvoid* ptr ) ;
+FUNCTION: void glEdgeFlagPointer ( GLsizei stride, GLvoid* ptr ) ;
+
+! [09:39] (slava) NULL <void*>
+! [09:39] (slava) then keep that object
+! [09:39] (slava) when you want to get the value stored there, *void*
+! [09:39] (slava) which returns an alien
+FUNCTION: void glGetPointerv ( GLenum pname, GLvoid** params ) ;
+
+FUNCTION: void glArrayElement ( GLint i ) ;
+FUNCTION: void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) ;
+FUNCTION: void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLvoid* indices ) ;
+FUNCTION: void glInterleavedArrays ( GLenum format, GLsizei stride, GLvoid* pointer ) ;
 
 ! Lighting
 
@@ -969,11 +963,14 @@ FUNCTION: void glGetPixelMapfv ( GLenum map, GLfloat* values ) ;
 FUNCTION: void glGetPixelMapuiv ( GLenum map, GLuint* values ) ;
 FUNCTION: void glGetPixelMapusv ( GLenum map, GLushort* values ) ;
 
-FUNCTION: void glBitmap ( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, GLubyte* bitmap ) ;
+FUNCTION: void glBitmap ( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, 
+                          GLfloat xmove, GLfloat ymove, GLubyte* bitmap ) ;
 
-FUNCTION: void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels ) ;
+FUNCTION: void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, 
+                              GLenum format, GLenum type, GLvoid* pixels ) ;
 
-FUNCTION: void glDrawPixels ( GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels ) ;
+FUNCTION: void glDrawPixels ( GLsizei width, GLsizei height, GLenum format, 
+                              GLenum type, GLvoid* pixels ) ;
 FUNCTION: void glCopyPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type ) ;
 
 ! Stenciling
@@ -1014,304 +1011,319 @@ FUNCTION: void glTexParameteriv ( GLenum target, GLenum pname, GLint* params ) ;
 FUNCTION: void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat* params ) ;
 FUNCTION: void glGetTexParameteriv ( GLenum target, GLenum pname, GLint* params ) ;
 
-FUNCTION: void glGetTexLevelParameterfv ( GLenum target, GLint level, GLenum pname, GLfloat* params ) ;
-FUNCTION: void glGetTexLevelParameteriv ( GLenum target, GLint level, GLenum pname, GLint* params ) ;
+FUNCTION: void glGetTexLevelParameterfv ( GLenum target, GLint level, 
+                                          GLenum pname, GLfloat* params ) ;
+FUNCTION: void glGetTexLevelParameteriv ( GLenum target, GLint level,
+                                          GLenum pname, GLint* params ) ;
 
-FUNCTION: void glTexImage1D ( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, GLvoid* pixels ) ;
+FUNCTION: void glTexImage1D ( GLenum target, GLint level, GLint internalFormat, GLsizei width,
+                              GLint border, GLenum format, GLenum type, GLvoid* pixels ) ;
 
 FUNCTION: void glTexImage2D ( GLenum target, GLint level, GLint internalFormat, 
                               GLsizei width, GLsizei height, GLint border, 
                              GLenum format, GLenum type, GLvoid* pixels ) ;
 
-FUNCTION: void glGetTexImage ( GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels ) ;
+FUNCTION: void glGetTexImage ( GLenum target, GLint level, GLenum format, 
+                               GLenum type, GLvoid* pixels ) ;
 
 
 ! 1.1 functions
 
-! gl-version 1.1 >= [
-
-    FUNCTION: void glGenTextures ( GLsizei n, GLuint* textures ) ;
-    
-    FUNCTION: void glDeleteTextures ( GLsizei n, GLuint* textures ) ;
-    
-    FUNCTION: void glBindTexture ( GLenum target, GLuint texture ) ;
-    
-    FUNCTION: void glPrioritizeTextures ( GLsizei n, GLuint* textures, GLclampf* priorities ) ;
-    
-    FUNCTION: GLboolean glAreTexturesResident ( GLsizei n, GLuint* textures, GLboolean* residences ) ;
-    
-    FUNCTION: GLboolean glIsTexture ( GLuint texture ) ;
-    
-    FUNCTION: void glTexSubImage1D ( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, GLvoid* pixels ) ;
-    
-    FUNCTION: void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels ) ;
-    
-    FUNCTION: void glCopyTexImage1D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ) ;
-    
-    FUNCTION: void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) ;
-    
-    FUNCTION: void glCopyTexSubImage1D ( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) ;
-    
-    FUNCTION: void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) ;
-    
-    
-    ! Evaluators
-    
-    FUNCTION: void glMap1d ( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, GLdouble* points ) ;
-    FUNCTION: void glMap1f ( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, GLfloat* points ) ;
-    
-    FUNCTION: void glMap2d ( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble* points ) ;
-    FUNCTION: void glMap2f ( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat* points ) ;
-    
-    FUNCTION: void glGetMapdv ( GLenum target, GLenum query, GLdouble* v ) ;
-    FUNCTION: void glGetMapfv ( GLenum target, GLenum query, GLfloat* v ) ;
-    FUNCTION: void glGetMapiv ( GLenum target, GLenum query, GLint* v ) ;
-    
-    FUNCTION: void glEvalCoord1d ( GLdouble u ) ;
-    FUNCTION: void glEvalCoord1f ( GLfloat u ) ;
-    
-    FUNCTION: void glEvalCoord1dv ( GLdouble* u ) ;
-    FUNCTION: void glEvalCoord1fv ( GLfloat* u ) ;
-    
-    FUNCTION: void glEvalCoord2d ( GLdouble u, GLdouble v ) ;
-    FUNCTION: void glEvalCoord2f ( GLfloat u, GLfloat v ) ;
-    
-    FUNCTION: void glEvalCoord2dv ( GLdouble* u ) ;
-    FUNCTION: void glEvalCoord2fv ( GLfloat* u ) ;
-    
-    FUNCTION: void glMapGrid1d ( GLint un, GLdouble u1, GLdouble u2 ) ;
-    FUNCTION: void glMapGrid1f ( GLint un, GLfloat u1, GLfloat u2 ) ;
-    
-    FUNCTION: void glMapGrid2d ( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 ) ;
-    FUNCTION: void glMapGrid2f ( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ) ;
-    
-    FUNCTION: void glEvalPoint1 ( GLint i ) ;
-    FUNCTION: void glEvalPoint2 ( GLint i, GLint j ) ;
-    
-    FUNCTION: void glEvalMesh1 ( GLenum mode, GLint i1, GLint i2 ) ;
-    FUNCTION: void glEvalMesh2 ( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ) ;
-    
-    
-    ! Fog
-    
-    FUNCTION: void glFogf ( GLenum pname, GLfloat param ) ;
-    FUNCTION: void glFogi ( GLenum pname, GLint param ) ;
-    FUNCTION: void glFogfv ( GLenum pname, GLfloat* params ) ;
-    FUNCTION: void glFogiv ( GLenum pname, GLint* params ) ;
-    
-    
-    ! Selection and Feedback
-    
-    FUNCTION: void glFeedbackBuffer ( GLsizei size, GLenum type, GLfloat* buffer ) ;
-    
-    FUNCTION: void glPassThrough ( GLfloat token ) ;
-    FUNCTION: void glSelectBuffer ( GLsizei size, GLuint* buffer ) ;
-    FUNCTION: void glInitNames ( ) ;
-    FUNCTION: void glLoadName ( GLuint name ) ;
-    FUNCTION: void glPushName ( GLuint name ) ;
-    FUNCTION: void glPopName ( ) ;
-
-! ] when
+FUNCTION: void glGenTextures ( GLsizei n, GLuint* textures ) ;
+
+FUNCTION: void glDeleteTextures ( GLsizei n, GLuint* textures ) ;
+
+FUNCTION: void glBindTexture ( GLenum target, GLuint texture ) ;
+
+FUNCTION: void glPrioritizeTextures ( GLsizei n, GLuint* textures, GLclampf* priorities ) ;
+
+FUNCTION: GLboolean glAreTexturesResident ( GLsizei n, GLuint* textures, GLboolean* residences ) ;
+
+FUNCTION: GLboolean glIsTexture ( GLuint texture ) ;
+
+FUNCTION: void glTexSubImage1D ( GLenum target, GLint level, GLint xoffset, GLsizei width,
+                                 GLenum format, GLenum type, GLvoid* pixels ) ;
+
+FUNCTION: void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                 GLsizei width, GLsizei height, GLenum format, 
+                                GLenum type, GLvoid* pixels ) ;
+
+FUNCTION: void glCopyTexImage1D ( GLenum target, GLint level, GLenum internalformat, 
+                                  GLint x, GLint y, GLsizei width, GLint border ) ;
+
+FUNCTION: void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, 
+                                  GLint x, GLint y,
+                                 GLsizei width, GLsizei height, GLint border ) ;
+
+FUNCTION: void glCopyTexSubImage1D ( GLenum target, GLint level, GLint xoffset, 
+                                     GLint x, GLint y, GLsizei width ) ;
+
+FUNCTION: void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                     GLint x, GLint y, GLsizei width, GLsizei height ) ;
+
+
+! Evaluators
+
+FUNCTION: void glMap1d ( GLenum target, GLdouble u1, GLdouble u2,
+                         GLint stride, GLint order, GLdouble* points ) ;
+FUNCTION: void glMap1f ( GLenum target, GLfloat u1, GLfloat u2,
+                         GLint stride, GLint order, GLfloat* points ) ;
+
+FUNCTION: void glMap2d ( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
+                         GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
+                        GLdouble* points ) ;
+FUNCTION: void glMap2f ( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
+                         GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
+                        GLfloat* points ) ;
+
+FUNCTION: void glGetMapdv ( GLenum target, GLenum query, GLdouble* v ) ;
+FUNCTION: void glGetMapfv ( GLenum target, GLenum query, GLfloat* v ) ;
+FUNCTION: void glGetMapiv ( GLenum target, GLenum query, GLint* v ) ;
+
+FUNCTION: void glEvalCoord1d ( GLdouble u ) ;
+FUNCTION: void glEvalCoord1f ( GLfloat u ) ;
+
+FUNCTION: void glEvalCoord1dv ( GLdouble* u ) ;
+FUNCTION: void glEvalCoord1fv ( GLfloat* u ) ;
+
+FUNCTION: void glEvalCoord2d ( GLdouble u, GLdouble v ) ;
+FUNCTION: void glEvalCoord2f ( GLfloat u, GLfloat v ) ;
+
+FUNCTION: void glEvalCoord2dv ( GLdouble* u ) ;
+FUNCTION: void glEvalCoord2fv ( GLfloat* u ) ;
+
+FUNCTION: void glMapGrid1d ( GLint un, GLdouble u1, GLdouble u2 ) ;
+FUNCTION: void glMapGrid1f ( GLint un, GLfloat u1, GLfloat u2 ) ;
+
+FUNCTION: void glMapGrid2d ( GLint un, GLdouble u1, GLdouble u2,
+                             GLint vn, GLdouble v1, GLdouble v2 ) ;
+FUNCTION: void glMapGrid2f ( GLint un, GLfloat u1, GLfloat u2,
+                             GLint vn, GLfloat v1, GLfloat v2 ) ;
+
+FUNCTION: void glEvalPoint1 ( GLint i ) ;
+FUNCTION: void glEvalPoint2 ( GLint i, GLint j ) ;
+
+FUNCTION: void glEvalMesh1 ( GLenum mode, GLint i1, GLint i2 ) ;
+FUNCTION: void glEvalMesh2 ( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ) ;
+
+
+! Fog
+
+FUNCTION: void glFogf ( GLenum pname, GLfloat param ) ;
+FUNCTION: void glFogi ( GLenum pname, GLint param ) ;
+FUNCTION: void glFogfv ( GLenum pname, GLfloat* params ) ;
+FUNCTION: void glFogiv ( GLenum pname, GLint* params ) ;
+
+
+! Selection and Feedback
+
+FUNCTION: void glFeedbackBuffer ( GLsizei size, GLenum type, GLfloat* buffer ) ;
+
+FUNCTION: void glPassThrough ( GLfloat token ) ;
+FUNCTION: void glSelectBuffer ( GLsizei size, GLuint* buffer ) ;
+FUNCTION: void glInitNames ( ) ;
+FUNCTION: void glLoadName ( GLuint name ) ;
+FUNCTION: void glPushName ( GLuint name ) ;
+FUNCTION: void glPopName ( ) ;
+
 
 ! OpenGL 1.2
 
-! gl-version 1.2 >= [
-
-    : GL_PACK_SKIP_IMAGES               HEX: 806B ; inline
-    : GL_PACK_IMAGE_HEIGHT              HEX: 806C ; inline
-    : GL_UNPACK_SKIP_IMAGES             HEX: 806D ; inline
-    : GL_UNPACK_IMAGE_HEIGHT            HEX: 806E ; inline
-    : GL_TEXTURE_3D                     HEX: 806F ; inline
-    : GL_PROXY_TEXTURE_3D               HEX: 8070 ; inline
-    : GL_TEXTURE_DEPTH                  HEX: 8071 ; inline
-    : GL_TEXTURE_WRAP_R                 HEX: 8072 ; inline
-    : GL_MAX_3D_TEXTURE_SIZE            HEX: 8073 ; inline
-    : GL_BGR                            HEX: 80E0 ; inline
-    : GL_BGRA                           HEX: 80E1 ; inline
-    : GL_UNSIGNED_BYTE_3_3_2            HEX: 8032 ; inline
-    : GL_UNSIGNED_BYTE_2_3_3_REV        HEX: 8362 ; inline
-    : GL_UNSIGNED_SHORT_5_6_5           HEX: 8363 ; inline
-    : GL_UNSIGNED_SHORT_5_6_5_REV       HEX: 8364 ; inline
-    : GL_UNSIGNED_SHORT_4_4_4_4         HEX: 8033 ; inline
-    : GL_UNSIGNED_SHORT_4_4_4_4_REV     HEX: 8365 ; inline
-    : GL_UNSIGNED_SHORT_5_5_5_1         HEX: 8034 ; inline
-    : GL_UNSIGNED_SHORT_1_5_5_5_REV     HEX: 8366 ; inline
-    : GL_UNSIGNED_INT_8_8_8_8           HEX: 8035 ; inline
-    : GL_UNSIGNED_INT_8_8_8_8_REV       HEX: 8367 ; inline
-    : GL_UNSIGNED_INT_10_10_10_2        HEX: 8036 ; inline
-    : GL_UNSIGNED_INT_2_10_10_10_REV    HEX: 8368 ; inline
-    : GL_RESCALE_NORMAL                 HEX: 803A ; inline
-    : GL_LIGHT_MODEL_COLOR_CONTROL      HEX: 81F8 ; inline
-    : GL_SINGLE_COLOR                   HEX: 81F9 ; inline
-    : GL_SEPARATE_SPECULAR_COLOR        HEX: 81FA ; inline
-    : GL_CLAMP_TO_EDGE                  HEX: 812F ; inline
-    : GL_TEXTURE_MIN_LOD                HEX: 813A ; inline
-    : GL_TEXTURE_MAX_LOD                HEX: 813B ; inline
-    : GL_TEXTURE_BASE_LEVEL             HEX: 813C ; inline
-    : GL_TEXTURE_MAX_LEVEL              HEX: 813D ; inline
-    : GL_MAX_ELEMENTS_VERTICES          HEX: 80E8 ; inline
-    : GL_MAX_ELEMENTS_INDICES           HEX: 80E9 ; inline
-    : GL_ALIASED_POINT_SIZE_RANGE       HEX: 846D ; inline
-    : GL_ALIASED_LINE_WIDTH_RANGE       HEX: 846E ; inline
-    
-    FUNCTION: void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLvoid* indices ) ;
-    
-    FUNCTION: void glTexImage3D ( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLvoid* pixels ) ;
-    
-    FUNCTION: void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* pixels ) ;
-    
-    FUNCTION: void glCopyTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) ;
-
-! ] when
+: GL_PACK_SKIP_IMAGES               HEX: 806B ; inline
+: GL_PACK_IMAGE_HEIGHT              HEX: 806C ; inline
+: GL_UNPACK_SKIP_IMAGES             HEX: 806D ; inline
+: GL_UNPACK_IMAGE_HEIGHT            HEX: 806E ; inline
+: GL_TEXTURE_3D                     HEX: 806F ; inline
+: GL_PROXY_TEXTURE_3D               HEX: 8070 ; inline
+: GL_TEXTURE_DEPTH                  HEX: 8071 ; inline
+: GL_TEXTURE_WRAP_R                 HEX: 8072 ; inline
+: GL_MAX_3D_TEXTURE_SIZE            HEX: 8073 ; inline
+: GL_BGR                            HEX: 80E0 ; inline
+: GL_BGRA                           HEX: 80E1 ; inline
+: GL_UNSIGNED_BYTE_3_3_2            HEX: 8032 ; inline
+: GL_UNSIGNED_BYTE_2_3_3_REV        HEX: 8362 ; inline
+: GL_UNSIGNED_SHORT_5_6_5           HEX: 8363 ; inline
+: GL_UNSIGNED_SHORT_5_6_5_REV       HEX: 8364 ; inline
+: GL_UNSIGNED_SHORT_4_4_4_4         HEX: 8033 ; inline
+: GL_UNSIGNED_SHORT_4_4_4_4_REV     HEX: 8365 ; inline
+: GL_UNSIGNED_SHORT_5_5_5_1         HEX: 8034 ; inline
+: GL_UNSIGNED_SHORT_1_5_5_5_REV     HEX: 8366 ; inline
+: GL_UNSIGNED_INT_8_8_8_8           HEX: 8035 ; inline
+: GL_UNSIGNED_INT_8_8_8_8_REV       HEX: 8367 ; inline
+: GL_UNSIGNED_INT_10_10_10_2        HEX: 8036 ; inline
+: GL_UNSIGNED_INT_2_10_10_10_REV    HEX: 8368 ; inline
+: GL_RESCALE_NORMAL                 HEX: 803A ; inline
+: GL_LIGHT_MODEL_COLOR_CONTROL      HEX: 81F8 ; inline
+: GL_SINGLE_COLOR                   HEX: 81F9 ; inline
+: GL_SEPARATE_SPECULAR_COLOR        HEX: 81FA ; inline
+: GL_CLAMP_TO_EDGE                  HEX: 812F ; inline
+: GL_TEXTURE_MIN_LOD                HEX: 813A ; inline
+: GL_TEXTURE_MAX_LOD                HEX: 813B ; inline
+: GL_TEXTURE_BASE_LEVEL             HEX: 813C ; inline
+: GL_TEXTURE_MAX_LEVEL              HEX: 813D ; inline
+: GL_MAX_ELEMENTS_VERTICES          HEX: 80E8 ; inline
+: GL_MAX_ELEMENTS_INDICES           HEX: 80E9 ; inline
+: GL_ALIASED_POINT_SIZE_RANGE       HEX: 846D ; inline
+: GL_ALIASED_LINE_WIDTH_RANGE       HEX: 846E ; inline
+
+FUNCTION: void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end,
+                                     GLsizei count, GLenum type, GLvoid* indices ) ;
+
+FUNCTION: void glTexImage3D ( GLenum target, GLint level, GLint internalFormat,
+                              GLsizei width, GLsizei height, GLsizei depth, GLint border,
+                             GLenum format, GLenum type, GLvoid* pixels ) ;
+
+FUNCTION: void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                 GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
+                                GLenum format, GLenum type, GLvoid* pixels ) ;
+
+FUNCTION: void glCopyTexSubImage3D ( GLenum target, GLint level,
+                                     GLint xoffset, GLint yoffset, GLint zoffset,
+                                    GLint x, GLint y, GLsizei width, GLsizei height ) ;
+
 
 ! TODO: the rest. looks fiddly
 
 ! OpenGL 1.3
 
-! gl-version 1.3 >= [
-
-    : GL_ACTIVE_TEXTURE                 HEX: 84E0 ; inline
-    : GL_CLIENT_ACTIVE_TEXTURE          HEX: 84E1 ; inline
-    : GL_MAX_TEXTURE_UNITS              HEX: 84E2 ; inline
-    : GL_TEXTURE0                       HEX: 84C0 ; inline
-    : GL_TEXTURE1                       HEX: 84C1 ; inline
-    : GL_TEXTURE2                       HEX: 84C2 ; inline
-    : GL_TEXTURE3                       HEX: 84C3 ; inline
-    : GL_TEXTURE4                       HEX: 84C4 ; inline
-    : GL_TEXTURE5                       HEX: 84C5 ; inline
-    : GL_TEXTURE6                       HEX: 84C6 ; inline
-    : GL_TEXTURE7                       HEX: 84C7 ; inline
-    : GL_TEXTURE8                       HEX: 84C8 ; inline
-    : GL_TEXTURE9                       HEX: 84C9 ; inline
-    : GL_TEXTURE10                      HEX: 84CA ; inline
-    : GL_TEXTURE11                      HEX: 84CB ; inline
-    : GL_TEXTURE12                      HEX: 84CC ; inline
-    : GL_TEXTURE13                      HEX: 84CD ; inline
-    : GL_TEXTURE14                      HEX: 84CE ; inline
-    : GL_TEXTURE15                      HEX: 84CF ; inline
-    : GL_TEXTURE16                      HEX: 84D0 ; inline
-    : GL_TEXTURE17                      HEX: 84D1 ; inline
-    : GL_TEXTURE18                      HEX: 84D2 ; inline
-    : GL_TEXTURE19                      HEX: 84D3 ; inline
-    : GL_TEXTURE20                      HEX: 84D4 ; inline
-    : GL_TEXTURE21                      HEX: 84D5 ; inline
-    : GL_TEXTURE22                      HEX: 84D6 ; inline
-    : GL_TEXTURE23                      HEX: 84D7 ; inline
-    : GL_TEXTURE24                      HEX: 84D8 ; inline
-    : GL_TEXTURE25                      HEX: 84D9 ; inline
-    : GL_TEXTURE26                      HEX: 84DA ; inline
-    : GL_TEXTURE27                      HEX: 84DB ; inline
-    : GL_TEXTURE28                      HEX: 84DC ; inline
-    : GL_TEXTURE29                      HEX: 84DD ; inline
-    : GL_TEXTURE30                      HEX: 84DE ; inline
-    : GL_TEXTURE31                      HEX: 84DF ; inline
-    : GL_NORMAL_MAP                     HEX: 8511 ; inline
-    : GL_REFLECTION_MAP                 HEX: 8512 ; inline
-    : GL_TEXTURE_CUBE_MAP               HEX: 8513 ; inline
-    : GL_TEXTURE_BINDING_CUBE_MAP       HEX: 8514 ; inline
-    : GL_TEXTURE_CUBE_MAP_POSITIVE_X    HEX: 8515 ; inline
-    : GL_TEXTURE_CUBE_MAP_NEGATIVE_X    HEX: 8516 ; inline
-    : GL_TEXTURE_CUBE_MAP_POSITIVE_Y    HEX: 8517 ; inline
-    : GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    HEX: 8518 ; inline
-    : GL_TEXTURE_CUBE_MAP_POSITIVE_Z    HEX: 8519 ; inline
-    : GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    HEX: 851A ; inline
-    : GL_PROXY_TEXTURE_CUBE_MAP         HEX: 851B ; inline
-    : GL_MAX_CUBE_MAP_TEXTURE_SIZE      HEX: 851C ; inline
-    : GL_COMBINE                        HEX: 8570 ; inline
-    : GL_COMBINE_RGB                    HEX: 8571 ; inline
-    : GL_COMBINE_ALPHA                  HEX: 8572 ; inline
-    : GL_RGB_SCALE                      HEX: 8573 ; inline
-    : GL_ADD_SIGNED                     HEX: 8574 ; inline
-    : GL_INTERPOLATE                    HEX: 8575 ; inline
-    : GL_CONSTANT                       HEX: 8576 ; inline
-    : GL_PRIMARY_COLOR                  HEX: 8577 ; inline
-    : GL_PREVIOUS                       HEX: 8578 ; inline
-    : GL_SOURCE0_RGB                    HEX: 8580 ; inline
-    : GL_SOURCE1_RGB                    HEX: 8581 ; inline
-    : GL_SOURCE2_RGB                    HEX: 8582 ; inline
-    : GL_SOURCE0_ALPHA                  HEX: 8588 ; inline
-    : GL_SOURCE1_ALPHA                  HEX: 8589 ; inline
-    : GL_SOURCE2_ALPHA                  HEX: 858A ; inline
-    : GL_OPERAND0_RGB                   HEX: 8590 ; inline
-    : GL_OPERAND1_RGB                   HEX: 8591 ; inline
-    : GL_OPERAND2_RGB                   HEX: 8592 ; inline
-    : GL_OPERAND0_ALPHA                 HEX: 8598 ; inline
-    : GL_OPERAND1_ALPHA                 HEX: 8599 ; inline
-    : GL_OPERAND2_ALPHA                 HEX: 859A ; inline
-    : GL_SUBTRACT                       HEX: 84E7 ; inline
-    : GL_TRANSPOSE_MODELVIEW_MATRIX     HEX: 84E3 ; inline
-    : GL_TRANSPOSE_PROJECTION_MATRIX    HEX: 84E4 ; inline
-    : GL_TRANSPOSE_TEXTURE_MATRIX       HEX: 84E5 ; inline
-    : GL_TRANSPOSE_COLOR_MATRIX         HEX: 84E6 ; inline
-    : GL_COMPRESSED_ALPHA               HEX: 84E9 ; inline
-    : GL_COMPRESSED_LUMINANCE           HEX: 84EA ; inline
-    : GL_COMPRESSED_LUMINANCE_ALPHA     HEX: 84EB ; inline
-    : GL_COMPRESSED_INTENSITY           HEX: 84EC ; inline
-    : GL_COMPRESSED_RGB                 HEX: 84ED ; inline
-    : GL_COMPRESSED_RGBA                HEX: 84EE ; inline
-    : GL_TEXTURE_COMPRESSION_HINT       HEX: 84EF ; inline
-    : GL_TEXTURE_COMPRESSED_IMAGE_SIZE  HEX: 86A0 ; inline
-    : GL_TEXTURE_COMPRESSED             HEX: 86A1 ; inline
-    : GL_NUM_COMPRESSED_TEXTURE_FORMATS HEX: 86A2 ; inline
-    : GL_COMPRESSED_TEXTURE_FORMATS     HEX: 86A3 ; inline
-    : GL_DOT3_RGB                       HEX: 86AE ; inline
-    : GL_DOT3_RGBA                      HEX: 86AF ; inline
-    : GL_CLAMP_TO_BORDER                HEX: 812D ; inline
-    : GL_MULTISAMPLE                    HEX: 809D ; inline
-    : GL_SAMPLE_ALPHA_TO_COVERAGE       HEX: 809E ; inline
-    : GL_SAMPLE_ALPHA_TO_ONE            HEX: 809F ; inline
-    : GL_SAMPLE_COVERAGE                HEX: 80A0 ; inline
-    : GL_SAMPLE_BUFFERS                 HEX: 80A8 ; inline
-    : GL_SAMPLES                        HEX: 80A9 ; inline
-    : GL_SAMPLE_COVERAGE_VALUE          HEX: 80AA ; inline
-    : GL_SAMPLE_COVERAGE_INVERT         HEX: 80AB ; inline
-    : GL_MULTISAMPLE_BIT                HEX: 20000000 ; inline
-
-! ] when
+: GL_ACTIVE_TEXTURE                 HEX: 84E0 ; inline
+: GL_CLIENT_ACTIVE_TEXTURE          HEX: 84E1 ; inline
+: GL_MAX_TEXTURE_UNITS              HEX: 84E2 ; inline
+: GL_TEXTURE0                       HEX: 84C0 ; inline
+: GL_TEXTURE1                       HEX: 84C1 ; inline
+: GL_TEXTURE2                       HEX: 84C2 ; inline
+: GL_TEXTURE3                       HEX: 84C3 ; inline
+: GL_TEXTURE4                       HEX: 84C4 ; inline
+: GL_TEXTURE5                       HEX: 84C5 ; inline
+: GL_TEXTURE6                       HEX: 84C6 ; inline
+: GL_TEXTURE7                       HEX: 84C7 ; inline
+: GL_TEXTURE8                       HEX: 84C8 ; inline
+: GL_TEXTURE9                       HEX: 84C9 ; inline
+: GL_TEXTURE10                      HEX: 84CA ; inline
+: GL_TEXTURE11                      HEX: 84CB ; inline
+: GL_TEXTURE12                      HEX: 84CC ; inline
+: GL_TEXTURE13                      HEX: 84CD ; inline
+: GL_TEXTURE14                      HEX: 84CE ; inline
+: GL_TEXTURE15                      HEX: 84CF ; inline
+: GL_TEXTURE16                      HEX: 84D0 ; inline
+: GL_TEXTURE17                      HEX: 84D1 ; inline
+: GL_TEXTURE18                      HEX: 84D2 ; inline
+: GL_TEXTURE19                      HEX: 84D3 ; inline
+: GL_TEXTURE20                      HEX: 84D4 ; inline
+: GL_TEXTURE21                      HEX: 84D5 ; inline
+: GL_TEXTURE22                      HEX: 84D6 ; inline
+: GL_TEXTURE23                      HEX: 84D7 ; inline
+: GL_TEXTURE24                      HEX: 84D8 ; inline
+: GL_TEXTURE25                      HEX: 84D9 ; inline
+: GL_TEXTURE26                      HEX: 84DA ; inline
+: GL_TEXTURE27                      HEX: 84DB ; inline
+: GL_TEXTURE28                      HEX: 84DC ; inline
+: GL_TEXTURE29                      HEX: 84DD ; inline
+: GL_TEXTURE30                      HEX: 84DE ; inline
+: GL_TEXTURE31                      HEX: 84DF ; inline
+: GL_NORMAL_MAP                     HEX: 8511 ; inline
+: GL_REFLECTION_MAP                 HEX: 8512 ; inline
+: GL_TEXTURE_CUBE_MAP               HEX: 8513 ; inline
+: GL_TEXTURE_BINDING_CUBE_MAP       HEX: 8514 ; inline
+: GL_TEXTURE_CUBE_MAP_POSITIVE_X    HEX: 8515 ; inline
+: GL_TEXTURE_CUBE_MAP_NEGATIVE_X    HEX: 8516 ; inline
+: GL_TEXTURE_CUBE_MAP_POSITIVE_Y    HEX: 8517 ; inline
+: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    HEX: 8518 ; inline
+: GL_TEXTURE_CUBE_MAP_POSITIVE_Z    HEX: 8519 ; inline
+: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    HEX: 851A ; inline
+: GL_PROXY_TEXTURE_CUBE_MAP         HEX: 851B ; inline
+: GL_MAX_CUBE_MAP_TEXTURE_SIZE      HEX: 851C ; inline
+: GL_COMBINE                        HEX: 8570 ; inline
+: GL_COMBINE_RGB                    HEX: 8571 ; inline
+: GL_COMBINE_ALPHA                  HEX: 8572 ; inline
+: GL_RGB_SCALE                      HEX: 8573 ; inline
+: GL_ADD_SIGNED                     HEX: 8574 ; inline
+: GL_INTERPOLATE                    HEX: 8575 ; inline
+: GL_CONSTANT                       HEX: 8576 ; inline
+: GL_PRIMARY_COLOR                  HEX: 8577 ; inline
+: GL_PREVIOUS                       HEX: 8578 ; inline
+: GL_SOURCE0_RGB                    HEX: 8580 ; inline
+: GL_SOURCE1_RGB                    HEX: 8581 ; inline
+: GL_SOURCE2_RGB                    HEX: 8582 ; inline
+: GL_SOURCE0_ALPHA                  HEX: 8588 ; inline
+: GL_SOURCE1_ALPHA                  HEX: 8589 ; inline
+: GL_SOURCE2_ALPHA                  HEX: 858A ; inline
+: GL_OPERAND0_RGB                   HEX: 8590 ; inline
+: GL_OPERAND1_RGB                   HEX: 8591 ; inline
+: GL_OPERAND2_RGB                   HEX: 8592 ; inline
+: GL_OPERAND0_ALPHA                 HEX: 8598 ; inline
+: GL_OPERAND1_ALPHA                 HEX: 8599 ; inline
+: GL_OPERAND2_ALPHA                 HEX: 859A ; inline
+: GL_SUBTRACT                       HEX: 84E7 ; inline
+: GL_TRANSPOSE_MODELVIEW_MATRIX     HEX: 84E3 ; inline
+: GL_TRANSPOSE_PROJECTION_MATRIX    HEX: 84E4 ; inline
+: GL_TRANSPOSE_TEXTURE_MATRIX       HEX: 84E5 ; inline
+: GL_TRANSPOSE_COLOR_MATRIX         HEX: 84E6 ; inline
+: GL_COMPRESSED_ALPHA               HEX: 84E9 ; inline
+: GL_COMPRESSED_LUMINANCE           HEX: 84EA ; inline
+: GL_COMPRESSED_LUMINANCE_ALPHA     HEX: 84EB ; inline
+: GL_COMPRESSED_INTENSITY           HEX: 84EC ; inline
+: GL_COMPRESSED_RGB                 HEX: 84ED ; inline
+: GL_COMPRESSED_RGBA                HEX: 84EE ; inline
+: GL_TEXTURE_COMPRESSION_HINT       HEX: 84EF ; inline
+: GL_TEXTURE_COMPRESSED_IMAGE_SIZE  HEX: 86A0 ; inline
+: GL_TEXTURE_COMPRESSED             HEX: 86A1 ; inline
+: GL_NUM_COMPRESSED_TEXTURE_FORMATS HEX: 86A2 ; inline
+: GL_COMPRESSED_TEXTURE_FORMATS     HEX: 86A3 ; inline
+: GL_DOT3_RGB                       HEX: 86AE ; inline
+: GL_DOT3_RGBA                      HEX: 86AF ; inline
+: GL_CLAMP_TO_BORDER                HEX: 812D ; inline
+: GL_MULTISAMPLE                    HEX: 809D ; inline
+: GL_SAMPLE_ALPHA_TO_COVERAGE       HEX: 809E ; inline
+: GL_SAMPLE_ALPHA_TO_ONE            HEX: 809F ; inline
+: GL_SAMPLE_COVERAGE                HEX: 80A0 ; inline
+: GL_SAMPLE_BUFFERS                 HEX: 80A8 ; inline
+: GL_SAMPLES                        HEX: 80A9 ; inline
+: GL_SAMPLE_COVERAGE_VALUE          HEX: 80AA ; inline
+: GL_SAMPLE_COVERAGE_INVERT         HEX: 80AB ; inline
+: GL_MULTISAMPLE_BIT                HEX: 20000000 ; inline
+
 
 ! OpenGL 1.4
 
-! gl-version 1.4 >= [
-
-    : GL_POINT_SIZE_MIN                 HEX: 8126 ; inline
-    : GL_POINT_SIZE_MAX                 HEX: 8127 ; inline
-    : GL_POINT_FADE_THRESHOLD_SIZE      HEX: 8128 ; inline
-    : GL_POINT_DISTANCE_ATTENUATION     HEX: 8129 ; inline
-    : GL_FOG_COORDINATE_SOURCE          HEX: 8450 ; inline
-    : GL_FOG_COORDINATE                 HEX: 8451 ; inline
-    : GL_FRAGMENT_DEPTH                 HEX: 8452 ; inline
-    : GL_CURRENT_FOG_COORDINATE         HEX: 8453 ; inline
-    : GL_FOG_COORDINATE_ARRAY_TYPE      HEX: 8454 ; inline
-    : GL_FOG_COORDINATE_ARRAY_STRIDE    HEX: 8455 ; inline
-    : GL_FOG_COORDINATE_ARRAY_POINTER   HEX: 8456 ; inline
-    : GL_FOG_COORDINATE_ARRAY           HEX: 8457 ; inline
-    : GL_COLOR_SUM                      HEX: 8458 ; inline
-    : GL_CURRENT_SECONDARY_COLOR        HEX: 8459 ; inline
-    : GL_SECONDARY_COLOR_ARRAY_SIZE     HEX: 845A ; inline
-    : GL_SECONDARY_COLOR_ARRAY_TYPE     HEX: 845B ; inline
-    : GL_SECONDARY_COLOR_ARRAY_STRIDE   HEX: 845C ; inline
-    : GL_SECONDARY_COLOR_ARRAY_POINTER  HEX: 845D ; inline
-    : GL_SECONDARY_COLOR_ARRAY          HEX: 845E ; inline
-    : GL_INCR_WRAP                      HEX: 8507 ; inline
-    : GL_DECR_WRAP                      HEX: 8508 ; inline
-    : GL_MAX_TEXTURE_LOD_BIAS           HEX: 84FD ; inline
-    : GL_TEXTURE_FILTER_CONTROL         HEX: 8500 ; inline
-    : GL_TEXTURE_LOD_BIAS               HEX: 8501 ; inline
-    : GL_GENERATE_MIPMAP                HEX: 8191 ; inline
-    : GL_GENERATE_MIPMAP_HINT           HEX: 8192 ; inline
-    : GL_BLEND_DST_RGB                  HEX: 80C8 ; inline
-    : GL_BLEND_SRC_RGB                  HEX: 80C9 ; inline
-    : GL_BLEND_DST_ALPHA                HEX: 80CA ; inline
-    : GL_BLEND_SRC_ALPHA                HEX: 80CB ; inline
-    : GL_MIRRORED_REPEAT                HEX: 8370 ; inline
-    : GL_DEPTH_COMPONENT16              HEX: 81A5 ; inline
-    : GL_DEPTH_COMPONENT24              HEX: 81A6 ; inline
-    : GL_DEPTH_COMPONENT32              HEX: 81A7 ; inline
-    : GL_TEXTURE_DEPTH_SIZE             HEX: 884A ; inline
-    : GL_DEPTH_TEXTURE_MODE             HEX: 884B ; inline
-    : GL_TEXTURE_COMPARE_MODE           HEX: 884C ; inline
-    : GL_TEXTURE_COMPARE_FUNC           HEX: 884D ; inline
-    : GL_COMPARE_R_TO_TEXTURE           HEX: 884E ; inline
-
-! ] when
+: GL_POINT_SIZE_MIN                 HEX: 8126 ; inline
+: GL_POINT_SIZE_MAX                 HEX: 8127 ; inline
+: GL_POINT_FADE_THRESHOLD_SIZE      HEX: 8128 ; inline
+: GL_POINT_DISTANCE_ATTENUATION     HEX: 8129 ; inline
+: GL_FOG_COORDINATE_SOURCE          HEX: 8450 ; inline
+: GL_FOG_COORDINATE                 HEX: 8451 ; inline
+: GL_FRAGMENT_DEPTH                 HEX: 8452 ; inline
+: GL_CURRENT_FOG_COORDINATE         HEX: 8453 ; inline
+: GL_FOG_COORDINATE_ARRAY_TYPE      HEX: 8454 ; inline
+: GL_FOG_COORDINATE_ARRAY_STRIDE    HEX: 8455 ; inline
+: GL_FOG_COORDINATE_ARRAY_POINTER   HEX: 8456 ; inline
+: GL_FOG_COORDINATE_ARRAY           HEX: 8457 ; inline
+: GL_COLOR_SUM                      HEX: 8458 ; inline
+: GL_CURRENT_SECONDARY_COLOR        HEX: 8459 ; inline
+: GL_SECONDARY_COLOR_ARRAY_SIZE     HEX: 845A ; inline
+: GL_SECONDARY_COLOR_ARRAY_TYPE     HEX: 845B ; inline
+: GL_SECONDARY_COLOR_ARRAY_STRIDE   HEX: 845C ; inline
+: GL_SECONDARY_COLOR_ARRAY_POINTER  HEX: 845D ; inline
+: GL_SECONDARY_COLOR_ARRAY          HEX: 845E ; inline
+: GL_INCR_WRAP                      HEX: 8507 ; inline
+: GL_DECR_WRAP                      HEX: 8508 ; inline
+: GL_MAX_TEXTURE_LOD_BIAS           HEX: 84FD ; inline
+: GL_TEXTURE_FILTER_CONTROL         HEX: 8500 ; inline
+: GL_TEXTURE_LOD_BIAS               HEX: 8501 ; inline
+: GL_GENERATE_MIPMAP                HEX: 8191 ; inline
+: GL_GENERATE_MIPMAP_HINT           HEX: 8192 ; inline
+: GL_BLEND_DST_RGB                  HEX: 80C8 ; inline
+: GL_BLEND_SRC_RGB                  HEX: 80C9 ; inline
+: GL_BLEND_DST_ALPHA                HEX: 80CA ; inline
+: GL_BLEND_SRC_ALPHA                HEX: 80CB ; inline
+: GL_MIRRORED_REPEAT                HEX: 8370 ; inline
+: GL_DEPTH_COMPONENT16              HEX: 81A5 ; inline
+: GL_DEPTH_COMPONENT24              HEX: 81A6 ; inline
+: GL_DEPTH_COMPONENT32              HEX: 81A7 ; inline
+: GL_TEXTURE_DEPTH_SIZE             HEX: 884A ; inline
+: GL_DEPTH_TEXTURE_MODE             HEX: 884B ; inline
+: GL_TEXTURE_COMPARE_MODE           HEX: 884C ; inline
+: GL_TEXTURE_COMPARE_FUNC           HEX: 884D ; inline
+: GL_COMPARE_R_TO_TEXTURE           HEX: 884E ; inline
+
 
index 7ab40d8a40bac9f5fa2c3b9f18f3dcc9db434a6e..658e4e0004e8ab0295a4a3a3a50edae26f9760d1 100644 (file)
@@ -195,7 +195,7 @@ FUNCTION: void gluBeginCurve ( GLUnurbs* nurb ) ;
 FUNCTION: void gluBeginPolygon ( GLUtesselator* tess ) ;
 FUNCTION: void gluBeginSurface ( GLUnurbs* nurb ) ;
 FUNCTION: void gluBeginTrim ( GLUnurbs* nurb ) ;
-FUNCTION: GLint gluBuild1DMipmapLevels ( GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, void* data -- error? ) ;
+FUNCTION: GLint gluBuild1DMipmapLevels ( GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, void* data ) ;
 FUNCTION: GLint gluBuild1DMipmaps ( GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, void* data ) ;
 FUNCTION: GLint gluBuild2DMipmapLevels ( GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, void* data ) ;
 FUNCTION: GLint gluBuild2DMipmaps ( GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, void* data ) ;
@@ -211,15 +211,15 @@ FUNCTION: void gluEndCurve ( GLUnurbs* nurb ) ;
 FUNCTION: void gluEndPolygon ( GLUtesselator* tess ) ;
 FUNCTION: void gluEndSurface ( GLUnurbs* nurb ) ;
 FUNCTION: void gluEndTrim ( GLUnurbs* nurb ) ;
-FUNCTION: GLubyte* gluErrorString ( GLenum error -- str ) ;
+FUNCTION: GLubyte* gluErrorString ( GLenum error ) ;
 FUNCTION: void gluGetNurbsProperty ( GLUnurbs* nurb, GLenum property, GLfloat* data ) ;
 FUNCTION: GLubyte* gluGetString ( GLenum name ) ;
 FUNCTION: void gluGetTessProperty ( GLUtesselator* tess, GLenum which, GLdouble* data ) ;
 FUNCTION: void gluLoadSamplingMatrices ( GLUnurbs* nurb, GLfloat* model, GLfloat* perspective, GLint* view ) ;
 FUNCTION: void gluLookAt ( GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ ) ;
-FUNCTION: GLUnurbs* gluNewNurbsRenderer ( -- nurbs ) ;
-FUNCTION: GLUquadric* gluNewQuadric ( -- quadric ) ;
-FUNCTION: GLUtesselator* gluNewTess ( -- tess ) ;
+FUNCTION: GLUnurbs* gluNewNurbsRenderer ( ) ;
+FUNCTION: GLUquadric* gluNewQuadric ( ) ;
+FUNCTION: GLUtesselator* gluNewTess ( ) ;
 FUNCTION: void gluNextContour ( GLUtesselator* tess, GLenum type ) ;
 FUNCTION: void gluNurbsCallback ( GLUnurbs* nurb, GLenum which, GLUfuncptr CallBackFunc ) ;
 FUNCTION: void gluNurbsCallbackData ( GLUnurbs* nurb, GLvoid* userData ) ;
@@ -238,7 +238,7 @@ FUNCTION: void gluQuadricDrawStyle ( GLUquadric* quad, GLenum draw ) ;
 FUNCTION: void gluQuadricNormals ( GLUquadric* quad, GLenum normal ) ;
 FUNCTION: void gluQuadricOrientation ( GLUquadric* quad, GLenum orientation ) ;
 FUNCTION: void gluQuadricTexture ( GLUquadric* quad, GLboolean texture ) ;
-FUNCTION: GLint gluScaleImage ( GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, void* dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut -- error? ) ;
+FUNCTION: GLint gluScaleImage ( GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, void* dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut ) ;
 FUNCTION: void gluSphere ( GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks ) ;
 FUNCTION: void gluTessBeginContour ( GLUtesselator* tess ) ;
 FUNCTION: void gluTessBeginPolygon ( GLUtesselator* tess, GLvoid* data ) ;
index 9521149fc092f7963eb5f74c60b67753582b9797..2af116dfe2b6b2389761066abd56591f8400f6e9 100644 (file)
@@ -13,6 +13,12 @@ SYMBOL: theta
 : flags ( lst -- enum )
     [ execute ] map 0 swap [ bitor ] each ;
 
+USING: parser unparser stdio ;
+: gl-version ( -- float )
+    GL_VERSION glGetString
+    ! we're only interested in the first three characters since we're looking for 1.0, 1.1, etc.
+    2 swap head parse-number ;
+
 : resize ( width height -- )
     2dup colour-depth [ SDL_OPENGL SDL_RESIZABLE SDL_HWSURFACE SDL_DOUBLEBUF ] flags init-screen
     GL_PROJECTION glMatrixMode
@@ -52,6 +58,7 @@ SYMBOL: theta
 
 : simple-gl
     800 600 colour-depth [ SDL_OPENGL SDL_RESIZABLE SDL_HWSURFACE SDL_DOUBLEBUF ] flags [
+    GL_VERSION glGetString
        0 theta set
         800 600 resize
         GL_FLAT glShadeModel