--
-- OpenGL 1.1 Ada binding, package GL
--
-- W. M. Richards, NiEstu, Phoenix AZ, December 1997
-- 
-- Converted from Brian Paul's Mesa package gl.h header file, version 2,5.
-- As noted below in Brian's original comments, this code is distributed
-- under the terms of the GNU Library General Public License.
--
-- Version 0.1, 21 December 1997
--
--
-- Here are the original gl.h comments:
--
-- Mesa 3-D graphics library
-- Version:  2.5
-- Copyright (C) 1995-1997  Brian Paul
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Library General Public
-- License as published by the Free Software Foundation; either
-- version 2 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-- Library General Public License for more details.
--
-- You should have received a copy of the GNU Library General Public
-- License along with this library; if not, write to the Free
-- Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
--


with Interfaces.C;


package GL is

package C renames Interfaces.C;

------------------------------------------------------------------------------

MESA_MAJOR_VERSION             : constant := 2;
MESA_MINOR_VERSION             : constant := 5;
GL_VERSION_1_1                 : constant := 1;
GL_EXT_BLEND_COLOR             : constant := 1;
GL_EXT_BLEND_LOGIC_OP          : constant := 1;
GL_EXT_BLEND_MINMAX            : constant := 1;
GL_EXT_BLEND_SUBTRACT          : constant := 1;
GL_EXT_POLYGON_OFFSET          : constant := 1;
GL_EXT_VERTEX_ARRAY            : constant := 1;
GL_EXT_TEXTURE_OBJECT          : constant := 1;
GL_EXT_TEXTURE3D               : constant := 1;
GL_EXT_PALETTED_TEXTURE        : constant := 1;
GL_EXT_SHARED_TEXTURE_PALETTE  : constant := 1;
GL_EXT_POINT_PARAMETERS        : constant := 1;
GL_MESA_WINDOW_POS             : constant := 1;
GL_MESA_RESIZE_BUFFERS         : constant := 1;


GL_CURRENT_BIT                 : constant := 16#00000001#;
GL_POINT_BIT                   : constant := 16#00000002#;
GL_LINE_BIT                    : constant := 16#00000004#;
GL_POLYGON_BIT                 : constant := 16#00000008#;
GL_POLYGON_STIPPLE_BIT         : constant := 16#00000010#;
GL_PIXEL_MODE_BIT              : constant := 16#00000020#;
GL_LIGHTING_BIT                : constant := 16#00000040#;
GL_FOG_BIT                     : constant := 16#00000080#;
GL_DEPTH_BUFFER_BIT            : constant := 16#00000100#;
GL_ACCUM_BUFFER_BIT            : constant := 16#00000200#;
GL_STENCIL_BUFFER_BIT          : constant := 16#00000400#;
GL_VIEWPORT_BIT                : constant := 16#00000800#;
GL_TRANSFORM_BIT               : constant := 16#00001000#;
GL_ENABLE_BIT                  : constant := 16#00002000#;
GL_COLOR_BUFFER_BIT            : constant := 16#00004000#;
GL_HINT_BIT                    : constant := 16#00008000#;
GL_EVAL_BIT                    : constant := 16#00010000#;
GL_LIST_BIT                    : constant := 16#00020000#;
GL_TEXTURE_BIT                 : constant := 16#00040000#;
GL_SCISSOR_BIT                 : constant := 16#00080000#;
GL_ALL_ATTRIB_BITS             : constant := 16#000FFFFF#;
GL_CLIENT_PIXEL_STORE_BIT      : constant := 16#00000001#;
GL_CLIENT_VERTEX_ARRAY_BIT     : constant := 16#00000002#;
GL_CLIENT_ALL_ATTRIB_BITS      : constant := 16#0000FFFF#;

------------------------------------------------------------------------------

-- Base types
type GLbitfield  is new C.unsigned;        -- 4-byte unsigned 
type GLboolean   is new C.unsigned_char;   -- 1-byte unsigned in [0,1]
type GLbyte      is new C.char;            -- 1-byte signed 
type GLshort     is new C.short;           -- 2-byte signed 
type GLint       is new C.int;             -- 4-byte signed 
type GLubyte     is new C.unsigned_char;   -- 1-byte unsigned 
type GLushort    is new C.unsigned_short;  -- 2-byte unsigned 
type GLuint      is new C.unsigned;        -- 4-byte unsigned 
type GLsizei     is new C.int;             -- 4-byte signed 
type GLfloat     is new C.C_float;         -- single precision float 
type GLclampf    is new C.C_float;         -- single precision float in [0,1] 
type GLdouble    is new C.double;          -- double precision float 
type GLclampd    is new C.double;          -- double precision float in [0,1] 

-- Pointer types
type GLbooleanPtr is access all GLboolean;
type GLbytePtr    is access all GLbyte;
type GLshortPtr   is access all GLshort;
type GLintPtr     is access all GLint;
type GLubytePtr   is access all GLubyte;
type GLushortPtr  is access all GLushort;
type GLuintPtr    is access all GLuint;
type GLfloatPtr   is access all GLfloat;
type GLclampfPtr  is access all GLclampf;
type GLdoublePtr  is access all GLdouble;

type GLpointer   is access all GLubyte;  -- our substitute for "void *"

------------------------------------------------------------------------------

-- GLenum is used only for sizing of the real enumeration types
type GLenum is new c.unsigned;

-- The boolean constants
GL_FALSE                       : constant GLboolean := GLboolean'Val (0);
GL_TRUE                        : constant GLboolean := GLboolean'Val (1);


-- Get pointer values
type GetPointerEnm is
(
   GL_FEEDBACK_BUFFER_POINTER,
   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_SELECTION_BUFFER_POINTER
);
for GetPointerEnm use
(
   GL_FEEDBACK_BUFFER_POINTER                 => 16#0DF0#,
   GL_VERTEX_ARRAY_POINTER                    => 16#808E#,
   GL_NORMAL_ARRAY_POINTER                    => 16#808F#,
   GL_COLOR_ARRAY_POINTER                     => 16#8090#,
   GL_INDEX_ARRAY_POINTER                     => 16#8091#,
   GL_TEXTURE_COORD_ARRAY_POINTER             => 16#8092#,
   GL_EDGE_FLAG_ARRAY_POINTER                 => 16#8093#,
   GL_SELECTION_BUFFER_POINTER                => 16#FFFF#   -- fixme: Mesa 2.5 does not support!!  What's the real value?
);
for GetPointerEnm'Size use GLenum'Size;

procedure glGetPointerv (pname : GetPointerEnm;
                         params: GLpointer);


-- Alpha, stencil, and depth tests
type FuncEnm is
(
   GL_NEVER,
   GL_LESS,
   GL_EQUAL,
   GL_LEQUAL,
   GL_GREATER,
   GL_NOTEQUAL,
   GL_GEQUAL,
   GL_ALWAYS
);
for FuncEnm use
(
   GL_NEVER                                   => 16#0200#,
   GL_LESS                                    => 16#0201#,
   GL_EQUAL                                   => 16#0202#,
   GL_LEQUAL                                  => 16#0203#,
   GL_GREATER                                 => 16#0204#,
   GL_NOTEQUAL                                => 16#0205#,
   GL_GEQUAL                                  => 16#0206#,
   GL_ALWAYS                                  => 16#0207#
);
for FuncEnm'Size use GLenum'Size;

procedure glAlphaFunc (func: FuncEnm;
                       ref : GLclampf);

procedure glDepthFunc (func: FuncEnm);

procedure glStencilFunc (func: FuncEnm;
                         ref : GLint;
                         mask: GLuint);


-- Stencil operations
type StencilOpEnm is
(
   GL_ZERO,
   GL_INVERT,
   GL_KEEP,
   GL_REPLACE,
   GL_INCR,
   GL_DECR
);
for StencilOpEnm use
(
   GL_ZERO                                    => 16#0000#,
   GL_INVERT                                  => 16#150A#,
   GL_KEEP                                    => 16#1E00#,
   GL_REPLACE                                 => 16#1E01#,
   GL_INCR                                    => 16#1E02#,
   GL_DECR                                    => 16#1E03#
);
for StencilOpEnm'Size use GLenum'Size;

procedure glStencilOp (fail : StencilOpEnm;
                       zfail: StencilOpEnm;
                       zpass: StencilOpEnm);


-- Blending functions
type BlendSrcEnm is
(
   GL_ZERO,
   GL_ONE,
   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_CONSTANT_COLOR,
   GL_ONE_MINUS_CONSTANT_COLOR,
   GL_CONSTANT_ALPHA,
   GL_ONE_MINUS_CONSTANT_ALPHA
);
for BlendSrcEnm use
(
   GL_ZERO                                    => 16#0000#,
   GL_ONE                                     => 16#0001#,
   GL_SRC_ALPHA                               => 16#0302#,
   GL_ONE_MINUS_SRC_ALPHA                     => 16#0303#,
   GL_DST_ALPHA                               => 16#0304#,
   GL_ONE_MINUS_DST_ALPHA                     => 16#0305#,
   GL_DST_COLOR                               => 16#0306#,
   GL_ONE_MINUS_DST_COLOR                     => 16#0307#,
   GL_SRC_ALPHA_SATURATE                      => 16#0308#,
   GL_CONSTANT_COLOR                          => 16#8001#,  -- are these four Mesa-specific?
   GL_ONE_MINUS_CONSTANT_COLOR                => 16#8002#,
   GL_CONSTANT_ALPHA                          => 16#8003#,
   GL_ONE_MINUS_CONSTANT_ALPHA                => 16#8004#
);
for BlendSrcEnm'Size use GLenum'Size;

type BlendDstEnm is
(
   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
);
for BlendDstEnm use
(
   GL_ZERO                                    => 16#0000#,
   GL_ONE                                     => 16#0001#,
   GL_SRC_COLOR                               => 16#0300#,
   GL_ONE_MINUS_SRC_COLOR                     => 16#0301#,
   GL_SRC_ALPHA                               => 16#0302#,
   GL_ONE_MINUS_SRC_ALPHA                     => 16#0303#,
   GL_DST_ALPHA                               => 16#0304#,
   GL_ONE_MINUS_DST_ALPHA                     => 16#0305#
);
for BlendDstEnm'Size use GLenum'Size;

type BlendEquationEnm is
(
   GL_LOGIC_OP,
   GL_FUNC_ADD_EXT,
   GL_MIN_EXT,
   GL_MAX_EXT,
   GL_FUNC_SUBTRACT_EXT,
   GL_FUNC_REVERSE_SUBTRACT_EXT
);
for BlendEquationEnm use
(
   GL_LOGIC_OP                                => 16#0BF1#,
   GL_FUNC_ADD_EXT                            => 16#8006#,
   GL_MIN_EXT                                 => 16#8007#,
   GL_MAX_EXT                                 => 16#8008#,
   GL_FUNC_SUBTRACT_EXT                       => 16#800A#,
   GL_FUNC_REVERSE_SUBTRACT_EXT               => 16#800B#
);
for BlendEquationEnm'Size use GLenum'size;

procedure glBlendFunc (sfactor: BlendSrcEnm;
                       dfactor: BlendDstEnm);

procedure glBlendEquationEXT (mode: BlendEquationEnm);

procedure glBlendColorEXT (red  : GLclampf;
                           green: GLclampf;
                           blue : GLclampf;
                           alpha: GLclampf);


-- Locic operation function
type LogicOpEnm is
(
   GL_CLEAR,
   GL_AND,
   GL_AND_REVERSE,
   GL_COPY,
   GL_AND_INVERTED,
   GL_NOOP,
   GL_XOR,
   GL_OR,
   GL_NOR,
   GL_EQUIV,
   GL_INVERT,
   GL_OR_REVERSE,
   GL_COPY_INVERTED,
   GL_OR_INVERTED,
   GL_NAND,
   GL_SET
);
for LogicOpEnm use
(
   GL_CLEAR                                   => 16#1500#,
   GL_AND                                     => 16#1501#,
   GL_AND_REVERSE                             => 16#1502#,
   GL_COPY                                    => 16#1503#,
   GL_AND_INVERTED                            => 16#1504#,
   GL_NOOP                                    => 16#1505#,
   GL_XOR                                     => 16#1506#,
   GL_OR                                      => 16#1507#,
   GL_NOR                                     => 16#1508#,
   GL_EQUIV                                   => 16#1509#,
   GL_INVERT                                  => 16#150A#,
   GL_OR_REVERSE                              => 16#150B#,
   GL_COPY_INVERTED                           => 16#150C#,
   GL_OR_INVERTED                             => 16#150D#,
   GL_NAND                                    => 16#150E#,
   GL_SET                                     => 16#150F#
);
for LogicOpEnm'Size use GLenum'size;

procedure glLogicOp (opcode: LogicOpEnm);


-- Face culling
type FaceEnm is
(
   GL_FRONT,
   GL_BACK,
   GL_FRONT_AND_BACK
);
for FaceEnm use
(
   GL_FRONT                                   => 16#0404#,
   GL_BACK                                    => 16#0405#,
   GL_FRONT_AND_BACK                          => 16#0408#
);
for FaceEnm'Size use GLenum'size;

procedure glCullFace (mode: FaceEnm);


-- Polygon orientation
type OrientationEnm is
(
   GL_CW,
   GL_CCW
);
for OrientationEnm use
(
   GL_CW                                      => 16#0900#,
   GL_CCW                                     => 16#0901#
);
for OrientationEnm'Size use GLenum'size;

procedure glFrontFace (mode: OrientationEnm);


-- Polygon mode
type PolygonModeEnm is
(
   GL_POINT,
   GL_LINE,
   GL_FILL
);
for PolygonModeEnm use
(
   GL_POINT                                   => 16#1B00#,
   GL_LINE                                    => 16#1B01#,
   GL_FILL                                    => 16#1B02#
);
for PolygonModeEnm'Size use GLenum'size;

procedure glPolygonMode (face: FaceEnm;
                         mode: PolygonModeEnm);


-- Clipping plane operations
type ClipPlaneEnm is
(
   GL_CLIP_PLANE0,
   GL_CLIP_PLANE1,
   GL_CLIP_PLANE2,
   GL_CLIP_PLANE3,
   GL_CLIP_PLANE4,
   GL_CLIP_PLANE5
);
for ClipPlaneEnm use
(
   GL_CLIP_PLANE0                             => 16#3000#,
   GL_CLIP_PLANE1                             => 16#3001#,
   GL_CLIP_PLANE2                             => 16#3002#,
   GL_CLIP_PLANE3                             => 16#3003#,
   GL_CLIP_PLANE4                             => 16#3004#,
   GL_CLIP_PLANE5                             => 16#3005#
);
for ClipPlaneEnm'Size use GLenum'size;

procedure glClipPlane (plane   : ClipPlaneEnm;
                       equation: GLdoublePtr);

procedure glGetClipPlane (plane   : ClipPlaneEnm;
                          equation: GLdoublePtr);


-- Buffer selection
type DrawBufferEnm is
(
   GL_NONE,
   GL_FRONT_LEFT,
   GL_FRONT_RIGHT,
   GL_BACK_LEFT,
   GL_BACK_RIGHT,
   GL_FRONT,
   GL_BACK,
   GL_LEFT,
   GL_RIGHT,
   GL_FRONT_AND_BACK,
   GL_AUX0,
   GL_AUX1,
   GL_AUX2,
   GL_AUX3
);
for DrawBufferEnm use
(
   GL_NONE                                    => 16#0000#,
   GL_FRONT_LEFT                              => 16#0400#,
   GL_FRONT_RIGHT                             => 16#0401#,
   GL_BACK_LEFT                               => 16#0402#,
   GL_BACK_RIGHT                              => 16#0403#,
   GL_FRONT                                   => 16#0404#,
   GL_BACK                                    => 16#0405#,
   GL_LEFT                                    => 16#0406#,
   GL_RIGHT                                   => 16#0407#,
   GL_FRONT_AND_BACK                          => 16#0408#,
   GL_AUX0                                    => 16#0409#,
   GL_AUX1                                    => 16#040A#,
   GL_AUX2                                    => 16#040B#,
   GL_AUX3                                    => 16#040C#
);
for DrawBufferEnm'Size use GLenum'size;

procedure glDrawBuffer (mode: DrawBufferEnm);

type ReadBufferEnm is
(
   GL_FRONT_LEFT,
   GL_FRONT_RIGHT,
   GL_BACK_LEFT,
   GL_BACK_RIGHT,
   GL_FRONT,
   GL_BACK,
   GL_LEFT,
   GL_RIGHT,
   GL_AUX0,
   GL_AUX1,
   GL_AUX2,
   GL_AUX3
);
for ReadBufferEnm use
(
   GL_FRONT_LEFT                              => 16#0400#,
   GL_FRONT_RIGHT                             => 16#0401#,
   GL_BACK_LEFT                               => 16#0402#,
   GL_BACK_RIGHT                              => 16#0403#,
   GL_FRONT                                   => 16#0404#,
   GL_BACK                                    => 16#0405#,
   GL_LEFT                                    => 16#0406#,
   GL_RIGHT                                   => 16#0407#,
   GL_AUX0                                    => 16#0409#,
   GL_AUX1                                    => 16#040A#,
   GL_AUX2                                    => 16#040B#,
   GL_AUX3                                    => 16#040C#
);
for ReadBufferEnm'Size use GLenum'size;

procedure glReadBuffer (mode: ReadBufferEnm);


-- Server-side capabilities
type ServerCapabilityEnm is
(
   GL_POINT_SMOOTH,
   GL_LINE_SMOOTH,
   GL_LINE_STIPPLE,
   GL_POLYGON_SMOOTH,
   GL_POLYGON_STIPPLE,
   GL_CULL_FACE,
   GL_LIGHTING,
   GL_COLOR_MATERIAL,
   GL_FOG,
   GL_DEPTH_TEST,
   GL_STENCIL_TEST,
   GL_NORMALIZE,
   GL_ALPHA_TEST,
   GL_DITHER,
   GL_BLEND,
   GL_INDEX_LOGIC_OP,
   GL_COLOR_LOGIC_OP,
   GL_SCISSOR_TEST,
   GL_TEXTURE_GEN_S,
   GL_TEXTURE_GEN_T,
   GL_TEXTURE_GEN_R,
   GL_TEXTURE_GEN_Q,
   GL_AUTO_NORMAL,
   GL_MAP1_COLOR_4,
   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_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_TEXTURE_1D,
   GL_TEXTURE_2D,
   GL_POLYGON_OFFSET_POINT,
   GL_POLYGON_OFFSET_LINE,
   GL_CLIP_PLANE0,
   GL_CLIP_PLANE1,
   GL_CLIP_PLANE2,
   GL_CLIP_PLANE3,
   GL_CLIP_PLANE4,
   GL_CLIP_PLANE5,
   GL_LIGHT0,
   GL_LIGHT1,
   GL_LIGHT2,
   GL_LIGHT3,
   GL_LIGHT4,
   GL_LIGHT5,
   GL_LIGHT6,
   GL_LIGHT7,
   GL_POLYGON_OFFSET_FILL,
   GL_TEXTURE_3D_EXT
);
for ServerCapabilityEnm use
(
   GL_POINT_SMOOTH                            => 16#0B10#,
   GL_LINE_SMOOTH                             => 16#0B20#,
   GL_LINE_STIPPLE                            => 16#0B24#,
   GL_POLYGON_SMOOTH                          => 16#0B41#,
   GL_POLYGON_STIPPLE                         => 16#0B42#,
   GL_CULL_FACE                               => 16#0B44#,
   GL_LIGHTING                                => 16#0B50#,
   GL_COLOR_MATERIAL                          => 16#0B57#,
   GL_FOG                                     => 16#0B60#,
   GL_DEPTH_TEST                              => 16#0B71#,
   GL_STENCIL_TEST                            => 16#0B90#,
   GL_NORMALIZE                               => 16#0BA1#,
   GL_ALPHA_TEST                              => 16#0BC0#,
   GL_DITHER                                  => 16#0BD0#,
   GL_BLEND                                   => 16#0BE2#,
   GL_INDEX_LOGIC_OP                          => 16#0BF1#,
   GL_COLOR_LOGIC_OP                          => 16#0BF2#,
   GL_SCISSOR_TEST                            => 16#0C11#,
   GL_TEXTURE_GEN_S                           => 16#0C60#,
   GL_TEXTURE_GEN_T                           => 16#0C61#,
   GL_TEXTURE_GEN_R                           => 16#0C62#,
   GL_TEXTURE_GEN_Q                           => 16#0C63#,
   GL_AUTO_NORMAL                             => 16#0D80#,
   GL_MAP1_COLOR_4                            => 16#0D90#,
   GL_MAP1_INDEX                              => 16#0D91#,
   GL_MAP1_NORMAL                             => 16#0D92#,
   GL_MAP1_TEXTURE_COORD_1                    => 16#0D93#,
   GL_MAP1_TEXTURE_COORD_2                    => 16#0D94#,
   GL_MAP1_TEXTURE_COORD_3                    => 16#0D95#,
   GL_MAP1_TEXTURE_COORD_4                    => 16#0D96#,
   GL_MAP1_VERTEX_3                           => 16#0D97#,
   GL_MAP1_VERTEX_4                           => 16#0D98#,
   GL_MAP2_COLOR_4                            => 16#0DB0#,
   GL_MAP2_INDEX                              => 16#0DB1#,
   GL_MAP2_NORMAL                             => 16#0DB2#,
   GL_MAP2_TEXTURE_COORD_1                    => 16#0DB3#,
   GL_MAP2_TEXTURE_COORD_2                    => 16#0DB4#,
   GL_MAP2_TEXTURE_COORD_3                    => 16#0DB5#,
   GL_MAP2_TEXTURE_COORD_4                    => 16#0DB6#,
   GL_MAP2_VERTEX_3                           => 16#0DB7#,
   GL_MAP2_VERTEX_4                           => 16#0DB8#,
   GL_TEXTURE_1D                              => 16#0DE0#,
   GL_TEXTURE_2D                              => 16#0DE1#,
   GL_POLYGON_OFFSET_POINT                    => 16#2A01#,
   GL_POLYGON_OFFSET_LINE                     => 16#2A02#,
   GL_CLIP_PLANE0                             => 16#3000#,
   GL_CLIP_PLANE1                             => 16#3001#,
   GL_CLIP_PLANE2                             => 16#3002#,
   GL_CLIP_PLANE3                             => 16#3003#,
   GL_CLIP_PLANE4                             => 16#3004#,
   GL_CLIP_PLANE5                             => 16#3005#,
   GL_LIGHT0                                  => 16#4000#,
   GL_LIGHT1                                  => 16#4001#,
   GL_LIGHT2                                  => 16#4002#,
   GL_LIGHT3                                  => 16#4003#,
   GL_LIGHT4                                  => 16#4004#,
   GL_LIGHT5                                  => 16#4005#,
   GL_LIGHT6                                  => 16#4006#,
   GL_LIGHT7                                  => 16#4007#,
   GL_POLYGON_OFFSET_FILL                     => 16#8037#,
   GL_TEXTURE_3D_EXT                          => 16#806F#
);
for ServerCapabilityEnm'Size use GLenum'size;

procedure glEnable (cap: ServerCapabilityEnm);

procedure glDisable (cap: ServerCapabilityEnm);

function glIsEnabled (cap: ServerCapabilityEnm)
return GLboolean;


-- Client state
type ClientCapabilityEnm is
(
   GL_VERTEX_ARRAY,
   GL_NORMAL_ARRAY,
   GL_COLOR_ARRAY,
   GL_INDEX_ARRAY,
   GL_TEXTURE_COORD_ARRAY,
   GL_EDGE_FLAG_ARRAY
);
for ClientCapabilityEnm use
(
   GL_VERTEX_ARRAY                            => 16#8074#,
   GL_NORMAL_ARRAY                            => 16#8075#,
   GL_COLOR_ARRAY                             => 16#8076#,
   GL_INDEX_ARRAY                             => 16#8077#,
   GL_TEXTURE_COORD_ARRAY                     => 16#8078#,
   GL_EDGE_FLAG_ARRAY                         => 16#8079#
);
for ClientCapabilityEnm'Size use GLenum'size;

procedure glEnableClientState (cap: ClientCapabilityEnm);

procedure glDisableClientState (cap: ClientCapabilityEnm);


-- Parameter fetches
type ParameterNameEnm is
(
   GL_CURRENT_COLOR,
   GL_CURRENT_INDEX,
   GL_CURRENT_NORMAL,
   GL_CURRENT_TEXTURE_COORDS,
   GL_CURRENT_RASTER_COLOR,
   GL_CURRENT_RASTER_INDEX,
   GL_CURRENT_RASTER_TEXTURE_COORDS,
   GL_CURRENT_RASTER_POSITION,
   GL_CURRENT_RASTER_POSITION_VALID,
   GL_CURRENT_RASTER_DISTANCE,
   GL_POINT_SMOOTH,
   GL_POINT_SIZE,
   GL_POINT_SIZE_RANGE,
   GL_POINT_SIZE_GRANULARITY,
   GL_LINE_SMOOTH,
   GL_LINE_WIDTH,
   GL_LINE_WIDTH_RANGE,
   GL_LINE_WIDTH_GRANULARITY,
   GL_LINE_STIPPLE,
   GL_LINE_STIPPLE_PATTERN,
   GL_LINE_STIPPLE_REPEAT,
   GL_LIST_MODE,
   GL_MAX_LIST_NESTING,
   GL_LIST_BASE,
   GL_LIST_INDEX,
   GL_POLYGON_MODE,
   GL_POLYGON_SMOOTH,
   GL_POLYGON_STIPPLE,
   GL_EDGE_FLAG,
   GL_CULL_FACE,
   GL_CULL_FACE_MODE,
   GL_FRONT_FACE,
   GL_LIGHTING,
   GL_LIGHT_MODEL_LOCAL_VIEWER,
   GL_LIGHT_MODEL_TWO_SIDE,
   GL_LIGHT_MODEL_AMBIENT,
   GL_SHADE_MODEL,
   GL_COLOR_MATERIAL_FACE,
   GL_COLOR_MATERIAL_PARAMETER,
   GL_COLOR_MATERIAL,
   GL_FOG,
   GL_FOG_INDEX,
   GL_FOG_DENSITY,
   GL_FOG_START,
   GL_FOG_END,
   GL_FOG_MODE,
   GL_FOG_COLOR,
   GL_DEPTH_RANGE,
   GL_DEPTH_TEST,
   GL_DEPTH_WRITEMASK,
   GL_DEPTH_CLEAR_VALUE,
   GL_DEPTH_FUNC,
   GL_ACCUM_CLEAR_VALUE,
   GL_STENCIL_TEST,
   GL_STENCIL_CLEAR_VALUE,
   GL_STENCIL_FUNC,
   GL_STENCIL_VALUE_MASK,
   GL_STENCIL_FAIL,
   GL_STENCIL_PASS_DEPTH_FAIL,
   GL_STENCIL_PASS_DEPTH_PASS,
   GL_STENCIL_REF,
   GL_STENCIL_WRITEMASK,
   GL_MATRIX_MODE,
   GL_NORMALIZE,
   GL_VIEWPORT,
   GL_MODELVIEW_STACK_DEPTH,
   GL_PROJECTION_STACK_DEPTH,
   GL_TEXTURE_STACK_DEPTH,
   GL_MODELVIEW_MATRIX,
   GL_PROJECTION_MATRIX,
   GL_TEXTURE_MATRIX,
   GL_ATTRIB_STACK_DEPTH,
   GL_CLIENT_ATTRIB_STACK_DEPTH,
   GL_ALPHA_TEST,
   GL_ALPHA_TEST_FUNC,
   GL_ALPHA_TEST_REF,
   GL_DITHER,
   GL_BLEND_DST,
   GL_BLEND_SRC,
   GL_BLEND,
   GL_LOGIC_OP_MODE,
   GL_INDEX_LOGIC_OP,
   GL_COLOR_LOGIC_OP,
   GL_AUX_BUFFERS,
   GL_DRAW_BUFFER,
   GL_READ_BUFFER,
   GL_SCISSOR_BOX,
   GL_SCISSOR_TEST,
   GL_INDEX_CLEAR_VALUE,
   GL_INDEX_WRITEMASK,
   GL_COLOR_CLEAR_VALUE,
   GL_COLOR_WRITEMASK,
   GL_INDEX_MODE,
   GL_RGBA_MODE,
   GL_DOUBLEBUFFER,
   GL_STEREO,
   GL_RENDER_MODE,
   GL_PERSPECTIVE_CORRECTION_HINT,
   GL_POINT_SMOOTH_HINT,
   GL_LINE_SMOOTH_HINT,
   GL_POLYGON_SMOOTH_HINT,
   GL_FOG_HINT,
   GL_TEXTURE_GEN_S,
   GL_TEXTURE_GEN_T,
   GL_TEXTURE_GEN_R,
   GL_TEXTURE_GEN_Q,
   GL_PIXEL_MAP_I_TO_I_SIZE,
   GL_PIXEL_MAP_S_TO_S_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_UNPACK_SWAP_BYTES,
   GL_UNPACK_LSB_FIRST,
   GL_UNPACK_ROW_LENGTH,
   GL_UNPACK_SKIP_ROWS,
   GL_UNPACK_SKIP_PIXELS,
   GL_UNPACK_ALIGNMENT,
   GL_PACK_SWAP_BYTES,
   GL_PACK_LSB_FIRST,
   GL_PACK_ROW_LENGTH,
   GL_PACK_SKIP_ROWS,
   GL_PACK_SKIP_PIXELS,
   GL_PACK_ALIGNMENT,
   GL_MAP_COLOR,
   GL_MAP_STENCIL,
   GL_INDEX_SHIFT,
   GL_INDEX_OFFSET,
   GL_RED_SCALE,
   GL_RED_BIAS,
   GL_ZOOM_X,
   GL_ZOOM_Y,
   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_MAX_EVAL_ORDER,
   GL_MAX_LIGHTS,
   GL_MAX_CLIP_PLANES,
   GL_MAX_TEXTURE_SIZE,
   GL_MAX_PIXEL_MAP_TABLE,
   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_VIEWPORT_DIMS,
   GL_MAX_CLIENT_ATTRIB_STACK_DEPTH,
   GL_SUBPIXEL_BITS,
   GL_INDEX_BITS,
   GL_RED_BITS,
   GL_GREEN_BITS,
   GL_BLUE_BITS,
   GL_ALPHA_BITS,
   GL_DEPTH_BITS,
   GL_STENCIL_BITS,
   GL_ACCUM_RED_BITS,
   GL_ACCUM_GREEN_BITS,
   GL_ACCUM_BLUE_BITS,
   GL_ACCUM_ALPHA_BITS,
   GL_NAME_STACK_DEPTH,
   GL_AUTO_NORMAL,
   GL_MAP1_COLOR_4,
   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_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_MAP1_GRID_DOMAIN,
   GL_MAP1_GRID_SEGMENTS,
   GL_MAP2_GRID_DOMAIN,
   GL_MAP2_GRID_SEGMENTS,
   GL_TEXTURE_1D,
   GL_TEXTURE_2D,
   GL_POLYGON_OFFSET_UNITS,
   GL_POLYGON_OFFSET_POINT,
   GL_POLYGON_OFFSET_LINE,
   GL_POLYGON_OFFSET_FILL,
   GL_POLYGON_OFFSET_FACTOR,
   GL_TEXTURE_BINDING_1D,
   GL_TEXTURE_BINDING_2D,
   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
);
for ParameterNameEnm use
(
   GL_CURRENT_COLOR                           => 16#0B00#,
   GL_CURRENT_INDEX                           => 16#0B01#,
   GL_CURRENT_NORMAL                          => 16#0B02#,
   GL_CURRENT_TEXTURE_COORDS                  => 16#0B03#,
   GL_CURRENT_RASTER_COLOR                    => 16#0B04#,
   GL_CURRENT_RASTER_INDEX                    => 16#0B05#,
   GL_CURRENT_RASTER_TEXTURE_COORDS           => 16#0B06#,
   GL_CURRENT_RASTER_POSITION                 => 16#0B07#,
   GL_CURRENT_RASTER_POSITION_VALID           => 16#0B08#,
   GL_CURRENT_RASTER_DISTANCE                 => 16#0B09#,
   GL_POINT_SMOOTH                            => 16#0B10#,
   GL_POINT_SIZE                              => 16#0B11#,
   GL_POINT_SIZE_RANGE                        => 16#0B12#,
   GL_POINT_SIZE_GRANULARITY                  => 16#0B13#,
   GL_LINE_SMOOTH                             => 16#0B20#,
   GL_LINE_WIDTH                              => 16#0B21#,
   GL_LINE_WIDTH_RANGE                        => 16#0B22#,
   GL_LINE_WIDTH_GRANULARITY                  => 16#0B23#,
   GL_LINE_STIPPLE                            => 16#0B24#,
   GL_LINE_STIPPLE_PATTERN                    => 16#0B25#,
   GL_LINE_STIPPLE_REPEAT                     => 16#0B26#,
   GL_LIST_MODE                               => 16#0B30#,
   GL_MAX_LIST_NESTING                        => 16#0B31#,
   GL_LIST_BASE                               => 16#0B32#,
   GL_LIST_INDEX                              => 16#0B33#,
   GL_POLYGON_MODE                            => 16#0B40#,
   GL_POLYGON_SMOOTH                          => 16#0B41#,
   GL_POLYGON_STIPPLE                         => 16#0B42#,
   GL_EDGE_FLAG                               => 16#0B43#,
   GL_CULL_FACE                               => 16#0B44#,
   GL_CULL_FACE_MODE                          => 16#0B45#,
   GL_FRONT_FACE                              => 16#0B46#,
   GL_LIGHTING                                => 16#0B50#,
   GL_LIGHT_MODEL_LOCAL_VIEWER                => 16#0B51#,
   GL_LIGHT_MODEL_TWO_SIDE                    => 16#0B52#,
   GL_LIGHT_MODEL_AMBIENT                     => 16#0B53#,
   GL_SHADE_MODEL                             => 16#0B54#,
   GL_COLOR_MATERIAL_FACE                     => 16#0B55#,
   GL_COLOR_MATERIAL_PARAMETER                => 16#0B56#,
   GL_COLOR_MATERIAL                          => 16#0B57#,
   GL_FOG                                     => 16#0B60#,
   GL_FOG_INDEX                               => 16#0B61#,
   GL_FOG_DENSITY                             => 16#0B62#,
   GL_FOG_START                               => 16#0B63#,
   GL_FOG_END                                 => 16#0B64#,
   GL_FOG_MODE                                => 16#0B65#,
   GL_FOG_COLOR                               => 16#0B66#,
   GL_DEPTH_RANGE                             => 16#0B70#,
   GL_DEPTH_TEST                              => 16#0B71#,
   GL_DEPTH_WRITEMASK                         => 16#0B72#,
   GL_DEPTH_CLEAR_VALUE                       => 16#0B73#,
   GL_DEPTH_FUNC                              => 16#0B74#,
   GL_ACCUM_CLEAR_VALUE                       => 16#0B80#,
   GL_STENCIL_TEST                            => 16#0B90#,
   GL_STENCIL_CLEAR_VALUE                     => 16#0B91#,
   GL_STENCIL_FUNC                            => 16#0B92#,
   GL_STENCIL_VALUE_MASK                      => 16#0B93#,
   GL_STENCIL_FAIL                            => 16#0B94#,
   GL_STENCIL_PASS_DEPTH_FAIL                 => 16#0B95#,
   GL_STENCIL_PASS_DEPTH_PASS                 => 16#0B96#,
   GL_STENCIL_REF                             => 16#0B97#,
   GL_STENCIL_WRITEMASK                       => 16#0B98#,
   GL_MATRIX_MODE                             => 16#0BA0#,
   GL_NORMALIZE                               => 16#0BA1#,
   GL_VIEWPORT                                => 16#0BA2#,
   GL_MODELVIEW_STACK_DEPTH                   => 16#0BA3#,
   GL_PROJECTION_STACK_DEPTH                  => 16#0BA4#,
   GL_TEXTURE_STACK_DEPTH                     => 16#0BA5#,
   GL_MODELVIEW_MATRIX                        => 16#0BA6#,
   GL_PROJECTION_MATRIX                       => 16#0BA7#,
   GL_TEXTURE_MATRIX                          => 16#0BA8#,
   GL_ATTRIB_STACK_DEPTH                      => 16#0BB0#,
   GL_CLIENT_ATTRIB_STACK_DEPTH               => 16#0BB1#,
   GL_ALPHA_TEST                              => 16#0BC0#,
   GL_ALPHA_TEST_FUNC                         => 16#0BC1#,
   GL_ALPHA_TEST_REF                          => 16#0BC2#,
   GL_DITHER                                  => 16#0BD0#,
   GL_BLEND_DST                               => 16#0BE0#,
   GL_BLEND_SRC                               => 16#0BE1#,
   GL_BLEND                                   => 16#0BE2#,
   GL_LOGIC_OP_MODE                           => 16#0BF0#,
   GL_INDEX_LOGIC_OP                          => 16#0BF1#,
   GL_COLOR_LOGIC_OP                          => 16#0BF2#,
   GL_AUX_BUFFERS                             => 16#0C00#,
   GL_DRAW_BUFFER                             => 16#0C01#,
   GL_READ_BUFFER                             => 16#0C02#,
   GL_SCISSOR_BOX                             => 16#0C10#,
   GL_SCISSOR_TEST                            => 16#0C11#,
   GL_INDEX_CLEAR_VALUE                       => 16#0C20#,
   GL_INDEX_WRITEMASK                         => 16#0C21#,
   GL_COLOR_CLEAR_VALUE                       => 16#0C22#,
   GL_COLOR_WRITEMASK                         => 16#0C23#,
   GL_INDEX_MODE                              => 16#0C30#,
   GL_RGBA_MODE                               => 16#0C31#,
   GL_DOUBLEBUFFER                            => 16#0C32#,
   GL_STEREO                                  => 16#0C33#,
   GL_RENDER_MODE                             => 16#0C40#,
   GL_PERSPECTIVE_CORRECTION_HINT             => 16#0C50#,
   GL_POINT_SMOOTH_HINT                       => 16#0C51#,
   GL_LINE_SMOOTH_HINT                        => 16#0C52#,
   GL_POLYGON_SMOOTH_HINT                     => 16#0C53#,
   GL_FOG_HINT                                => 16#0C54#,
   GL_TEXTURE_GEN_S                           => 16#0C60#,
   GL_TEXTURE_GEN_T                           => 16#0C61#,
   GL_TEXTURE_GEN_R                           => 16#0C62#,
   GL_TEXTURE_GEN_Q                           => 16#0C63#,
   GL_PIXEL_MAP_I_TO_I_SIZE                   => 16#0CB0#,
   GL_PIXEL_MAP_S_TO_S_SIZE                   => 16#0CB1#,
   GL_PIXEL_MAP_I_TO_R_SIZE                   => 16#0CB2#,
   GL_PIXEL_MAP_I_TO_G_SIZE                   => 16#0CB3#,
   GL_PIXEL_MAP_I_TO_B_SIZE                   => 16#0CB4#,
   GL_PIXEL_MAP_I_TO_A_SIZE                   => 16#0CB5#,
   GL_PIXEL_MAP_R_TO_R_SIZE                   => 16#0CB6#,
   GL_PIXEL_MAP_G_TO_G_SIZE                   => 16#0CB7#,
   GL_PIXEL_MAP_B_TO_B_SIZE                   => 16#0CB8#,
   GL_PIXEL_MAP_A_TO_A_SIZE                   => 16#0CB9#,
   GL_UNPACK_SWAP_BYTES                       => 16#0CF0#,
   GL_UNPACK_LSB_FIRST                        => 16#0CF1#,
   GL_UNPACK_ROW_LENGTH                       => 16#0CF2#,
   GL_UNPACK_SKIP_ROWS                        => 16#0CF3#,
   GL_UNPACK_SKIP_PIXELS                      => 16#0CF4#,
   GL_UNPACK_ALIGNMENT                        => 16#0CF5#,
   GL_PACK_SWAP_BYTES                         => 16#0D00#,
   GL_PACK_LSB_FIRST                          => 16#0D01#,
   GL_PACK_ROW_LENGTH                         => 16#0D02#,
   GL_PACK_SKIP_ROWS                          => 16#0D03#,
   GL_PACK_SKIP_PIXELS                        => 16#0D04#,
   GL_PACK_ALIGNMENT                          => 16#0D05#,
   GL_MAP_COLOR                               => 16#0D10#,
   GL_MAP_STENCIL                             => 16#0D11#,
   GL_INDEX_SHIFT                             => 16#0D12#,
   GL_INDEX_OFFSET                            => 16#0D13#,
   GL_RED_SCALE                               => 16#0D14#,
   GL_RED_BIAS                                => 16#0D15#,
   GL_ZOOM_X                                  => 16#0D16#,
   GL_ZOOM_Y                                  => 16#0D17#,
   GL_GREEN_SCALE                             => 16#0D18#,
   GL_GREEN_BIAS                              => 16#0D19#,
   GL_BLUE_SCALE                              => 16#0D1A#,
   GL_BLUE_BIAS                               => 16#0D1B#,
   GL_ALPHA_SCALE                             => 16#0D1C#,
   GL_ALPHA_BIAS                              => 16#0D1D#,
   GL_DEPTH_SCALE                             => 16#0D1E#,
   GL_DEPTH_BIAS                              => 16#0D1F#,
   GL_MAX_EVAL_ORDER                          => 16#0D30#,
   GL_MAX_LIGHTS                              => 16#0D31#,
   GL_MAX_CLIP_PLANES                         => 16#0D32#,
   GL_MAX_TEXTURE_SIZE                        => 16#0D33#,
   GL_MAX_PIXEL_MAP_TABLE                     => 16#0D34#,
   GL_MAX_ATTRIB_STACK_DEPTH                  => 16#0D35#,
   GL_MAX_MODELVIEW_STACK_DEPTH               => 16#0D36#,
   GL_MAX_NAME_STACK_DEPTH                    => 16#0D37#,
   GL_MAX_PROJECTION_STACK_DEPTH              => 16#0D38#,
   GL_MAX_TEXTURE_STACK_DEPTH                 => 16#0D39#,
   GL_MAX_VIEWPORT_DIMS                       => 16#0D3A#,
   GL_MAX_CLIENT_ATTRIB_STACK_DEPTH           => 16#0D3B#,
   GL_SUBPIXEL_BITS                           => 16#0D50#,
   GL_INDEX_BITS                              => 16#0D51#,
   GL_RED_BITS                                => 16#0D52#,
   GL_GREEN_BITS                              => 16#0D53#,
   GL_BLUE_BITS                               => 16#0D54#,
   GL_ALPHA_BITS                              => 16#0D55#,
   GL_DEPTH_BITS                              => 16#0D56#,
   GL_STENCIL_BITS                            => 16#0D57#,
   GL_ACCUM_RED_BITS                          => 16#0D58#,
   GL_ACCUM_GREEN_BITS                        => 16#0D59#,
   GL_ACCUM_BLUE_BITS                         => 16#0D5A#,
   GL_ACCUM_ALPHA_BITS                        => 16#0D5B#,
   GL_NAME_STACK_DEPTH                        => 16#0D70#,
   GL_AUTO_NORMAL                             => 16#0D80#,
   GL_MAP1_COLOR_4                            => 16#0D90#,
   GL_MAP1_INDEX                              => 16#0D91#,
   GL_MAP1_NORMAL                             => 16#0D92#,
   GL_MAP1_TEXTURE_COORD_1                    => 16#0D93#,
   GL_MAP1_TEXTURE_COORD_2                    => 16#0D94#,
   GL_MAP1_TEXTURE_COORD_3                    => 16#0D95#,
   GL_MAP1_TEXTURE_COORD_4                    => 16#0D96#,
   GL_MAP1_VERTEX_3                           => 16#0D97#,
   GL_MAP1_VERTEX_4                           => 16#0D98#,
   GL_MAP2_COLOR_4                            => 16#0DB0#,
   GL_MAP2_INDEX                              => 16#0DB1#,
   GL_MAP2_NORMAL                             => 16#0DB2#,
   GL_MAP2_TEXTURE_COORD_1                    => 16#0DB3#,
   GL_MAP2_TEXTURE_COORD_2                    => 16#0DB4#,
   GL_MAP2_TEXTURE_COORD_3                    => 16#0DB5#,
   GL_MAP2_TEXTURE_COORD_4                    => 16#0DB6#,
   GL_MAP2_VERTEX_3                           => 16#0DB7#,
   GL_MAP2_VERTEX_4                           => 16#0DB8#,
   GL_MAP1_GRID_DOMAIN                        => 16#0DD0#,
   GL_MAP1_GRID_SEGMENTS                      => 16#0DD1#,
   GL_MAP2_GRID_DOMAIN                        => 16#0DD2#,
   GL_MAP2_GRID_SEGMENTS                      => 16#0DD3#,
   GL_TEXTURE_1D                              => 16#0DE0#,
   GL_TEXTURE_2D                              => 16#0DE1#,
   GL_POLYGON_OFFSET_UNITS                    => 16#2A00#,
   GL_POLYGON_OFFSET_POINT                    => 16#2A01#,
   GL_POLYGON_OFFSET_LINE                     => 16#2A02#,
   GL_POLYGON_OFFSET_FILL                     => 16#8037#,
   GL_POLYGON_OFFSET_FACTOR                   => 16#8038#,
   GL_TEXTURE_BINDING_1D                      => 16#8068#,
   GL_TEXTURE_BINDING_2D                      => 16#8069#,
   GL_VERTEX_ARRAY                            => 16#8074#,
   GL_NORMAL_ARRAY                            => 16#8075#,
   GL_COLOR_ARRAY                             => 16#8076#,
   GL_INDEX_ARRAY                             => 16#8077#,
   GL_TEXTURE_COORD_ARRAY                     => 16#8078#,
   GL_EDGE_FLAG_ARRAY                         => 16#8079#,
   GL_VERTEX_ARRAY_SIZE                       => 16#807A#,
   GL_VERTEX_ARRAY_TYPE                       => 16#807B#,
   GL_VERTEX_ARRAY_STRIDE                     => 16#807C#,
   GL_NORMAL_ARRAY_TYPE                       => 16#807E#,
   GL_NORMAL_ARRAY_STRIDE                     => 16#807F#,
   GL_COLOR_ARRAY_SIZE                        => 16#8081#,
   GL_COLOR_ARRAY_TYPE                        => 16#8082#,
   GL_COLOR_ARRAY_STRIDE                      => 16#8083#,
   GL_INDEX_ARRAY_TYPE                        => 16#8085#,
   GL_INDEX_ARRAY_STRIDE                      => 16#8086#,
   GL_TEXTURE_COORD_ARRAY_SIZE                => 16#8088#,
   GL_TEXTURE_COORD_ARRAY_TYPE                => 16#8089#,
   GL_TEXTURE_COORD_ARRAY_STRIDE              => 16#808A#,
   GL_EDGE_FLAG_ARRAY_STRIDE                  => 16#808C#
);
for ParameterNameEnm'Size use GLenum'size;

procedure glGetBooleanv (pname : ParameterNameEnm;
                         params: GLbooleanPtr);

procedure glGetDoublev (pname : ParameterNameEnm;
                        params: GLdoublePtr);

procedure glGetFloatv (pname : ParameterNameEnm;
                       params: GLfloatPtr);

procedure glGetIntegerv (pname : ParameterNameEnm;
                         params: GLintPtr);


-- Render mode
type RenderModeEnm is
(
   GL_RENDER,
   GL_FEEDBACK,
   GL_SELECT
);
for RenderModeEnm use
(
   GL_RENDER                                  => 16#1C00#,
   GL_FEEDBACK                                => 16#1C01#,
   GL_SELECT                                  => 16#1C02#
);
for RenderModeEnm'Size use GLenum'size;

function glRenderMode(mode: RenderModeEnm)
return GLint;


-- Error information
type ErrorEnm is
(
   GL_NO_ERROR,
   GL_INVALID_ENUM,
   GL_INVALID_VALUE,
   GL_INVALID_OPERATION,
   GL_STACK_OVERFLOW,
   GL_STACK_UNDERFLOW,
   GL_OUT_OF_MEMORY
);
for ErrorEnm use
(
   GL_NO_ERROR                                => 16#0000#,
   GL_INVALID_ENUM                            => 16#0500#,
   GL_INVALID_VALUE                           => 16#0501#,
   GL_INVALID_OPERATION                       => 16#0502#,
   GL_STACK_OVERFLOW                          => 16#0503#,
   GL_STACK_UNDERFLOW                         => 16#0504#,
   GL_OUT_OF_MEMORY                           => 16#0505#
);
for ErrorEnm'Size use GLenum'size;

function glGetError
return ErrorEnm;


-- Connection description
type StringEnm is
(
   GL_VENDOR,
   GL_RENDERER,
   GL_VERSION,
   GL_EXTENSIONS
);
for StringEnm use
(
   GL_VENDOR                                  => 16#1F00#,
   GL_RENDERER                                => 16#1F01#,
   GL_VERSION                                 => 16#1F02#,
   GL_EXTENSIONS                              => 16#1F03#
);
for StringEnm'Size use GLenum'size;

function glGetString (name: StringEnm)
return GLubytePtr;


-- Behavior hints
type HintEnm is
(
   GL_PERSPECTIVE_CORRECTION_HINT,
   GL_POINT_SMOOTH_HINT,
   GL_LINE_SMOOTH_HINT,
   GL_POLYGON_SMOOTH_HINT,
   GL_FOG_HINT
);
for HintEnm use
(
   GL_PERSPECTIVE_CORRECTION_HINT             => 16#0C50#,
   GL_POINT_SMOOTH_HINT                       => 16#0C51#,
   GL_LINE_SMOOTH_HINT                        => 16#0C52#,
   GL_POLYGON_SMOOTH_HINT                     => 16#0C53#,
   GL_FOG_HINT                                => 16#0C54#
);
for HintEnm'Size use GLenum'size;

type HintModeEnm is
(
   GL_DONT_CARE,
   GL_FASTEST,
   GL_NICEST
);
for HintModeEnm use
(
   GL_DONT_CARE                               => 16#1100#,
   GL_FASTEST                                 => 16#1101#,
   GL_NICEST                                  => 16#1102#
);
for HintModeEnm'Size use GLenum'size;

procedure glHint (target: HintEnm;
                  mode  : HintModeEnm);


-- Accumulation buffer
type AccumEnm is
(
   GL_ACCUM,
   GL_LOAD,
   GL_RETURN,
   GL_MULT,
   GL_ADD
);
for AccumEnm use
(
   GL_ACCUM                                   => 16#0100#,
   GL_LOAD                                    => 16#0101#,
   GL_RETURN                                  => 16#0102#,
   GL_MULT                                    => 16#0103#,
   GL_ADD                                     => 16#0104#
);
for AccumEnm'Size use GLenum'size;

procedure glAccum (op   : AccumEnm;
                   value: GLfloat);


-- Matrix mode
type MatrixModeEnm is
(
   GL_MODELVIEW,
   GL_PROJECTION,
   GL_TEXTURE
);
for MatrixModeEnm use
(
   GL_MODELVIEW                               => 16#1700#,
   GL_PROJECTION                              => 16#1701#,
   GL_TEXTURE                                 => 16#1702#
);
for MatrixModeEnm'Size use GLenum'size;

procedure glMatrixMode (mode: MatrixModeEnm);


-- Display liststype ListModeEnm is
type ListModeEnm is
(
   GL_COMPILE,
   GL_COMPILE_AND_EXECUTE
);
for ListModeEnm use
(
   GL_COMPILE                                 => 16#1300#,
   GL_COMPILE_AND_EXECUTE                     => 16#1301#
);
for ListModeEnm'Size use GLenum'size;

type OffsetTypeEnm is
(
   GL_BYTE,
   GL_UNSIGNED_BYTE,
   GL_SHORT,
   GL_UNSIGNED_SHORT,
   GL_INT,
   GL_UNSIGNED_INT,
   GL_FLOAT,
   GL_2_BYTES,
   GL_3_BYTES,
   GL_4_BYTES
);
for OffsetTypeEnm use
(
   GL_BYTE                                    => 16#1400#,
   GL_UNSIGNED_BYTE                           => 16#1401#,
   GL_SHORT                                   => 16#1402#,
   GL_UNSIGNED_SHORT                          => 16#1403#,
   GL_INT                                     => 16#1404#,
   GL_UNSIGNED_INT                            => 16#1405#,
   GL_FLOAT                                   => 16#1406#,
   GL_2_BYTES                                 => 16#1407#,
   GL_3_BYTES                                 => 16#1408#,
   GL_4_BYTES                                 => 16#1409#
);
for OffsetTypeEnm'Size use GLenum'size;

function glIsList (list: GLuint)
return GLboolean;

procedure glDeleteLists (list   : GLuint;
                         c_range: GLsizei);

function glGenLists (c_range: GLsizei)
return GLuint;

procedure glNewList (list: GLuint;
                     mode: ListModeEnm);

procedure glEndList;

procedure glCallList (list: GLuint);

procedure glCallLists (n     : GLsizei;
                       c_type: OffsetTypeEnm;
                       lists : GLpointer);

procedure glListBase (base: GLuint);


-- Object definition
type ObjectTypeEnm is
(
   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
);
for ObjectTypeEnm use
(
   GL_POINTS                                  => 16#0000#,
   GL_LINES                                   => 16#0001#,
   GL_LINE_LOOP                               => 16#0002#,
   GL_LINE_STRIP                              => 16#0003#,
   GL_TRIANGLES                               => 16#0004#,
   GL_TRIANGLE_STRIP                          => 16#0005#,
   GL_TRIANGLE_FAN                            => 16#0006#,
   GL_QUADS                                   => 16#0007#,
   GL_QUAD_STRIP                              => 16#0008#,
   GL_POLYGON                                 => 16#0009#
);
for ObjectTypeEnm'Size use GLenum'size;

procedure glBegin (mode: ObjectTypeEnm);

procedure glEnd;


-- Vertex arrays and related
type VertexTypeEnm is
(
   GL_SHORT,
   GL_INT,
   GL_FLOAT,
   GL_DOUBLE
);
for VertexTypeEnm use
(
   GL_SHORT                                   => 16#1402#,
   GL_INT                                     => 16#1404#,
   GL_FLOAT                                   => 16#1406#,
   GL_DOUBLE                                  => 16#140A#
);
for VertexTypeEnm'Size use GLenum'size;

type NormalTypeEnm is
(
   GL_BYTE,
   GL_SHORT,
   GL_INT,
   GL_FLOAT,
   GL_DOUBLE
);
for NormalTypeEnm use
(
   GL_BYTE                                    => 16#1400#,
   GL_SHORT                                   => 16#1402#,
   GL_INT                                     => 16#1404#,
   GL_FLOAT                                   => 16#1406#,
   GL_DOUBLE                                  => 16#140A#
);
for NormalTypeEnm'Size use GLenum'size;

type ColorTypeEnm is
(
   GL_BYTE,
   GL_UNSIGNED_BYTE,
   GL_SHORT,
   GL_UNSIGNED_SHORT,
   GL_INT,
   GL_UNSIGNED_INT,
   GL_FLOAT,
   GL_DOUBLE
);
for ColorTypeEnm use
(
   GL_BYTE                                    => 16#1400#,
   GL_UNSIGNED_BYTE                           => 16#1401#,
   GL_SHORT                                   => 16#1402#,
   GL_UNSIGNED_SHORT                          => 16#1403#,
   GL_INT                                     => 16#1404#,
   GL_UNSIGNED_INT                            => 16#1405#,
   GL_FLOAT                                   => 16#1406#,
   GL_DOUBLE                                  => 16#140A#
);
for ColorTypeEnm'Size use GLenum'size;

type IndexTypeEnm is
(
   GL_UNSIGNED_BYTE,
   GL_SHORT,
   GL_INT,
   GL_FLOAT,
   GL_DOUBLE
);
for IndexTypeEnm use
(
   GL_UNSIGNED_BYTE                           => 16#1401#,
   GL_SHORT                                   => 16#1402#,
   GL_INT                                     => 16#1404#,
   GL_FLOAT                                   => 16#1406#,
   GL_DOUBLE                                  => 16#140A#
);
for IndexTypeEnm'Size use GLenum'size;

type TexCoordTypeEnm is
(
   GL_SHORT,
   GL_INT,
   GL_FLOAT,
   GL_DOUBLE
);
for TexCoordTypeEnm use
(
   GL_SHORT                                   => 16#1402#,
   GL_INT                                     => 16#1404#,
   GL_FLOAT                                   => 16#1406#,
   GL_DOUBLE                                  => 16#140A#
);
for TexCoordTypeEnm'Size use GLenum'size;

type ArrayIndexTypeEnm is
(
   GL_UNSIGNED_BYTE,
   GL_UNSIGNED_SHORT,
   GL_UNSIGNED_INT
);
for ArrayIndexTypeEnm use
(
   GL_UNSIGNED_BYTE                           => 16#1401#,
   GL_UNSIGNED_SHORT                          => 16#1403#,
   GL_UNSIGNED_INT                            => 16#1405#
);
for ArrayIndexTypeEnm'Size use GLenum'size;

type InterleaveFormatEnm is
(
   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
);
for InterleaveFormatEnm use
(
   GL_V2F                                     => 16#2A20#,
   GL_V3F                                     => 16#2A21#,
   GL_C4UB_V2F                                => 16#2A22#,
   GL_C4UB_V3F                                => 16#2A23#,
   GL_C3F_V3F                                 => 16#2A24#,
   GL_N3F_V3F                                 => 16#2A25#,
   GL_C4F_N3F_V3F                             => 16#2A26#,
   GL_T2F_V3F                                 => 16#2A27#,
   GL_T4F_V4F                                 => 16#2A28#,
   GL_T2F_C4UB_V3F                            => 16#2A29#,
   GL_T2F_C3F_V3F                             => 16#2A2A#,
   GL_T2F_N3F_V3F                             => 16#2A2B#,
   GL_T2F_C4F_N3F_V3F                         => 16#2A2C#,
   GL_T4F_C4F_N3F_V4F                         => 16#2A2D#
);
for InterleaveFormatEnm'Size use GLenum'size;

procedure glVertexPointer (size  : GLint;
                           c_type: VertexTypeEnm;
                           stride: GLsizei;
                           ptr   : GLpointer);

procedure glNormalPointer (c_type: NormalTypeEnm;
                           stride: GLsizei;
                           ptr   : GLpointer);

procedure glColorPointer (size  : GLint;
                          c_type: ColorTypeEnm;
                          stride: GLsizei;
                          ptr   : GLpointer);

procedure glIndexPointer (c_type: IndexTypeEnm;
                          stride: GLsizei;
                          ptr   : GLpointer);

procedure glTexCoordPointer (size  : GLint;
                             c_type: TexCoordTypeEnm;
                             stride: GLsizei;
                             ptr   : GLpointer);

procedure glEdgeFlagPointer (stride: GLsizei;
                             ptr   : GLbooleanPtr);

procedure glArrayElement (i: GLint);

procedure glDrawArrays (mode : ObjectTypeEnm;
                        first: GLint;
                        count: GLsizei);

procedure glDrawElements (mode   : ObjectTypeEnm;
                          count  : GLsizei;
                          c_type : ArrayIndexTypeEnm;
                          indices: GLpointer);

procedure glInterleavedArrays (format : InterleaveFormatEnm;
                               stride : GLsizei;
                               pointer: GLpointer);


-- Shading model
type ShadeModeEnm is
(
   GL_FLAT,
   GL_SMOOTH
);
for ShadeModeEnm use
(
   GL_FLAT                                    => 16#1D00#,
   GL_SMOOTH                                  => 16#1D01#
);
for ShadeModeEnm'Size use GLenum'size;

procedure glShadeModel (mode: ShadeModeEnm);


-- Lighting
type LightIDEnm is
(
   GL_LIGHT0,
   GL_LIGHT1,
   GL_LIGHT2,
   GL_LIGHT3,
   GL_LIGHT4,
   GL_LIGHT5,
   GL_LIGHT6,
   GL_LIGHT7
);
for LightIDEnm use
(
   GL_LIGHT0                                  => 16#4000#,
   GL_LIGHT1                                  => 16#4001#,
   GL_LIGHT2                                  => 16#4002#,
   GL_LIGHT3                                  => 16#4003#,
   GL_LIGHT4                                  => 16#4004#,
   GL_LIGHT5                                  => 16#4005#,
   GL_LIGHT6                                  => 16#4006#,
   GL_LIGHT7                                  => 16#4007#
);
for LightIDEnm'Size use GLenum'size;

type LightParameterEnm is
(
   GL_SPOT_EXPONENT,
   GL_SPOT_CUTOFF,
   GL_CONSTANT_ATTENUATION,
   GL_LINEAR_ATTENUATION,
   GL_QUADRATIC_ATTENUATION
);
for LightParameterEnm use
(
   GL_SPOT_EXPONENT                           => 16#1205#,
   GL_SPOT_CUTOFF                             => 16#1206#,
   GL_CONSTANT_ATTENUATION                    => 16#1207#,
   GL_LINEAR_ATTENUATION                      => 16#1208#,
   GL_QUADRATIC_ATTENUATION                   => 16#1209#
);
for LightParameterEnm'Size use GLenum'size;

type LightParameterVEnm is
(
   GL_AMBIENT,
   GL_DIFFUSE,
   GL_SPECULAR,
   GL_POSITION,
   GL_SPOT_DIRECTION,
   GL_SPOT_EXPONENT,
   GL_SPOT_CUTOFF,
   GL_CONSTANT_ATTENUATION,
   GL_LINEAR_ATTENUATION,
   GL_QUADRATIC_ATTENUATION
);
for LightParameterVEnm use
(
   GL_AMBIENT                                 => 16#1200#,
   GL_DIFFUSE                                 => 16#1201#,
   GL_SPECULAR                                => 16#1202#,
   GL_POSITION                                => 16#1203#,
   GL_SPOT_DIRECTION                          => 16#1204#,
   GL_SPOT_EXPONENT                           => 16#1205#,
   GL_SPOT_CUTOFF                             => 16#1206#,
   GL_CONSTANT_ATTENUATION                    => 16#1207#,
   GL_LINEAR_ATTENUATION                      => 16#1208#,
   GL_QUADRATIC_ATTENUATION                   => 16#1209#
);
for LightParameterVEnm'Size use GLenum'size;

type LightModelEnm is
(
   GL_LIGHT_MODEL_LOCAL_VIEWER,
   GL_LIGHT_MODEL_TWO_SIDE
);
for LightModelEnm use
(
   GL_LIGHT_MODEL_LOCAL_VIEWER                => 16#0B51#,
   GL_LIGHT_MODEL_TWO_SIDE                    => 16#0B52#
);
for LightModelEnm'Size use GLenum'size;

type LightModelVEnm is
(
   GL_LIGHT_MODEL_LOCAL_VIEWER,
   GL_LIGHT_MODEL_TWO_SIDE,
   GL_LIGHT_MODEL_AMBIENT
);
for LightModelVEnm use
(
   GL_LIGHT_MODEL_LOCAL_VIEWER                => 16#0B51#,
   GL_LIGHT_MODEL_TWO_SIDE                    => 16#0B52#,
   GL_LIGHT_MODEL_AMBIENT                     => 16#0B53#
);
for LightModelVEnm'Size use GLenum'size;

procedure glLightf (light: LightIDEnm;
                    pname: LightParameterEnm;
                    param: GLfloat);

procedure glLighti (light: LightIDEnm;
                    pname: LightParameterEnm;
                    param: GLint);

procedure glLightfv (light : LightIDEnm;
                     pname : LightParameterVEnm;
                     params: GLfloatPtr);

procedure glLightiv (light : LightIDEnm;
                     pname : LightParameterVEnm;
                     params: GLintPtr);

procedure glGetLightfv (light : LightIDEnm;
                        pname : LightParameterVEnm;
                        params: GLfloatPtr);

procedure glGetLightiv (light : LightIDEnm;
                        pname : LightParameterVEnm;
                        params: GLintPtr);

procedure glLightModelf (pname: LightModelEnm;
                         param: GLfloat);

procedure glLightModeli (pname: LightModelEnm;
                         param: GLint);

procedure glLightModelfv (pname : LightModelVEnm;
                          params: GLfloatPtr);

procedure glLightModeliv (pname : LightModelVEnm;
                          params: GLintPtr);


-- Materials
type MaterialParameterEnm is
(
   GL_SHININESS
);
for MaterialParameterEnm use
(
   GL_SHININESS                               => 16#1601#
);
for MaterialParameterEnm'Size use GLenum'size;

type MaterialParameterVEnm is
(
   GL_AMBIENT,
   GL_DIFFUSE,
   GL_SPECULAR,
   GL_EMISSION,
   GL_SHININESS,
   GL_AMBIENT_AND_DIFFUSE,
   GL_COLOR_INDEXES
);
for MaterialParameterVEnm use
(
   GL_AMBIENT                                 => 16#1200#,
   GL_DIFFUSE                                 => 16#1201#,
   GL_SPECULAR                                => 16#1202#,
   GL_EMISSION                                => 16#1600#,
   GL_SHININESS                               => 16#1601#,
   GL_AMBIENT_AND_DIFFUSE                     => 16#1602#,
   GL_COLOR_INDEXES                           => 16#1603#
);
for MaterialParameterVEnm'Size use GLenum'size;

type GetMaterialParameterEnm is
(
   GL_AMBIENT,
   GL_DIFFUSE,
   GL_SPECULAR,
   GL_EMISSION,
   GL_SHININESS,
   GL_COLOR_INDEXES
);
for GetMaterialParameterEnm use
(
   GL_AMBIENT                                 => 16#1200#,
   GL_DIFFUSE                                 => 16#1201#,
   GL_SPECULAR                                => 16#1202#,
   GL_EMISSION                                => 16#1600#,
   GL_SHININESS                               => 16#1601#,
   GL_COLOR_INDEXES                           => 16#1603#
);
for GetMaterialParameterEnm'Size use GLenum'size;

type ColorMaterialEnm is
(
   GL_AMBIENT,
   GL_DIFFUSE,
   GL_SPECULAR,
   GL_EMISSION,
   GL_AMBIENT_AND_DIFFUSE
);
for ColorMaterialEnm use
(
   GL_AMBIENT                                 => 16#1200#,
   GL_DIFFUSE                                 => 16#1201#,
   GL_SPECULAR                                => 16#1202#,
   GL_EMISSION                                => 16#1600#,
   GL_AMBIENT_AND_DIFFUSE                     => 16#1602#
);
for ColorMaterialEnm'Size use GLenum'size;

procedure glMaterialf (face : FaceEnm;
                       pname: MaterialParameterEnm;
                       param: GLfloat);

procedure glMateriali (face : FaceEnm;
                       pname: MaterialParameterEnm;
                       param: GLint);

procedure glMaterialfv (face  : FaceEnm;
                        pname : MaterialParameterVEnm;
                        params: GLfloatPtr);

procedure glMaterialiv (face  : FaceEnm;
                        pname : MaterialParameterVEnm;
                        params: GLintPtr);

procedure glGetMaterialfv (face  : FaceEnm;
                           pname : GetMaterialParameterEnm;
                           params: GLfloatPtr);

procedure glGetMaterialiv (face  : FaceEnm;
                           pname : GetMaterialParameterEnm;
                           params: GLintPtr);

procedure glColorMaterial (face: FaceEnm;
                           mode: ColorMaterialEnm);


-- Pixel stuff
type PixelStorageEnm is
(
   GL_UNPACK_SWAP_BYTES,
   GL_UNPACK_LSB_FIRST,
   GL_UNPACK_ROW_LENGTH,
   GL_UNPACK_SKIP_ROWS,
   GL_UNPACK_SKIP_PIXELS,
   GL_UNPACK_ALIGNMENT,
   GL_PACK_SWAP_BYTES,
   GL_PACK_LSB_FIRST,
   GL_PACK_ROW_LENGTH,
   GL_PACK_SKIP_ROWS,
   GL_PACK_SKIP_PIXELS,
   GL_PACK_ALIGNMENT
);
for PixelStorageEnm use
(
   GL_UNPACK_SWAP_BYTES                       => 16#0CF0#,
   GL_UNPACK_LSB_FIRST                        => 16#0CF1#,
   GL_UNPACK_ROW_LENGTH                       => 16#0CF2#,
   GL_UNPACK_SKIP_ROWS                        => 16#0CF3#,
   GL_UNPACK_SKIP_PIXELS                      => 16#0CF4#,
   GL_UNPACK_ALIGNMENT                        => 16#0CF5#,
   GL_PACK_SWAP_BYTES                         => 16#0D00#,
   GL_PACK_LSB_FIRST                          => 16#0D01#,
   GL_PACK_ROW_LENGTH                         => 16#0D02#,
   GL_PACK_SKIP_ROWS                          => 16#0D03#,
   GL_PACK_SKIP_PIXELS                        => 16#0D04#,
   GL_PACK_ALIGNMENT                          => 16#0D05#
);
for PixelStorageEnm'Size use GLenum'size;

type PixelTransferEnm is
(
   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
);
for PixelTransferEnm use
(
   GL_MAP_COLOR                               => 16#0D10#,
   GL_MAP_STENCIL                             => 16#0D11#,
   GL_INDEX_SHIFT                             => 16#0D12#,
   GL_INDEX_OFFSET                            => 16#0D13#,
   GL_RED_SCALE                               => 16#0D14#,
   GL_RED_BIAS                                => 16#0D15#,
   GL_GREEN_SCALE                             => 16#0D18#,
   GL_GREEN_BIAS                              => 16#0D19#,
   GL_BLUE_SCALE                              => 16#0D1A#,
   GL_BLUE_BIAS                               => 16#0D1B#,
   GL_ALPHA_SCALE                             => 16#0D1C#,
   GL_ALPHA_BIAS                              => 16#0D1D#,
   GL_DEPTH_SCALE                             => 16#0D1E#,
   GL_DEPTH_BIAS                              => 16#0D1F#
);
for PixelTransferEnm'Size use GLenum'size;

type PixelMapEnm is
(
   GL_PIXEL_MAP_I_TO_I,
   GL_PIXEL_MAP_S_TO_S,
   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
);
for PixelMapEnm use
(
   GL_PIXEL_MAP_I_TO_I                        => 16#0C70#,
   GL_PIXEL_MAP_S_TO_S                        => 16#0C71#,
   GL_PIXEL_MAP_I_TO_R                        => 16#0C72#,
   GL_PIXEL_MAP_I_TO_G                        => 16#0C73#,
   GL_PIXEL_MAP_I_TO_B                        => 16#0C74#,
   GL_PIXEL_MAP_I_TO_A                        => 16#0C75#,
   GL_PIXEL_MAP_R_TO_R                        => 16#0C76#,
   GL_PIXEL_MAP_G_TO_G                        => 16#0C77#,
   GL_PIXEL_MAP_B_TO_B                        => 16#0C78#,
   GL_PIXEL_MAP_A_TO_A                        => 16#0C79#
);
for PixelMapEnm'Size use GLenum'size;

type PixelFormatEnm is
(
   GL_COLOR_INDEX,
   GL_STENCIL_INDEX,
   GL_DEPTH_COMPONENT,
   GL_RED,
   GL_GREEN,
   GL_BLUE,
   GL_ALPHA,
   GL_RGB,
   GL_RGBA,
   GL_LUMINANCE,
   GL_LUMINANCE_ALPHA
);
for PixelFormatEnm use
(
   GL_COLOR_INDEX                             => 16#1900#,
   GL_STENCIL_INDEX                           => 16#1901#,
   GL_DEPTH_COMPONENT                         => 16#1902#,
   GL_RED                                     => 16#1903#,
   GL_GREEN                                   => 16#1904#,
   GL_BLUE                                    => 16#1905#,
   GL_ALPHA                                   => 16#1906#,
   GL_RGB                                     => 16#1907#,
   GL_RGBA                                    => 16#1908#,
   GL_LUMINANCE                               => 16#1909#,
   GL_LUMINANCE_ALPHA                         => 16#190A#
);
for PixelFormatEnm'Size use GLenum'size;

type PixelDataTypeEnm is
(
   GL_BYTE,
   GL_UNSIGNED_BYTE,
   GL_SHORT,
   GL_UNSIGNED_SHORT,
   GL_INT,
   GL_UNSIGNED_INT,
   GL_FLOAT,
   GL_BITMAP
);
for PixelDataTypeEnm use
(
   GL_BYTE                                    => 16#1400#,
   GL_UNSIGNED_BYTE                           => 16#1401#,
   GL_SHORT                                   => 16#1402#,
   GL_UNSIGNED_SHORT                          => 16#1403#,
   GL_INT                                     => 16#1404#,
   GL_UNSIGNED_INT                            => 16#1405#,
   GL_FLOAT                                   => 16#1406#,
   GL_BITMAP                                  => 16#1A00#
);
for PixelDataTypeEnm'Size use GLenum'size;

type PixelCopyTypeEnm is
(
   GL_COLOR,
   GL_DEPTH,
   GL_STENCIL
);
for PixelCopyTypeEnm use
(
   GL_COLOR                                   => 16#1800#,
   GL_DEPTH                                   => 16#1801#,
   GL_STENCIL                                 => 16#1802#
);
for PixelCopyTypeEnm'Size use GLenum'size;

procedure glPixelZoom (xfactor: GLfloat;
                       yfactor: GLfloat);

procedure glPixelStoref (pname: PixelStorageEnm;
                         param: GLfloat);

procedure glPixelStorei (pname: PixelStorageEnm;
                         param: GLint);

procedure glPixelTransferf (pname: PixelTransferEnm;
                            param: GLfloat);

procedure glPixelTransferi (pname: PixelTransferEnm;
                            param: GLint);

procedure glPixelMapfv (map    : PixelMapEnm;
                        mapsize: GLint;
                        values : GLfloatPtr);

procedure glPixelMapuiv (map    : PixelMapEnm;
                         mapsize: GLint;
                         values : GLuintPtr);

procedure glPixelMapusv (map    : PixelMapEnm;
                         mapsize: GLint;
                         values : GLushortPtr);

procedure glGetPixelMapfv (map   : PixelMapEnm;
                           values: GLfloatPtr);

procedure glGetPixelMapuiv (map   : PixelMapEnm;
                            values: GLuintPtr);

procedure glGetPixelMapusv (map   : PixelMapEnm;
                            values: GLushortPtr);

procedure glReadPixels (x     : GLint;
                        y     : GLint;
                        width : GLsizei;
                        height: GLsizei;
                        format: PixelFormatEnm;
                        c_type: PixelDataTypeEnm;
                        pixels: GLpointer);

procedure glDrawPixels (width : GLsizei;
                        height: GLsizei;
                        format: PixelFormatEnm;
                        c_type: PixelDataTypeEnm;
                        pixels: GLpointer);

procedure glCopyPixels (x     : GLint;
                        y     : GLint;
                        width : GLsizei;
                        height: GLsizei;
                        c_type: PixelCopyTypeEnm);


-- Texturing
type TexCoordEnm is
(
   GL_S,
   GL_T,
   GL_R,
   GL_Q
);
for TexCoordEnm use
(
   GL_S                                       => 16#2000#,
   GL_T                                       => 16#2001#,
   GL_R                                       => 16#2002#,
   GL_Q                                       => 16#2003#
);
for TexCoordEnm'Size use GLenum'size;

type TexParameterEnm is
(
   GL_TEXTURE_GEN_MODE
);
for TexParameterEnm use
(
   GL_TEXTURE_GEN_MODE                        => 16#2500#
);
for TexParameterEnm'Size use GLenum'size;

type TexParameterVEnm is
(
   GL_TEXTURE_GEN_MODE,
   GL_OBJECT_PLANE,
   GL_EYE_PLANE
);
for TexParameterVEnm use
(
   GL_TEXTURE_GEN_MODE                        => 16#2500#,
   GL_OBJECT_PLANE                            => 16#2501#,
   GL_EYE_PLANE                               => 16#2502#
);
for TexParameterVEnm'Size use GLenum'size;

type TexEnvEnm is
(
   GL_TEXTURE_ENV
);
for TexEnvEnm use
(
   GL_TEXTURE_ENV                             => 16#2300#
);
for TexEnvEnm'Size use GLenum'size;

type TexEnvParameterEnm is
(
   GL_TEXTURE_ENV_MODE
);
for TexEnvParameterEnm use
(
   GL_TEXTURE_ENV_MODE                        => 16#2200#
);
for TexEnvParameterEnm'Size use GLenum'size;

type TexEnvParameterVEnm is
(
   GL_TEXTURE_ENV_MODE,
   GL_TEXTURE_ENV_COLOR
);
for TexEnvParameterVEnm use
(
   GL_TEXTURE_ENV_MODE                        => 16#2200#,
   GL_TEXTURE_ENV_COLOR                       => 16#2201#
);
for TexEnvParameterVEnm'Size use GLenum'size;

type TargetTexEnm is
(
   GL_TEXTURE_1D,
   GL_TEXTURE_2D
);
for TargetTexEnm use
(
   GL_TEXTURE_1D                              => 16#0DE0#,
   GL_TEXTURE_2D                              => 16#0DE1#
);
for TargetTexEnm'Size use GLenum'size;

type TexParamEnm is
(
   GL_TEXTURE_MAG_FILTER,
   GL_TEXTURE_MIN_FILTER,
   GL_TEXTURE_WRAP_S,
   GL_TEXTURE_WRAP_T,
   GL_TEXTURE_PRIORITY
);
for TexParamEnm use
(
   GL_TEXTURE_MAG_FILTER                      => 16#2800#,
   GL_TEXTURE_MIN_FILTER                      => 16#2801#,
   GL_TEXTURE_WRAP_S                          => 16#2802#,
   GL_TEXTURE_WRAP_T                          => 16#2803#,
   GL_TEXTURE_PRIORITY                        => 16#8066#
);
for TexParamEnm'Size use GLenum'size;

type TexParamVEnm is
(
   GL_TEXTURE_BORDER_COLOR,
   GL_TEXTURE_MAG_FILTER,
   GL_TEXTURE_MIN_FILTER,
   GL_TEXTURE_WRAP_S,
   GL_TEXTURE_WRAP_T,
   GL_TEXTURE_PRIORITY
);
for TexParamVEnm use
(
   GL_TEXTURE_BORDER_COLOR                    => 16#1004#,
   GL_TEXTURE_MAG_FILTER                      => 16#2800#,
   GL_TEXTURE_MIN_FILTER                      => 16#2801#,
   GL_TEXTURE_WRAP_S                          => 16#2802#,
   GL_TEXTURE_WRAP_T                          => 16#2803#,
   GL_TEXTURE_PRIORITY                        => 16#8066#
);
for TexParamVEnm'Size use GLenum'size;

type GetTexParamEnm is
(
   GL_TEXTURE_BORDER_COLOR,
   GL_TEXTURE_MAG_FILTER,
   GL_TEXTURE_MIN_FILTER,
   GL_TEXTURE_WRAP_S,
   GL_TEXTURE_WRAP_T,
   GL_TEXTURE_PRIORITY,
   GL_TEXTURE_RESIDENT
);
for GetTexParamEnm use
(
   GL_TEXTURE_BORDER_COLOR                    => 16#1004#,
   GL_TEXTURE_MAG_FILTER                      => 16#2800#,
   GL_TEXTURE_MIN_FILTER                      => 16#2801#,
   GL_TEXTURE_WRAP_S                          => 16#2802#,
   GL_TEXTURE_WRAP_T                          => 16#2803#,
   GL_TEXTURE_PRIORITY                        => 16#8066#,
   GL_TEXTURE_RESIDENT                        => 16#8067#
);
for GetTexParamEnm'Size use GLenum'size;

type TargetTexLevelEnm is
(
   GL_TEXTURE_1D,
   GL_TEXTURE_2D,
   GL_PROXY_TEXTURE_1D,
   GL_PROXY_TEXTURE_2D
);
for TargetTexLevelEnm use
(
   GL_TEXTURE_1D                              => 16#0DE0#,
   GL_TEXTURE_2D                              => 16#0DE1#,
   GL_PROXY_TEXTURE_1D                        => 16#8063#,
   GL_PROXY_TEXTURE_2D                        => 16#8064#
);
for TargetTexLevelEnm'Size use GLenum'size;

type TexLevelParameterEnm is
(
   GL_TEXTURE_WIDTH,
   GL_TEXTURE_HEIGHT,
   GL_TEXTURE_COMPONENTS,
   GL_TEXTURE_BORDER,
   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_TEXTURE_INTERNAL_FORMAT
);
for TexLevelParameterEnm use
(
   GL_TEXTURE_WIDTH                           => 16#1000#,
   GL_TEXTURE_HEIGHT                          => 16#1001#,
   GL_TEXTURE_COMPONENTS                      => 16#1003#,  -- HP docs say to use this in 1.0 instead of INTERNAL_FORMAT???
   GL_TEXTURE_BORDER                          => 16#1005#,
   GL_TEXTURE_RED_SIZE                        => 16#805C#,
   GL_TEXTURE_GREEN_SIZE                      => 16#805D#,
   GL_TEXTURE_BLUE_SIZE                       => 16#805E#,
   GL_TEXTURE_ALPHA_SIZE                      => 16#805F#,
   GL_TEXTURE_LUMINANCE_SIZE                  => 16#8060#,
   GL_TEXTURE_INTENSITY_SIZE                  => 16#8061#,
   GL_TEXTURE_INTERNAL_FORMAT                 => 16#FFFF#   -- fixme: Mesa 2.5 does not support!!  What's the real value?
);
for TexLevelParameterEnm'Size use GLenum'size;

type TargetTex1DEnm is
(
   GL_TEXTURE_1D,
   GL_PROXY_TEXTURE_1D
);
for TargetTex1DEnm use
(
   GL_TEXTURE_1D                              => 16#0DE0#,
   GL_PROXY_TEXTURE_1D                        => 16#8063#
);
for TargetTex1DEnm'Size use GLenum'size;

type TexFormatEnm is
(
   GL_ALPHA,
   GL_RGB,
   GL_RGBA,
   GL_LUMINANCE,
   GL_LUMINANCE_ALPHA,
   GL_R3_G3_B2,
   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_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
);
for TexFormatEnm use
(
   GL_ALPHA                                   => 16#1906#,
   GL_RGB                                     => 16#1907#,
   GL_RGBA                                    => 16#1908#,
   GL_LUMINANCE                               => 16#1909#,
   GL_LUMINANCE_ALPHA                         => 16#190A#,
   GL_R3_G3_B2                                => 16#2A10#,
   GL_ALPHA4                                  => 16#803B#,
   GL_ALPHA8                                  => 16#803C#,
   GL_ALPHA12                                 => 16#803D#,
   GL_ALPHA16                                 => 16#803E#,
   GL_LUMINANCE4                              => 16#803F#,
   GL_LUMINANCE8                              => 16#8040#,
   GL_LUMINANCE12                             => 16#8041#,
   GL_LUMINANCE16                             => 16#8042#,
   GL_LUMINANCE4_ALPHA4                       => 16#8043#,
   GL_LUMINANCE6_ALPHA2                       => 16#8044#,
   GL_LUMINANCE8_ALPHA8                       => 16#8045#,
   GL_LUMINANCE12_ALPHA4                      => 16#8046#,
   GL_LUMINANCE12_ALPHA12                     => 16#8047#,
   GL_LUMINANCE16_ALPHA16                     => 16#8048#,
   GL_INTENSITY                               => 16#8049#,
   GL_INTENSITY4                              => 16#804A#,
   GL_INTENSITY8                              => 16#804B#,
   GL_INTENSITY12                             => 16#804C#,
   GL_INTENSITY16                             => 16#804D#,
   GL_RGB4                                    => 16#804F#,
   GL_RGB5                                    => 16#8050#,
   GL_RGB8                                    => 16#8051#,
   GL_RGB10                                   => 16#8052#,
   GL_RGB12                                   => 16#8053#,
   GL_RGB16                                   => 16#8054#,
   GL_RGBA2                                   => 16#8055#,
   GL_RGBA4                                   => 16#8056#,
   GL_RGB5_A1                                 => 16#8057#,
   GL_RGBA8                                   => 16#8058#,
   GL_RGB10_A2                                => 16#8059#,
   GL_RGBA12                                  => 16#805A#,
   GL_RGBA16                                  => 16#805B#
);
for TexFormatEnm'Size use GLenum'size;

type TexPixelFormatEnm is
(
   GL_COLOR_INDEX,
   GL_RED,
   GL_GREEN,
   GL_BLUE,
   GL_ALPHA,
   GL_RGB,
   GL_RGBA,
   GL_LUMINANCE,
   GL_LUMINANCE_ALPHA
);
for TexPixelFormatEnm use
(
   GL_COLOR_INDEX                             => 16#1900#,
   GL_RED                                     => 16#1903#,
   GL_GREEN                                   => 16#1904#,
   GL_BLUE                                    => 16#1905#,
   GL_ALPHA                                   => 16#1906#,
   GL_RGB                                     => 16#1907#,
   GL_RGBA                                    => 16#1908#,
   GL_LUMINANCE                               => 16#1909#,
   GL_LUMINANCE_ALPHA                         => 16#190A#
);
for TexPixelFormatEnm'Size use GLenum'size;

type TargetTex2DEnm is
(
   GL_TEXTURE_2D,
   GL_PROXY_TEXTURE_2D
);
for TargetTex2DEnm use
(
   GL_TEXTURE_2D                              => 16#0DE1#,
   GL_PROXY_TEXTURE_2D                        => 16#8064#
);
for TargetTex2DEnm'Size use GLenum'size;

type TexImageFormatEnm is
(
   GL_RED,
   GL_GREEN,
   GL_BLUE,
   GL_ALPHA,
   GL_RGB,
   GL_RGBA,
   GL_LUMINANCE,
   GL_LUMINANCE_ALPHA
);
for TexImageFormatEnm use
(
   GL_RED                                     => 16#1903#,
   GL_GREEN                                   => 16#1904#,
   GL_BLUE                                    => 16#1905#,
   GL_ALPHA                                   => 16#1906#,
   GL_RGB                                     => 16#1907#,
   GL_RGBA                                    => 16#1908#,
   GL_LUMINANCE                               => 16#1909#,
   GL_LUMINANCE_ALPHA                         => 16#190A#
);
for TexImageFormatEnm'Size use GLenum'size;

type TargetTex1DOnlyEnm is
(
   GL_TEXTURE_1D
);
for TargetTex1DOnlyEnm use
(
   GL_TEXTURE_1D                              => 16#0DE0#
);
for TargetTex1DOnlyEnm'Size use GLenum'size;

type TargetTex2DOnlyEnm is
(
   GL_TEXTURE_2D
);
for TargetTex2DOnlyEnm use
(
   GL_TEXTURE_2D                              => 16#0DE1#
);
for TargetTex2DOnlyEnm'Size use GLenum'size;

type TargetTex3DEnm is
(
   GL_TEXTURE_3D_EXT,
   GL_PROXY_TEXTURE_3D_EXT
);
for TargetTex3DEnm use
(
   GL_TEXTURE_3D_EXT                          => 16#806F#,
   GL_PROXY_TEXTURE_3D_EXT                    => 16#8070#
);
for TargetTex3DEnm'Size use GLenum'size;

type TargetTex3DOnlyEnm is
(
   GL_TEXTURE_3D_EXT
);
for TargetTex3DOnlyEnm use
(
   GL_TEXTURE_3D_EXT                          => 16#806F#
);
for TargetTex3DOnlyEnm'Size use GLenum'size;

-- Texture map parameters
GL_OBJECT_LINEAR               : constant := 16#2401#;
GL_EYE_LINEAR                  : constant := 16#2400#;
GL_SPHERE_MAP                  : constant := 16#2402#;

-- Texture filter parameter values
GL_NEAREST_MIPMAP_NEAREST      : constant := 16#2700#;
GL_NEAREST_MIPMAP_LINEAR       : constant := 16#2702#;
GL_LINEAR_MIPMAP_NEAREST       : constant := 16#2701#;
GL_LINEAR_MIPMAP_LINEAR        : constant := 16#2703#;
GL_DECAL                       : constant := 16#2101#;
GL_MODULATE                    : constant := 16#2100#;
GL_NEAREST                     : constant := 16#2600#;
GL_REPEAT                      : constant := 16#2901#;
GL_CLAMP                       : constant := 16#2900#;

procedure glTexGend (coord: TexCoordEnm;
                     pname: TexParameterEnm;
                     param: GLdouble);

procedure glTexGenf (coord: TexCoordEnm;
                     pname: TexParameterEnm;
                     param: GLfloat);

procedure glTexGeni (coord: TexCoordEnm;
                     pname: TexParameterEnm;
                     param: GLint);

procedure glTexGendv (coord : TexCoordEnm;
                      pname : TexParameterVEnm;
                      params: GLdoublePtr);

procedure glTexGenfv (coord : TexCoordEnm;
                      pname : TexParameterVEnm;
                      params: GLfloatPtr);

procedure glTexGeniv (coord : TexCoordEnm;
                      pname : TexParameterVEnm;
                      params: GLintPtr);

procedure glGetTexGendv (coord : TexCoordEnm;
                         pname : TexParameterVEnm;
                         params: GLdoublePtr);

procedure glGetTexGenfv (coord : TexCoordEnm;
                         pname : TexParameterVEnm;
                         params: GLfloatPtr);

procedure glGetTexGeniv (coord : TexCoordEnm;
                         pname : TexParameterVEnm;
                         params: GLintPtr);

procedure glTexEnvf (target: TexEnvEnm;
                     pname : TexEnvParameterEnm;
                     param : GLfloat);

procedure glTexEnvi (target: TexEnvEnm;
                     pname : TexEnvParameterEnm;
                     param : GLint);

procedure glTexEnvfv (target: TexEnvEnm;
                      pname : TexEnvParameterVEnm;
                      params: GLfloatPtr);

procedure glTexEnviv (target: TexEnvEnm;
                      pname : TexEnvParameterVEnm;
                      params: GLintPtr);

procedure glGetTexEnvfv (target: TexEnvEnm;
                         pname : TexEnvParameterVEnm;
                         params: GLfloatPtr);

procedure glGetTexEnviv (target: TexEnvEnm;
                         pname : TexEnvParameterVEnm;
                         params: GLintPtr);

procedure glTexParameterf (target: TargetTexEnm;
                           pname : TexParamEnm;
                           param : GLfloat);

procedure glTexParameteri (target: TargetTexEnm;
                           pname : TexParamEnm;
                           param : GLint);

procedure glTexParameterfv (target: TargetTexEnm;
                            pname : TexParamVEnm;
                            params: GLfloatPtr);

procedure glTexParameteriv (target: TargetTexEnm;
                            pname : TexParamVEnm;
                            params: GLintPtr);

procedure glGetTexParameterfv (target: TargetTexEnm;
                               pname : GetTexParamEnm;
                               params: GLfloatPtr);

procedure glGetTexParameteriv (target: TargetTexEnm;
                               pname : GetTexParamEnm;
                               params: GLintPtr);

procedure glGetTexLevelParameterfv (target: TargetTexLevelEnm;
                                    level : GLint;
                                    pname : TexLevelParameterEnm;
                                    params: GLfloatPtr);

procedure glGetTexLevelParameteriv (target: TargetTexLevelEnm;
                                    level : GLint;
                                    pname : TexLevelParameterEnm;
                                    params: GLintPtr);

procedure glTexImage1D (target        : TargetTex1DEnm;
                        level         : GLint;
                        internalFormat: TexFormatEnm;
                        width         : GLsizei;
                        border        : GLint;
                        format        : TexPixelFormatEnm;
                        c_type        : PixelDataTypeEnm;
                        pixels        : GLpointer);

procedure glTexImage2D (target        : TargetTex2DEnm;
                        level         : GLint;
                        internalFormat: TexFormatEnm;
                        width         : GLsizei;
                        height        : GLsizei;
                        border        : GLint;
                        format        : TexPixelFormatEnm;
                        c_type        : PixelDataTypeEnm;
                        pixels        : GLpointer);

procedure glGetTexImage (target: TargetTexEnm;
                         level : GLint;
                         format: TexImageFormatEnm;
                         c_type: PixelDataTypeEnm;
                         pixels: GLpointer);

procedure glGenTextures (n       : GLsizei;
                         textures: GLuintPtr);

procedure glDeleteTextures (n       : GLsizei;
                            textures: GLuintPtr);

procedure glBindTexture (target : TargetTexEnm;
                         texture: GLuint);

procedure glPrioritizeTextures (n         : GLsizei;
                                textures  : GLuintPtr;
                                priorities: GLclampfPtr);

function glAreTexturesResident (n         : GLsizei;
                                textures  : GLuintPtr;
                                residences: GLbooleanPtr)
return GLboolean;

function glIsTexture (texture: GLuint)
return GLboolean;

procedure glTexSubImage1D (target : TargetTex1DOnlyEnm;
                           level  : GLint;
                           xoffset: GLint;
                           width  : GLsizei;
                           format : TexPixelFormatEnm;
                           c_type : PixelDataTypeEnm;
                           pixels : GLpointer);

procedure glTexSubImage2D (target : TargetTex2DOnlyEnm;
                           level  : GLint;
                           xoffset: GLint;
                           yoffset: GLint;
                           width  : GLsizei;
                           height : GLsizei;
                           format : TexPixelFormatEnm;
                           c_type : PixelDataTypeEnm;
                           pixels : GLpointer);

procedure glCopyTexImage1D (target        : TargetTex1DOnlyEnm;
                            level         : GLint;
                            internalformat: TexFormatEnm;
                            x             : GLint;
                            y             : GLint;
                            width         : GLsizei;
                            border        : GLint);

procedure glCopyTexImage2D (target        : TargetTex2DOnlyEnm;
                            level         : GLint;
                            internalformat: TexFormatEnm;
                            x             : GLint;
                            y             : GLint;
                            width         : GLsizei;
                            height        : GLsizei;
                            border        : GLint);

procedure glCopyTexSubImage1D (target : TargetTex1DOnlyEnm;
                               level  : GLint;
                               xoffset: GLint;
                               x      : GLint;
                               y      : GLint;
                               width  : GLsizei);

procedure glCopyTexSubImage2D (target : TargetTex2DOnlyEnm;
                               level  : GLint;
                               xoffset: GLint;
                               yoffset: GLint;
                               x      : GLint;
                               y      : GLint;
                               width  : GLsizei;
                               height : GLsizei);

procedure glTexImage3DEXT (target        : TargetTex3DEnm;
                           level         : GLint;
                           internalFormat: TexPixelFormatEnm;
                           width         : GLsizei;
                           height        : GLsizei;
                           depth         : GLsizei;
                           border        : GLint;
                           format        : TexPixelFormatEnm;
                           c_type        : PixelDataTypeEnm;
                           pixels        : GLpointer);

procedure glTexSubImage3DEXT (target : TargetTex3DOnlyEnm;
                              level  : GLint;
                              xoffset: GLint;
                              yoffset: GLint;
                              zoffset: GLint;
                              width  : GLsizei;
                              height : GLsizei;
                              depth  : GLsizei;
                              format : TexPixelFormatEnm;
                              c_type : PixelDataTypeEnm;
                              pixels : GLpointer);

procedure glCopyTexSubImage3DEXT (target : TargetTex3DOnlyEnm;
                                  level  : GLint;
                                  xoffset: GLint;
                                  yoffset: GLint;
                                  zoffset: GLint;
                                  x      : GLint;
                                  y      : GLint;
                                  width  : GLsizei;
                                  height : GLsizei);


-- Evaluators
type Map1TargetEnm is
(
   GL_MAP1_COLOR_4,
   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
);
for Map1TargetEnm use
(
   GL_MAP1_COLOR_4                            => 16#0D90#,
   GL_MAP1_INDEX                              => 16#0D91#,
   GL_MAP1_NORMAL                             => 16#0D92#,
   GL_MAP1_TEXTURE_COORD_1                    => 16#0D93#,
   GL_MAP1_TEXTURE_COORD_2                    => 16#0D94#,
   GL_MAP1_TEXTURE_COORD_3                    => 16#0D95#,
   GL_MAP1_TEXTURE_COORD_4                    => 16#0D96#,
   GL_MAP1_VERTEX_3                           => 16#0D97#,
   GL_MAP1_VERTEX_4                           => 16#0D98#
);
for Map1TargetEnm'Size use GLenum'size;

type Map2TargetEnm is
(
   GL_MAP2_COLOR_4,
   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
);
for Map2TargetEnm use
(
   GL_MAP2_COLOR_4                            => 16#0DB0#,
   GL_MAP2_INDEX                              => 16#0DB1#,
   GL_MAP2_NORMAL                             => 16#0DB2#,
   GL_MAP2_TEXTURE_COORD_1                    => 16#0DB3#,
   GL_MAP2_TEXTURE_COORD_2                    => 16#0DB4#,
   GL_MAP2_TEXTURE_COORD_3                    => 16#0DB5#,
   GL_MAP2_TEXTURE_COORD_4                    => 16#0DB6#,
   GL_MAP2_VERTEX_3                           => 16#0DB7#,
   GL_MAP2_VERTEX_4                           => 16#0DB8#
);
for Map2TargetEnm'Size use GLenum'size;

type MapTargetEnm is
(
   GL_MAP1_COLOR_4,
   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_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
);
for MapTargetEnm use
(
   GL_MAP1_COLOR_4                            => 16#0D90#,
   GL_MAP1_INDEX                              => 16#0D91#,
   GL_MAP1_NORMAL                             => 16#0D92#,
   GL_MAP1_TEXTURE_COORD_1                    => 16#0D93#,
   GL_MAP1_TEXTURE_COORD_2                    => 16#0D94#,
   GL_MAP1_TEXTURE_COORD_3                    => 16#0D95#,
   GL_MAP1_TEXTURE_COORD_4                    => 16#0D96#,
   GL_MAP1_VERTEX_3                           => 16#0D97#,
   GL_MAP1_VERTEX_4                           => 16#0D98#,
   GL_MAP2_COLOR_4                            => 16#0DB0#,
   GL_MAP2_INDEX                              => 16#0DB1#,
   GL_MAP2_NORMAL                             => 16#0DB2#,
   GL_MAP2_TEXTURE_COORD_1                    => 16#0DB3#,
   GL_MAP2_TEXTURE_COORD_2                    => 16#0DB4#,
   GL_MAP2_TEXTURE_COORD_3                    => 16#0DB5#,
   GL_MAP2_TEXTURE_COORD_4                    => 16#0DB6#,
   GL_MAP2_VERTEX_3                           => 16#0DB7#,
   GL_MAP2_VERTEX_4                           => 16#0DB8#
);
for MapTargetEnm'Size use GLenum'size;

type MapQueryEnm is
(
   GL_COEFF,
   GL_ORDER,
   GL_DOMAIN
);
for MapQueryEnm use
(
   GL_COEFF                                   => 16#0A00#,
   GL_ORDER                                   => 16#0A01#,
   GL_DOMAIN                                  => 16#0A02#
);
for MapQueryEnm'Size use GLenum'size;

type Mesh1ModeEnm is
(
   GL_POINT,
   GL_LINE
);
for Mesh1ModeEnm use
(
   GL_POINT                                   => 16#1B00#,
   GL_LINE                                    => 16#1B01#
);
for Mesh1ModeEnm'Size use GLenum'size;

type Mesh2ModeEnm is
(
   GL_POINT,
   GL_LINE,
   GL_FILL
);
for Mesh2ModeEnm use
(
   GL_POINT                                   => 16#1B00#,
   GL_LINE                                    => 16#1B01#,
   GL_FILL                                    => 16#1B02#
);
for Mesh2ModeEnm'Size use GLenum'size;

procedure glMap1d (target: Map1TargetEnm;
                   u1    : GLdouble;
                   u2    : GLdouble;
                   stride: GLint;
                   order : GLint;
                   points: GLdoublePtr);

procedure glMap1f (target: Map1TargetEnm;
                   u1    : GLfloat;
                   u2    : GLfloat;
                   stride: GLint;
                   order : GLint;
                   points: GLfloatPtr);

procedure glMap2d (target : Map2TargetEnm;
                   u1     : GLdouble;
                   u2     : GLdouble;
                   ustride: GLint;
                   uorder : GLint;
                   v1     : GLdouble;
                   v2     : GLdouble;
                   vstride: GLint;
                   vorder : GLint;
                   points : GLdoublePtr);

procedure glMap2f (target : Map2TargetEnm;
                   u1     : GLfloat;
                   u2     : GLfloat;
                   ustride: GLint;
                   uorder : GLint;
                   v1     : GLfloat;
                   v2     : GLfloat;
                   vstride: GLint;
                   vorder : GLint;
                   points : GLfloatPtr);

procedure glGetMapdv (target: MapTargetEnm;
                      query : MapQueryEnm;
                      v     : GLdoublePtr);

procedure glGetMapfv (target: MapTargetEnm;
                      query : MapQueryEnm;
                      v     : GLfloatPtr);

procedure glGetMapiv (target: MapTargetEnm;
                      query : MapQueryEnm;
                      v     : GLintPtr);

procedure glEvalPoint1 (i: GLint);

procedure glEvalPoint2 (i: GLint;
                        j: GLint);

procedure glEvalMesh1 (mode: Mesh1ModeEnm;
                       i1  : GLint;
                       i2  : GLint);

procedure glEvalMesh2 (mode: Mesh2ModeEnm;
                       i1  : GLint;
                       i2  : GLint;
                       j1  : GLint;
                       j2  : GLint);

procedure glEvalCoord1d (u: GLdouble);

procedure glEvalCoord1f (u: GLfloat);

procedure glEvalCoord1dv (u: GLdoublePtr);

procedure glEvalCoord1fv (u: GLfloatPtr);

procedure glEvalCoord2d (u: GLdouble;
                         v: GLdouble);

procedure glEvalCoord2f (u: GLfloat;
                         v: GLfloat);

procedure glEvalCoord2dv (u: GLdoublePtr);

procedure glEvalCoord2fv (u: GLfloatPtr);

procedure glMapGrid1d (un: GLint;
                       u1: GLdouble;
                       u2: GLdouble);

procedure glMapGrid1f (un: GLint;
                       u1: GLfloat;
                       u2: GLfloat);

procedure glMapGrid2d (un: GLint;
                       u1: GLdouble;
                       u2: GLdouble;
                       vn: GLint;
                       v1: GLdouble;
                       v2: GLdouble);

procedure glMapGrid2f (un: GLint;
                       u1: GLfloat;
                       u2: GLfloat;
                       vn: GLint;
                       v1: GLfloat;
                       v2: GLfloat);


-- Fog
type FogParameterEnm is
(
   GL_FOG_INDEX,
   GL_FOG_DENSITY,
   GL_FOG_START,
   GL_FOG_END,
   GL_FOG_MODE
);
for FogParameterEnm use
(
   GL_FOG_INDEX                               => 16#0B61#,
   GL_FOG_DENSITY                             => 16#0B62#,
   GL_FOG_START                               => 16#0B63#,
   GL_FOG_END                                 => 16#0B64#,
   GL_FOG_MODE                                => 16#0B65#
);
for FogParameterEnm'Size use GLenum'size;

type FogParameterVEnm is
(
   GL_FOG_INDEX,
   GL_FOG_DENSITY,
   GL_FOG_START,
   GL_FOG_END,
   GL_FOG_MODE,
   GL_FOG_COLOR
);
for FogParameterVEnm use
(
   GL_FOG_INDEX                               => 16#0B61#,
   GL_FOG_DENSITY                             => 16#0B62#,
   GL_FOG_START                               => 16#0B63#,
   GL_FOG_END                                 => 16#0B64#,
   GL_FOG_MODE                                => 16#0B65#,
   GL_FOG_COLOR                               => 16#0B66#
);
for FogParameterVEnm'Size use GLenum'size;

-- Fog attenuation modes
GL_LINEAR                      : constant := 16#2601#;
GL_EXP                         : constant := 16#0800#;
GL_EXP2                        : constant := 16#0801#;

procedure glFogf (pname: FogParameterEnm;
                  param: GLfloat);

procedure glFogi (pname: FogParameterEnm;
                  param: GLint);

procedure glFogfv (pname : FogParameterVEnm;
                   params: GLfloatPtr);

procedure glFogiv (pname : FogParameterVEnm;
                   params: GLintPtr);


-- Feedback
type FeedbackModeEnm is
(
   GL_2D,
   GL_3D,
   GL_3D_COLOR,
   GL_3D_COLOR_TEXTURE,
   GL_4D_COLOR_TEXTURE
);
for FeedbackModeEnm use
(
   GL_2D                                      => 16#0600#,
   GL_3D                                      => 16#0601#,
   GL_3D_COLOR                                => 16#0602#,
   GL_3D_COLOR_TEXTURE                        => 16#0603#,
   GL_4D_COLOR_TEXTURE                        => 16#0604#
);
for FeedbackModeEnm'Size use GLenum'size;

-- Feedback tokens
GL_POINT_TOKEN                 : constant := 16#0701#;
GL_LINE_TOKEN                  : constant := 16#0702#;
GL_LINE_RESET_TOKEN            : constant := 16#0707#;
GL_POLYGON_TOKEN               : constant := 16#0703#;
GL_BITMAP_TOKEN                : constant := 16#0704#;
GL_DRAW_PIXEL_TOKEN            : constant := 16#0705#;
GL_COPY_PIXEL_TOKEN            : constant := 16#0706#;
GL_PASS_THROUGH_TOKEN          : constant := 16#0700#;
GL_FEEDBACK_BUFFER_SIZE        : constant := 16#0DF1#;
GL_FEEDBACK_BUFFER_TYPE        : constant := 16#0DF2#;

procedure glFeedbackBuffer (size  : GLsizei;
                            c_type: FeedbackModeEnm;
                            buffer: GLfloatPtr);

procedure glPassThrough (token: GLfloat);


-- Color tables (extension)
type ColorTableTargetEnm is
(
   GL_TEXTURE_1D,
   GL_TEXTURE_2D,
   GL_PROXY_TEXTURE_1D,
   GL_PROXY_TEXTURE_2D,
   GL_TEXTURE_3D_EXT,
   GL_PROXY_TEXTURE_3D_EXT,
   GL_SHARED_TEXTURE_PALETTE_EXT

);
for ColorTableTargetEnm use
(
   GL_TEXTURE_1D                              => 16#0DE0#,
   GL_TEXTURE_2D                              => 16#0DE1#,
   GL_PROXY_TEXTURE_1D                        => 16#8063#,
   GL_PROXY_TEXTURE_2D                        => 16#8064#,
   GL_TEXTURE_3D_EXT                          => 16#806F#,
   GL_PROXY_TEXTURE_3D_EXT                    => 16#8070#,
   GL_SHARED_TEXTURE_PALETTE_EXT              => 16#81FB#
);
for ColorTableTargetEnm'Size use GLenum'size;

type GetColorTableTargetEnm is
(
   GL_TEXTURE_1D,
   GL_TEXTURE_2D,
   GL_TEXTURE_3D_EXT,
   GL_SHARED_TEXTURE_PALETTE_EXT

);
for GetColorTableTargetEnm use
(
   GL_TEXTURE_1D                              => 16#0DE0#,
   GL_TEXTURE_2D                              => 16#0DE1#,
   GL_TEXTURE_3D_EXT                          => 16#806F#,
   GL_SHARED_TEXTURE_PALETTE_EXT              => 16#81FB#
);
for GetColorTableTargetEnm'Size use GLenum'size;

type ColorTableParameterEnm is
(
   GL_COLOR_TABLE_FORMAT_EXT,
   GL_COLOR_TABLE_WIDTH_EXT,
   GL_COLOR_TABLE_RED_SIZE_EXT,
   GL_COLOR_TABLE_GREEN_SIZE_EXT,
   GL_COLOR_TABLE_BLUE_SIZE_EXT,
   GL_COLOR_TABLE_ALPHA_SIZE_EXT,
   GL_COLOR_TABLE_LUMINANCE_SIZE_EXT,
   GL_COLOR_TABLE_INTENSITY_SIZE_EXT
);
for ColorTableParameterEnm use
(
   GL_COLOR_TABLE_FORMAT_EXT                  => 16#80D8#,
   GL_COLOR_TABLE_WIDTH_EXT                   => 16#80D9#,
   GL_COLOR_TABLE_RED_SIZE_EXT                => 16#80DA#,
   GL_COLOR_TABLE_GREEN_SIZE_EXT              => 16#80DB#,
   GL_COLOR_TABLE_BLUE_SIZE_EXT               => 16#80DC#,
   GL_COLOR_TABLE_ALPHA_SIZE_EXT              => 16#80DD#,
   GL_COLOR_TABLE_LUMINANCE_SIZE_EXT          => 16#80DE#,
   GL_COLOR_TABLE_INTENSITY_SIZE_EXT          => 16#80DF#
);
for ColorTableParameterEnm'Size use GLenum'size;

procedure glColorTableEXT (target        : ColorTableTargetEnm;
                           internalformat: TexFormatEnm;
                           width         : GLsizei;
                           format        : TexPixelFormatEnm;
                           c_type        : PixelDataTypeEnm;
                           table         : GLpointer);

procedure glColorSubTableEXT (target: ColorTableTargetEnm;
                              start : GLsizei;
                              count : GLsizei;
                              format: TexPixelFormatEnm;
                              c_type: PixelDataTypeEnm;
                              data  : GLpointer);

procedure glGetColorTableEXT (target: GetColorTableTargetEnm;
                              format: TexPixelFormatEnm;
                              c_type: PixelDataTypeEnm;
                              table : GLpointer);

procedure glGetColorTableParameterfvEXT (target: GetColorTableTargetEnm;
                                         pname : ColorTableParameterEnm;
                                         params: GLfloatPtr);

procedure glGetColorTableParameterivEXT (target: GetColorTableTargetEnm;
                                         pname : ColorTableParameterEnm;
                                         params: GLintPtr);


-- Point parameters (extension)
type PointParameterEnm is
(
   GL_POINT_SIZE_MIN_EXT,
   GL_POINT_SIZE_MAX_EXT,
   GL_POINT_FADE_THRESHOLD_SIZE_EXT
);
for PointParameterEnm use
(
   GL_POINT_SIZE_MIN_EXT                      => 16#8126#,
   GL_POINT_SIZE_MAX_EXT                      => 16#8127#,
   GL_POINT_FADE_THRESHOLD_SIZE_EXT           => 16#8128#
);
for PointParameterEnm'Size use GLenum'size;

type PointParameterVEnm is
(
   GL_POINT_SIZE_MIN_EXT,
   GL_POINT_SIZE_MAX_EXT,
   GL_POINT_FADE_THRESHOLD_SIZE_EXT,
   GL_DISTANCE_ATTENUATION_EXT
);
for PointParameterVEnm use
(
   GL_POINT_SIZE_MIN_EXT                      => 16#8126#,
   GL_POINT_SIZE_MAX_EXT                      => 16#8127#,
   GL_POINT_FADE_THRESHOLD_SIZE_EXT           => 16#8128#,
   GL_DISTANCE_ATTENUATION_EXT                => 16#8129#
);
for PointParameterVEnm'Size use GLenum'size;

procedure glPointParameterfEXT (pname: PointParameterEnm;
                                param: GLfloat);

procedure glPointParameterfvEXT (pname : PointParameterVEnm;
                                 params: GLfloatPtr);


-- Clears
procedure glClearIndex (c: GLfloat);

procedure glClearColor (red  : GLclampf;
                        green: GLclampf;
                        blue : GLclampf;
                        alpha: GLclampf);

procedure glClear (mask: GLbitfield);

procedure glClearDepth (depth: GLclampd);

procedure glClearAccum (red  : GLfloat;
                        green: GLfloat;
                        blue : GLfloat;
                        alpha: GLfloat);


-- Masks
procedure glIndexMask (mask: GLuint);

procedure glColorMask (red  : GLboolean;
                       green: GLboolean;
                       blue : GLboolean;
                       alpha: GLboolean);

-- Drawing parameters
procedure glPointSize (size: GLfloat);

procedure glLineWidth (width: GLfloat);

procedure glLineStipple (factor : GLint;
                         pattern: GLushort);

procedure glPolygonOffset (factor: GLfloat;
                           units : GLfloat);

procedure glPolygonStipple (mask: GLubytePtr);

procedure glGetPolygonStipple (mask: GLubytePtr);

procedure glEdgeFlag (flag: GLboolean);

procedure glEdgeFlagv (flag: GLbooleanPtr);

procedure glScissor (x     : GLint;
                     y     : GLint;
                     width : GLsizei;
                     height: GLsizei);


-- Atribute stacks
procedure glPushAttrib (mask: GLbitfield);

procedure glPopAttrib;

procedure glPushClientAttrib (mask: GLbitfield);

procedure glPopClientAttrib;


-- Pipeline control
procedure glFinish;

procedure glFlush;

procedure glDepthMask (flag: GLboolean);

procedure glDepthRange (near_val: GLclampd;
                        far_val : GLclampd);


-- Projections
procedure glOrtho (left    : GLdouble;
                   right   : GLdouble;
                   bottom  : GLdouble;
                   top     : GLdouble;
                   near_val: GLdouble;
                   far_val : GLdouble);

procedure glFrustum (left    : GLdouble;
                     right   : GLdouble;
                     bottom  : GLdouble;
                     top     : GLdouble;
                     near_val: GLdouble;
                     far_val : GLdouble);

procedure glViewport (x     : GLint;
                      y     : GLint;
                      width : GLsizei;
                      height: GLsizei);


-- Matrix stacks
procedure glPushMatrix;

procedure glPopMatrix;

procedure glLoadIdentity;

procedure glLoadMatrixd (m: GLdoublePtr);

procedure glLoadMatrixf (m: GLfloatPtr);

procedure glMultMatrixd (m: GLdoublePtr);

procedure glMultMatrixf (m: GLfloatPtr);


-- Transformations
procedure glRotated (angle: GLdouble;
                     x    : GLdouble;
                     y    : GLdouble;
                     z    : GLdouble);

procedure glRotatef (angle: GLfloat;
                     x    : GLfloat;
                     y    : GLfloat;
                     z    : GLfloat);

procedure glScaled (x: GLdouble;
                    y: GLdouble;
                    z: GLdouble);

procedure glScalef (x: GLfloat;
                    y: GLfloat;
                    z: GLfloat);

procedure glTranslated (x: GLdouble;
                        y: GLdouble;
                        z: GLdouble);

procedure glTranslatef (x: GLfloat;
                        y: GLfloat;
                        z: GLfloat);


-- Specify vertices
procedure glVertex2d (x: GLdouble;
                      y: GLdouble);

procedure glVertex2f (x: GLfloat;
                      y: GLfloat);

procedure glVertex2i (x: GLint;
                      y: GLint);

procedure glVertex2s (x: GLshort;
                      y: GLshort);

procedure glVertex3d (x: GLdouble;
                      y: GLdouble;
                      z: GLdouble);

procedure glVertex3f (x: GLfloat;
                      y: GLfloat;
                      z: GLfloat);

procedure glVertex3i (x: GLint;
                      y: GLint;
                      z: GLint);

procedure glVertex3s (x: GLshort;
                      y: GLshort;
                      z: GLshort);

procedure glVertex4d (x: GLdouble;
                      y: GLdouble;
                      z: GLdouble;
                      w: GLdouble);

procedure glVertex4f (x: GLfloat;
                      y: GLfloat;
                      z: GLfloat;
                      w: GLfloat);

procedure glVertex4i (x: GLint;
                      y: GLint;
                      z: GLint;
                      w: GLint);

procedure glVertex4s (x: GLshort;
                      y: GLshort;
                      z: GLshort;
                      w: GLshort);

procedure glVertex2dv (v: GLdoublePtr);

procedure glVertex2fv (v: GLfloatPtr);

procedure glVertex2iv (v: GLintPtr);

procedure glVertex2sv (v: GLshortPtr);

procedure glVertex3dv (v: GLdoublePtr);

procedure glVertex3fv (v: GLfloatPtr);

procedure glVertex3iv (v: GLintPtr);

procedure glVertex3sv (v: GLshortPtr);

procedure glVertex4dv (v: GLdoublePtr);

procedure glVertex4fv (v: GLfloatPtr);

procedure glVertex4iv (v: GLintPtr);

procedure glVertex4sv (v: GLshortPtr);


-- Specify normai vectors
procedure glNormal3b (nx: GLbyte;
                      ny: GLbyte;
                      nz: GLbyte);

procedure glNormal3d (nx: GLdouble;
                      ny: GLdouble;
                      nz: GLdouble);

procedure glNormal3f (nx: GLfloat;
                      ny: GLfloat;
                      nz: GLfloat);

procedure glNormal3i (nx: GLint;
                      ny: GLint;
                      nz: GLint);

procedure glNormal3s (nx: GLshort;
                      ny: GLshort;
                      nz: GLshort);

procedure glNormal3bv (v: GLbytePtr);

procedure glNormal3dv (v: GLdoublePtr);

procedure glNormal3fv (v: GLfloatPtr);

procedure glNormal3iv (v: GLintPtr);

procedure glNormal3sv (v: GLshortPtr);


-- Indexed color
procedure glIndexd (c: GLdouble);

procedure glIndexf (c: GLfloat);

procedure glIndexi (c: GLint);

procedure glIndexs (c: GLshort);

procedure glIndexub (c: GLubyte);

procedure glIndexdv (c: GLdoublePtr);

procedure glIndexfv (c: GLfloatPtr);

procedure glIndexiv (c: GLintPtr);

procedure glIndexsv (c: GLshortPtr);

procedure glIndexubv (c: GLubytePtr);


-- Component color
procedure glColor3b (red  : GLbyte;
                     green: GLbyte;
                     blue : GLbyte);

procedure glColor3d (red  : GLdouble;
                     green: GLdouble;
                     blue : GLdouble);

procedure glColor3f (red  : GLfloat;
                     green: GLfloat;
                     blue : GLfloat);

procedure glColor3i (red  : GLint;
                     green: GLint;
                     blue : GLint);

procedure glColor3s (red  : GLshort;
                     green: GLshort;
                     blue : GLshort);

procedure glColor3ub (red  : GLubyte;
                      green: GLubyte;
                      blue : GLubyte);

procedure glColor3ui (red  : GLuint;
                      green: GLuint;
                      blue : GLuint);

procedure glColor3us (red  : GLushort;
                      green: GLushort;
                      blue : GLushort);

procedure glColor4b (red  : GLbyte;
                     green: GLbyte;
                     blue : GLbyte;
                     alpha: GLbyte);

procedure glColor4d (red  : GLdouble;
                     green: GLdouble;
                     blue : GLdouble;
                     alpha: GLdouble);

procedure glColor4f (red  : GLfloat;
                     green: GLfloat;
                     blue : GLfloat;
                     alpha: GLfloat);

procedure glColor4i (red  : GLint;
                     green: GLint;
                     blue : GLint;
                     alpha: GLint);

procedure glColor4s (red  : GLshort;
                     green: GLshort;
                     blue : GLshort;
                     alpha: GLshort);

procedure glColor4ub (red  : GLubyte;
                      green: GLubyte;
                      blue : GLubyte;
                      alpha: GLubyte);

procedure glColor4ui (red  : GLuint;
                      green: GLuint;
                      blue : GLuint;
                      alpha: GLuint);

procedure glColor4us (red  : GLushort;
                      green: GLushort;
                      blue : GLushort;
                      alpha: GLushort);

procedure glColor3bv (v: GLbytePtr);

procedure glColor3dv (v: GLdoublePtr);

procedure glColor3fv (v: GLfloatPtr);

procedure glColor3iv (v: GLintPtr);

procedure glColor3sv (v: GLshortPtr);

procedure glColor3ubv (v: GLubytePtr);

procedure glColor3uiv (v: GLuintPtr);

procedure glColor3usv (v: GLushortPtr);

procedure glColor4bv (v: GLbytePtr);

procedure glColor4dv (v: GLdoublePtr);

procedure glColor4fv (v: GLfloatPtr);

procedure glColor4iv (v: GLintPtr);

procedure glColor4sv (v: GLshortPtr);

procedure glColor4ubv (v: GLubytePtr);

procedure glColor4uiv (v: GLuintPtr);

procedure glColor4usv (v: GLushortPtr);


-- Texture coordinates
procedure glTexCoord1d (s: GLdouble);

procedure glTexCoord1f (s: GLfloat);

procedure glTexCoord1i (s: GLint);

procedure glTexCoord1s (s: GLshort);

procedure glTexCoord2d (s: GLdouble;
                        t: GLdouble);

procedure glTexCoord2f (s: GLfloat;
                        t: GLfloat);

procedure glTexCoord2i (s: GLint;
                        t: GLint);

procedure glTexCoord2s (s: GLshort;
                        t: GLshort);

procedure glTexCoord3d (s: GLdouble;
                        t: GLdouble;
                        r: GLdouble);

procedure glTexCoord3f (s: GLfloat;
                        t: GLfloat;
                        r: GLfloat);

procedure glTexCoord3i (s: GLint;
                        t: GLint;
                        r: GLint);

procedure glTexCoord3s (s: GLshort;
                        t: GLshort;
                        r: GLshort);

procedure glTexCoord4d (s: GLdouble;
                        t: GLdouble;
                        r: GLdouble;
                        q: GLdouble);

procedure glTexCoord4f (s: GLfloat;
                        t: GLfloat;
                        r: GLfloat;
                        q: GLfloat);

procedure glTexCoord4i (s: GLint;
                        t: GLint;
                        r: GLint;
                        q: GLint);

procedure glTexCoord4s (s: GLshort;
                        t: GLshort;
                        r: GLshort;
                        q: GLshort);

procedure glTexCoord1dv (v: GLdoublePtr);

procedure glTexCoord1fv (v: GLfloatPtr);

procedure glTexCoord1iv (v: GLintPtr);

procedure glTexCoord1sv (v: GLshortPtr);

procedure glTexCoord2dv (v: GLdoublePtr);

procedure glTexCoord2fv (v: GLfloatPtr);

procedure glTexCoord2iv (v: GLintPtr);

procedure glTexCoord2sv (v: GLshortPtr);

procedure glTexCoord3dv (v: GLdoublePtr);

procedure glTexCoord3fv (v: GLfloatPtr);

procedure glTexCoord3iv (v: GLintPtr);

procedure glTexCoord3sv (v: GLshortPtr);

procedure glTexCoord4dv (v: GLdoublePtr);

procedure glTexCoord4fv (v: GLfloatPtr);

procedure glTexCoord4iv (v: GLintPtr);

procedure glTexCoord4sv (v: GLshortPtr);


-- Pixel op raster position
procedure glRasterPos2d (x: GLdouble;
                         y: GLdouble);

procedure glRasterPos2f (x: GLfloat;
                         y: GLfloat);

procedure glRasterPos2i (x: GLint;
                         y: GLint);

procedure glRasterPos2s (x: GLshort;
                         y: GLshort);

procedure glRasterPos3d (x: GLdouble;
                         y: GLdouble;
                         z: GLdouble);

procedure glRasterPos3f (x: GLfloat;
                         y: GLfloat;
                         z: GLfloat);

procedure glRasterPos3i (x: GLint;
                         y: GLint;
                         z: GLint);

procedure glRasterPos3s (x: GLshort;
                         y: GLshort;
                         z: GLshort);

procedure glRasterPos4d (x: GLdouble;
                         y: GLdouble;
                         z: GLdouble;
                         w: GLdouble);

procedure glRasterPos4f (x: GLfloat;
                         y: GLfloat;
                         z: GLfloat;
                         w: GLfloat);

procedure glRasterPos4i (x: GLint;
                         y: GLint;
                         z: GLint;
                         w: GLint);

procedure glRasterPos4s (x: GLshort;
                         y: GLshort;
                         z: GLshort;
                         w: GLshort);

procedure glRasterPos2dv (v: GLdoublePtr);

procedure glRasterPos2fv (v: GLfloatPtr);

procedure glRasterPos2iv (v: GLintPtr);

procedure glRasterPos2sv (v: GLshortPtr);

procedure glRasterPos3dv (v: GLdoublePtr);

procedure glRasterPos3fv (v: GLfloatPtr);

procedure glRasterPos3iv (v: GLintPtr);

procedure glRasterPos3sv (v: GLshortPtr);

procedure glRasterPos4dv (v: GLdoublePtr);

procedure glRasterPos4fv (v: GLfloatPtr);

procedure glRasterPos4iv (v: GLintPtr);

procedure glRasterPos4sv (v: GLshortPtr);


-- Rectangles
procedure glRectd (x1: GLdouble;
                   y1: GLdouble;
                   x2: GLdouble;
                   y2: GLdouble);

procedure glRectf (x1: GLfloat;
                   y1: GLfloat;
                   x2: GLfloat;
                   y2: GLfloat);

procedure glRecti (x1: GLint;
                   y1: GLint;
                   x2: GLint;
                   y2: GLint);

procedure glRects (x1: GLshort;
                   y1: GLshort;
                   x2: GLshort;
                   y2: GLshort);

procedure glRectdv (v1: GLdoublePtr;
                    v2: GLdoublePtr);

procedure glRectfv (v1: GLfloatPtr;
                    v2: GLfloatPtr);

procedure glRectiv (v1: GLintPtr;
                    v2: GLintPtr);

procedure glRectsv (v1: GLshortPtr;
                    v2: GLshortPtr);


-- Bitmap
procedure glBitmap (width : GLsizei;
                    height: GLsizei;
                    xorig : GLfloat;
                    yorig : GLfloat;
                    xmove : GLfloat;
                    ymove : GLfloat;
                    bitmap: GLubytePtr);


-- Stenciling
procedure glStencilMask (mask: GLuint);

procedure glClearStencil (s: GLint);


-- Selections and name stack
procedure glSelectBuffer (size  : GLsizei;
                          buffer: GLuintPtr);
procedure glInitNames;

procedure glLoadName (name: GLuint);

procedure glPushName (name: GLuint);

procedure glPopName;


-- Mesa-specific routines
procedure glWindowPos2iMESA (x: GLint;
                             y: GLint);

procedure glWindowPos2sMESA (x: GLshort;
                             y: GLshort);

procedure glWindowPos2fMESA (x: GLfloat;
                             y: GLfloat);

procedure glWindowPos2dMESA (x: GLdouble;
                             y: GLdouble);

procedure glWindowPos2ivMESA (p: GLintPtr);

procedure glWindowPos2svMESA (p: GLshortPtr);

procedure glWindowPos2fvMESA (p: GLfloatPtr);

procedure glWindowPos2dvMESA (p: GLdoublePtr);

procedure glWindowPos3iMESA (x: GLint;
                             y: GLint;
                             z: GLint);

procedure glWindowPos3sMESA (x: GLshort;
                             y: GLshort;
                             z: GLshort);

procedure glWindowPos3fMESA (x: GLfloat;
                             y: GLfloat;
                             z: GLfloat);

procedure glWindowPos3dMESA (x: GLdouble;
                             y: GLdouble;
                             z: GLdouble);

procedure glWindowPos3ivMESA (p: GLintPtr);

procedure glWindowPos3svMESA (p: GLshortPtr);

procedure glWindowPos3fvMESA (p: GLfloatPtr);

procedure glWindowPos3dvMESA (p: GLdoublePtr);

procedure glWindowPos4iMESA (x: GLint;
                             y: GLint;
                             z: GLint;
                             w: GLint);

procedure glWindowPos4sMESA (x: GLshort;
                             y: GLshort;
                             z: GLshort;
                             w: GLshort);

procedure glWindowPos4fMESA (x: GLfloat;
                             y: GLfloat;
                             z: GLfloat;
                             w: GLfloat);

procedure glWindowPos4dMESA (x: GLdouble;
                             y: GLdouble;
                             z: GLdouble;
                             w: GLdouble);

procedure glWindowPos4ivMESA (p: GLintPtr);

procedure glWindowPos4svMESA (p: GLshortPtr);

procedure glWindowPos4fvMESA (p: GLfloatPtr);

procedure glWindowPos4dvMESA (p: GLdoublePtr);

procedure glResizeBuffersMESA;

------------------------------------------------------------------------------

private

pragma Import (C, glClearIndex, "glClearIndex");
pragma Import (C, glClearColor, "glClearColor");
pragma Import (C, glClear, "glClear");
pragma Import (C, glIndexMask, "glIndexMask");
pragma Import (C, glColorMask, "glColorMask");
pragma Import (C, glAlphaFunc, "glAlphaFunc");
pragma Import (C, glBlendFunc, "glBlendFunc");
pragma Import (C, glLogicOp, "glLogicOp");
pragma Import (C, glCullFace, "glCullFace");
pragma Import (C, glFrontFace, "glFrontFace");
pragma Import (C, glPointSize, "glPointSize");
pragma Import (C, glLineWidth, "glLineWidth");
pragma Import (C, glLineStipple, "glLineStipple");
pragma Import (C, glPolygonMode, "glPolygonMode");
pragma Import (C, glPolygonOffset, "glPolygonOffset");
pragma Import (C, glPolygonStipple, "glPolygonStipple");
pragma Import (C, glGetPolygonStipple, "glGetPolygonStipple");
pragma Import (C, glEdgeFlag, "glEdgeFlag");
pragma Import (C, glEdgeFlagv, "glEdgeFlagv");
pragma Import (C, glScissor, "glScissor");
pragma Import (C, glClipPlane, "glClipPlane");
pragma Import (C, glGetClipPlane, "glGetClipPlane");
pragma Import (C, glDrawBuffer, "glDrawBuffer");
pragma Import (C, glReadBuffer, "glReadBuffer");
pragma Import (C, glEnable, "glEnable");
pragma Import (C, glDisable, "glDisable");
pragma Import (C, glIsEnabled, "glIsEnabled");
pragma Import (C, glEnableClientState, "glEnableClientState");
pragma Import (C, glDisableClientState, "glDisableClientState");
pragma Import (C, glGetBooleanv, "glGetBooleanv");
pragma Import (C, glGetDoublev, "glGetDoublev");
pragma Import (C, glGetFloatv, "glGetFloatv");
pragma Import (C, glGetIntegerv, "glGetIntegerv");
pragma Import (C, glPushAttrib, "glPushAttrib");
pragma Import (C, glPopAttrib, "glPopAttrib");
pragma Import (C, glPushClientAttrib, "glPushClientAttrib");
pragma Import (C, glPopClientAttrib, "glPopClientAttrib");
pragma Import (C, glRenderMode, "glRenderMode");
pragma Import (C, glGetError, "glGetError");
pragma Import (C, glGetString, "glGetString");
pragma Import (C, glFinish, "glFinish");
pragma Import (C, glFlush, "glFlush");
pragma Import (C, glHint, "glHint");
pragma Import (C, glClearDepth, "glClearDepth");
pragma Import (C, glDepthFunc, "glDepthFunc");
pragma Import (C, glDepthMask, "glDepthMask");
pragma Import (C, glDepthRange, "glDepthRange");
pragma Import (C, glClearAccum, "glClearAccum");
pragma Import (C, glAccum, "glAccum");
pragma Import (C, glMatrixMode, "glMatrixMode");
pragma Import (C, glOrtho, "glOrtho");
pragma Import (C, glFrustum, "glFrustum");
pragma Import (C, glViewport, "glViewport");
pragma Import (C, glPushMatrix, "glPushMatrix");
pragma Import (C, glPopMatrix, "glPopMatrix");
pragma Import (C, glLoadIdentity, "glLoadIdentity");
pragma Import (C, glLoadMatrixd, "glLoadMatrixd");
pragma Import (C, glLoadMatrixf, "glLoadMatrixf");
pragma Import (C, glMultMatrixd, "glMultMatrixd");
pragma Import (C, glMultMatrixf, "glMultMatrixf");
pragma Import (C, glRotated, "glRotated");
pragma Import (C, glRotatef, "glRotatef");
pragma Import (C, glScaled, "glScaled");
pragma Import (C, glScalef, "glScalef");
pragma Import (C, glTranslated, "glTranslated");
pragma Import (C, glTranslatef, "glTranslatef");
pragma Import (C, glIsList, "glIsList");
pragma Import (C, glDeleteLists, "glDeleteLists");
pragma Import (C, glGenLists, "glGenLists");
pragma Import (C, glNewList, "glNewList");
pragma Import (C, glEndList, "glEndList");
pragma Import (C, glCallList, "glCallList");
pragma Import (C, glCallLists, "glCallLists");
pragma Import (C, glListBase, "glListBase");
pragma Import (C, glBegin, "glBegin");
pragma Import (C, glEnd, "glEnd");
pragma Import (C, glVertex2d, "glVertex2d");
pragma Import (C, glVertex2f, "glVertex2f");
pragma Import (C, glVertex2i, "glVertex2i");
pragma Import (C, glVertex2s, "glVertex2s");
pragma Import (C, glVertex3d, "glVertex3d");
pragma Import (C, glVertex3f, "glVertex3f");
pragma Import (C, glVertex3i, "glVertex3i");
pragma Import (C, glVertex3s, "glVertex3s");
pragma Import (C, glVertex4d, "glVertex4d");
pragma Import (C, glVertex4f, "glVertex4f");
pragma Import (C, glVertex4i, "glVertex4i");
pragma Import (C, glVertex4s, "glVertex4s");
pragma Import (C, glVertex2dv, "glVertex2dv");
pragma Import (C, glVertex2fv, "glVertex2fv");
pragma Import (C, glVertex2iv, "glVertex2iv");
pragma Import (C, glVertex2sv, "glVertex2sv");
pragma Import (C, glVertex3dv, "glVertex3dv");
pragma Import (C, glVertex3fv, "glVertex3fv");
pragma Import (C, glVertex3iv, "glVertex3iv");
pragma Import (C, glVertex3sv, "glVertex3sv");
pragma Import (C, glVertex4dv, "glVertex4dv");
pragma Import (C, glVertex4fv, "glVertex4fv");
pragma Import (C, glVertex4iv, "glVertex4iv");
pragma Import (C, glVertex4sv, "glVertex4sv");
pragma Import (C, glNormal3b, "glNormal3b");
pragma Import (C, glNormal3d, "glNormal3d");
pragma Import (C, glNormal3f, "glNormal3f");
pragma Import (C, glNormal3i, "glNormal3i");
pragma Import (C, glNormal3s, "glNormal3s");
pragma Import (C, glNormal3bv, "glNormal3bv");
pragma Import (C, glNormal3dv, "glNormal3dv");
pragma Import (C, glNormal3fv, "glNormal3fv");
pragma Import (C, glNormal3iv, "glNormal3iv");
pragma Import (C, glNormal3sv, "glNormal3sv");
pragma Import (C, glIndexd, "glIndexd");
pragma Import (C, glIndexf, "glIndexf");
pragma Import (C, glIndexi, "glIndexi");
pragma Import (C, glIndexs, "glIndexs");
pragma Import (C, glIndexub, "glIndexub");
pragma Import (C, glIndexdv, "glIndexdv");
pragma Import (C, glIndexfv, "glIndexfv");
pragma Import (C, glIndexiv, "glIndexiv");
pragma Import (C, glIndexsv, "glIndexsv");
pragma Import (C, glIndexubv, "glIndexubv");
pragma Import (C, glColor3b, "glColor3b");
pragma Import (C, glColor3d, "glColor3d");
pragma Import (C, glColor3f, "glColor3f");
pragma Import (C, glColor3i, "glColor3i");
pragma Import (C, glColor3s, "glColor3s");
pragma Import (C, glColor3ub, "glColor3ub");
pragma Import (C, glColor3ui, "glColor3ui");
pragma Import (C, glColor3us, "glColor3us");
pragma Import (C, glColor4b, "glColor4b");
pragma Import (C, glColor4d, "glColor4d");
pragma Import (C, glColor4f, "glColor4f");
pragma Import (C, glColor4i, "glColor4i");
pragma Import (C, glColor4s, "glColor4s");
pragma Import (C, glColor4ub, "glColor4ub");
pragma Import (C, glColor4ui, "glColor4ui");
pragma Import (C, glColor4us, "glColor4us");
pragma Import (C, glColor3bv, "glColor3bv");
pragma Import (C, glColor3dv, "glColor3dv");
pragma Import (C, glColor3fv, "glColor3fv");
pragma Import (C, glColor3iv, "glColor3iv");
pragma Import (C, glColor3sv, "glColor3sv");
pragma Import (C, glColor3ubv, "glColor3ubv");
pragma Import (C, glColor3uiv, "glColor3uiv");
pragma Import (C, glColor3usv, "glColor3usv");
pragma Import (C, glColor4bv, "glColor4bv");
pragma Import (C, glColor4dv, "glColor4dv");
pragma Import (C, glColor4fv, "glColor4fv");
pragma Import (C, glColor4iv, "glColor4iv");
pragma Import (C, glColor4sv, "glColor4sv");
pragma Import (C, glColor4ubv, "glColor4ubv");
pragma Import (C, glColor4uiv, "glColor4uiv");
pragma Import (C, glColor4usv, "glColor4usv");
pragma Import (C, glTexCoord1d, "glTexCoord1d");
pragma Import (C, glTexCoord1f, "glTexCoord1f");
pragma Import (C, glTexCoord1i, "glTexCoord1i");
pragma Import (C, glTexCoord1s, "glTexCoord1s");
pragma Import (C, glTexCoord2d, "glTexCoord2d");
pragma Import (C, glTexCoord2f, "glTexCoord2f");
pragma Import (C, glTexCoord2i, "glTexCoord2i");
pragma Import (C, glTexCoord2s, "glTexCoord2s");
pragma Import (C, glTexCoord3d, "glTexCoord3d");
pragma Import (C, glTexCoord3f, "glTexCoord3f");
pragma Import (C, glTexCoord3i, "glTexCoord3i");
pragma Import (C, glTexCoord3s, "glTexCoord3s");
pragma Import (C, glTexCoord4d, "glTexCoord4d");
pragma Import (C, glTexCoord4f, "glTexCoord4f");
pragma Import (C, glTexCoord4i, "glTexCoord4i");
pragma Import (C, glTexCoord4s, "glTexCoord4s");
pragma Import (C, glTexCoord1dv, "glTexCoord1dv");
pragma Import (C, glTexCoord1fv, "glTexCoord1fv");
pragma Import (C, glTexCoord1iv, "glTexCoord1iv");
pragma Import (C, glTexCoord1sv, "glTexCoord1sv");
pragma Import (C, glTexCoord2dv, "glTexCoord2dv");
pragma Import (C, glTexCoord2fv, "glTexCoord2fv");
pragma Import (C, glTexCoord2iv, "glTexCoord2iv");
pragma Import (C, glTexCoord2sv, "glTexCoord2sv");
pragma Import (C, glTexCoord3dv, "glTexCoord3dv");
pragma Import (C, glTexCoord3fv, "glTexCoord3fv");
pragma Import (C, glTexCoord3iv, "glTexCoord3iv");
pragma Import (C, glTexCoord3sv, "glTexCoord3sv");
pragma Import (C, glTexCoord4dv, "glTexCoord4dv");
pragma Import (C, glTexCoord4fv, "glTexCoord4fv");
pragma Import (C, glTexCoord4iv, "glTexCoord4iv");
pragma Import (C, glTexCoord4sv, "glTexCoord4sv");
pragma Import (C, glRasterPos2d, "glRasterPos2d");
pragma Import (C, glRasterPos2f, "glRasterPos2f");
pragma Import (C, glRasterPos2i, "glRasterPos2i");
pragma Import (C, glRasterPos2s, "glRasterPos2s");
pragma Import (C, glRasterPos3d, "glRasterPos3d");
pragma Import (C, glRasterPos3f, "glRasterPos3f");
pragma Import (C, glRasterPos3i, "glRasterPos3i");
pragma Import (C, glRasterPos3s, "glRasterPos3s");
pragma Import (C, glRasterPos4d, "glRasterPos4d");
pragma Import (C, glRasterPos4f, "glRasterPos4f");
pragma Import (C, glRasterPos4i, "glRasterPos4i");
pragma Import (C, glRasterPos4s, "glRasterPos4s");
pragma Import (C, glRasterPos2dv, "glRasterPos2dv");
pragma Import (C, glRasterPos2fv, "glRasterPos2fv");
pragma Import (C, glRasterPos2iv, "glRasterPos2iv");
pragma Import (C, glRasterPos2sv, "glRasterPos2sv");
pragma Import (C, glRasterPos3dv, "glRasterPos3dv");
pragma Import (C, glRasterPos3fv, "glRasterPos3fv");
pragma Import (C, glRasterPos3iv, "glRasterPos3iv");
pragma Import (C, glRasterPos3sv, "glRasterPos3sv");
pragma Import (C, glRasterPos4dv, "glRasterPos4dv");
pragma Import (C, glRasterPos4fv, "glRasterPos4fv");
pragma Import (C, glRasterPos4iv, "glRasterPos4iv");
pragma Import (C, glRasterPos4sv, "glRasterPos4sv");
pragma Import (C, glRectd, "glRectd");
pragma Import (C, glRectf, "glRectf");
pragma Import (C, glRecti, "glRecti");
pragma Import (C, glRects, "glRects");
pragma Import (C, glRectdv, "glRectdv");
pragma Import (C, glRectfv, "glRectfv");
pragma Import (C, glRectiv, "glRectiv");
pragma Import (C, glRectsv, "glRectsv");
pragma Import (C, glVertexPointer, "glVertexPointer");
pragma Import (C, glNormalPointer, "glNormalPointer");
pragma Import (C, glColorPointer, "glColorPointer");
pragma Import (C, glIndexPointer, "glIndexPointer");
pragma Import (C, glTexCoordPointer, "glTexCoordPointer");
pragma Import (C, glEdgeFlagPointer, "glEdgeFlagPointer");
pragma Import (C, glGetPointerv, "glGetPointerv");
pragma Import (C, glArrayElement, "glArrayElement");
pragma Import (C, glDrawArrays, "glDrawArrays");
pragma Import (C, glDrawElements, "glDrawElements");
pragma Import (C, glInterleavedArrays, "glInterleavedArrays");
pragma Import (C, glShadeModel, "glShadeModel");
pragma Import (C, glLightf, "glLightf");
pragma Import (C, glLighti, "glLighti");
pragma Import (C, glLightfv, "glLightfv");
pragma Import (C, glLightiv, "glLightiv");
pragma Import (C, glGetLightfv, "glGetLightfv");
pragma Import (C, glGetLightiv, "glGetLightiv");
pragma Import (C, glLightModelf, "glLightModelf");
pragma Import (C, glLightModeli, "glLightModeli");
pragma Import (C, glLightModelfv, "glLightModelfv");
pragma Import (C, glLightModeliv, "glLightModeliv");
pragma Import (C, glMaterialf, "glMaterialf");
pragma Import (C, glMateriali, "glMateriali");
pragma Import (C, glMaterialfv, "glMaterialfv");
pragma Import (C, glMaterialiv, "glMaterialiv");
pragma Import (C, glGetMaterialfv, "glGetMaterialfv");
pragma Import (C, glGetMaterialiv, "glGetMaterialiv");
pragma Import (C, glColorMaterial, "glColorMaterial");
pragma Import (C, glPixelZoom, "glPixelZoom");
pragma Import (C, glPixelStoref, "glPixelStoref");
pragma Import (C, glPixelStorei, "glPixelStorei");
pragma Import (C, glPixelTransferf, "glPixelTransferf");
pragma Import (C, glPixelTransferi, "glPixelTransferi");
pragma Import (C, glPixelMapfv, "glPixelMapfv");
pragma Import (C, glPixelMapuiv, "glPixelMapuiv");
pragma Import (C, glPixelMapusv, "glPixelMapusv");
pragma Import (C, glGetPixelMapfv, "glGetPixelMapfv");
pragma Import (C, glGetPixelMapuiv, "glGetPixelMapuiv");
pragma Import (C, glGetPixelMapusv, "glGetPixelMapusv");
pragma Import (C, glBitmap, "glBitmap");
pragma Import (C, glReadPixels, "glReadPixels");
pragma Import (C, glDrawPixels, "glDrawPixels");
pragma Import (C, glCopyPixels, "glCopyPixels");
pragma Import (C, glStencilFunc, "glStencilFunc");
pragma Import (C, glStencilMask, "glStencilMask");
pragma Import (C, glStencilOp, "glStencilOp");
pragma Import (C, glClearStencil, "glClearStencil");
pragma Import (C, glTexGend, "glTexGend");
pragma Import (C, glTexGenf, "glTexGenf");
pragma Import (C, glTexGeni, "glTexGeni");
pragma Import (C, glTexGendv, "glTexGendv");
pragma Import (C, glTexGenfv, "glTexGenfv");
pragma Import (C, glTexGeniv, "glTexGeniv");
pragma Import (C, glGetTexGendv, "glGetTexGendv");
pragma Import (C, glGetTexGenfv, "glGetTexGenfv");
pragma Import (C, glGetTexGeniv, "glGetTexGeniv");
pragma Import (C, glTexEnvf, "glTexEnvf");
pragma Import (C, glTexEnvi, "glTexEnvi");
pragma Import (C, glTexEnvfv, "glTexEnvfv");
pragma Import (C, glTexEnviv, "glTexEnviv");
pragma Import (C, glGetTexEnvfv, "glGetTexEnvfv");
pragma Import (C, glGetTexEnviv, "glGetTexEnviv");
pragma Import (C, glTexParameterf, "glTexParameterf");
pragma Import (C, glTexParameteri, "glTexParameteri");
pragma Import (C, glTexParameterfv, "glTexParameterfv");
pragma Import (C, glTexParameteriv, "glTexParameteriv");
pragma Import (C, glGetTexParameterfv, "glGetTexParameterfv");
pragma Import (C, glGetTexParameteriv, "glGetTexParameteriv");
pragma Import (C, glGetTexLevelParameterfv, "glGetTexLevelParameterfv");
pragma Import (C, glGetTexLevelParameteriv, "glGetTexLevelParameteriv");
pragma Import (C, glTexImage1D, "glTexImage1D");
pragma Import (C, glTexImage2D, "glTexImage2D");
pragma Import (C, glGetTexImage, "glGetTexImage");
pragma Import (C, glGenTextures, "glGenTextures");
pragma Import (C, glDeleteTextures, "glDeleteTextures");
pragma Import (C, glBindTexture, "glBindTexture");
pragma Import (C, glPrioritizeTextures, "glPrioritizeTextures");
pragma Import (C, glAreTexturesResident, "glAreTexturesResident");
pragma Import (C, glIsTexture, "glIsTexture");
pragma Import (C, glTexSubImage1D, "glTexSubImage1D");
pragma Import (C, glTexSubImage2D, "glTexSubImage2D");
pragma Import (C, glCopyTexImage1D, "glCopyTexImage1D");
pragma Import (C, glCopyTexImage2D, "glCopyTexImage2D");
pragma Import (C, glCopyTexSubImage1D, "glCopyTexSubImage1D");
pragma Import (C, glCopyTexSubImage2D, "glCopyTexSubImage2D");
pragma Import (C, glMap1d, "glMap1d");
pragma Import (C, glMap1f, "glMap1f");
pragma Import (C, glMap2d, "glMap2d");
pragma Import (C, glMap2f, "glMap2f");
pragma Import (C, glGetMapdv, "glGetMapdv");
pragma Import (C, glGetMapfv, "glGetMapfv");
pragma Import (C, glGetMapiv, "glGetMapiv");
pragma Import (C, glEvalCoord1d, "glEvalCoord1d");
pragma Import (C, glEvalCoord1f, "glEvalCoord1f");
pragma Import (C, glEvalCoord1dv, "glEvalCoord1dv");
pragma Import (C, glEvalCoord1fv, "glEvalCoord1fv");
pragma Import (C, glEvalCoord2d, "glEvalCoord2d");
pragma Import (C, glEvalCoord2f, "glEvalCoord2f");
pragma Import (C, glEvalCoord2dv, "glEvalCoord2dv");
pragma Import (C, glEvalCoord2fv, "glEvalCoord2fv");
pragma Import (C, glMapGrid1d, "glMapGrid1d");
pragma Import (C, glMapGrid1f, "glMapGrid1f");
pragma Import (C, glMapGrid2d, "glMapGrid2d");
pragma Import (C, glMapGrid2f, "glMapGrid2f");
pragma Import (C, glEvalPoint1, "glEvalPoint1");
pragma Import (C, glEvalPoint2, "glEvalPoint2");
pragma Import (C, glEvalMesh1, "glEvalMesh1");
pragma Import (C, glEvalMesh2, "glEvalMesh2");
pragma Import (C, glFogf, "glFogf");
pragma Import (C, glFogi, "glFogi");
pragma Import (C, glFogfv, "glFogfv");
pragma Import (C, glFogiv, "glFogiv");
pragma Import (C, glFeedbackBuffer, "glFeedbackBuffer");
pragma Import (C, glPassThrough, "glPassThrough");
pragma Import (C, glSelectBuffer, "glSelectBuffer");
pragma Import (C, glInitNames, "glInitNames");
pragma Import (C, glLoadName, "glLoadName");
pragma Import (C, glPushName, "glPushName");
pragma Import (C, glPopName, "glPopName");
pragma Import (C, glBlendEquationEXT, "glBlendEquationEXT");
pragma Import (C, glBlendColorEXT, "glBlendColorEXT");
pragma Import (C, glTexImage3DEXT, "glTexImage3DEXT");
pragma Import (C, glTexSubImage3DEXT, "glTexSubImage3DEXT");
pragma Import (C, glCopyTexSubImage3DEXT, "glCopyTexSubImage3DEXT");
pragma Import (C, glColorTableEXT, "glColorTableEXT");
pragma Import (C, glColorSubTableEXT, "glColorSubTableEXT");
pragma Import (C, glGetColorTableEXT, "glGetColorTableEXT");
pragma Import (C, glGetColorTableParameterfvEXT, "glGetColorTableParameterfvEXT");
pragma Import (C, glGetColorTableParameterivEXT, "glGetColorTableParameterivEXT");
pragma Import (C, glPointParameterfEXT, "glPointParameterfEXT");
pragma Import (C, glPointParameterfvEXT, "glPointParameterfvEXT");
pragma Import (C, glWindowPos2iMESA, "glWindowPos2iMESA");
pragma Import (C, glWindowPos2sMESA, "glWindowPos2sMESA");
pragma Import (C, glWindowPos2fMESA, "glWindowPos2fMESA");
pragma Import (C, glWindowPos2dMESA, "glWindowPos2dMESA");
pragma Import (C, glWindowPos2ivMESA, "glWindowPos2ivMESA");
pragma Import (C, glWindowPos2svMESA, "glWindowPos2svMESA");
pragma Import (C, glWindowPos2fvMESA, "glWindowPos2fvMESA");
pragma Import (C, glWindowPos2dvMESA, "glWindowPos2dvMESA");
pragma Import (C, glWindowPos3iMESA, "glWindowPos3iMESA");
pragma Import (C, glWindowPos3sMESA, "glWindowPos3sMESA");
pragma Import (C, glWindowPos3fMESA, "glWindowPos3fMESA");
pragma Import (C, glWindowPos3dMESA, "glWindowPos3dMESA");
pragma Import (C, glWindowPos3ivMESA, "glWindowPos3ivMESA");
pragma Import (C, glWindowPos3svMESA, "glWindowPos3svMESA");
pragma Import (C, glWindowPos3fvMESA, "glWindowPos3fvMESA");
pragma Import (C, glWindowPos3dvMESA, "glWindowPos3dvMESA");
pragma Import (C, glWindowPos4iMESA, "glWindowPos4iMESA");
pragma Import (C, glWindowPos4sMESA, "glWindowPos4sMESA");
pragma Import (C, glWindowPos4fMESA, "glWindowPos4fMESA");
pragma Import (C, glWindowPos4dMESA, "glWindowPos4dMESA");
pragma Import (C, glWindowPos4ivMESA, "glWindowPos4ivMESA");
pragma Import (C, glWindowPos4svMESA, "glWindowPos4svMESA");
pragma Import (C, glWindowPos4fvMESA, "glWindowPos4fvMESA");
pragma Import (C, glWindowPos4dvMESA, "glWindowPos4dvMESA");
pragma Import (C, glResizeBuffersMESA, "glResizeBuffersMESA");

end GL;