Index » Empathy Jukebox : Blob 5628e2 / opengl / OpenGL / gl.pas
unit gl;
{
  $Id: gl.pas,v 1.5 2007/05/20 20:28:31 savage Exp $

  Adaption of the delphi3d.net OpenGL units to FreePascal
  Sebastian Guenther (sg@freepascal.org) in 2002
  These units are free to use
}

(*++ BUILD Version: 0004    // Increment this if a change has global effects

Copyright (c) 1985-96, Microsoft Corporation

Module Name:

    gl.h

Abstract:

    Procedure declarations, constant definitions and macros for the OpenGL
    component.

--*)

(*
** Copyright 1996 Silicon Graphics, Inc.
** All Rights Reserved.
**
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
** the contents of this file may not be disclosed to third parties, copied or
** duplicated in any form, in whole or in part, without the prior written
** permission of Silicon Graphics, Inc.
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
*)

{******************************************************************************}
{                                                                              }
{ Converted to Delphi by Tom Nuydens (tom@delphi3d.net)                        }
{ For the latest updates, visit Delphi3D: http://www.delphi3d.net              }
{                                                                              }
{ Modified for Delphi/Kylix and FreePascal                                     }
{    by Dominique Louis ( Dominique@Savagesoftware.com.au)                     }
{ For the latest updates, visit JEDI-SDL : http://www.sf.net/projects/jedi-sdl }
{                                                                              }
{******************************************************************************}

{
  $Log: gl.pas,v $
  Revision 1.5  2007/05/20 20:28:31  savage
  Initial Changes to Handle 64 Bits

  Revision 1.4  2006/11/20 21:20:59  savage
  Updated to work in MacOS X

  Revision 1.3  2005/05/22 18:52:09  savage
  Changes as suggested by Michalis Kamburelis. Thanks again.

  Revision 1.2  2004/08/14 22:54:30  savage
  Updated so that Library name defines are correctly defined for MacOS X.

  Revision 1.1  2004/03/30 21:53:54  savage
  Moved to it's own folder.

  Revision 1.4  2004/02/20 17:09:55  savage
  Code tidied up in gl, glu and glut, while extensions in glext.pas are now loaded using SDL_GL_GetProcAddress, thus making it more cross-platform compatible, but now more tied to SDL.

  Revision 1.3  2004/02/14 00:23:39  savage
  As UNIX is defined in jedi-sdl.inc this will be used to check linux compatability as well. Units have been changed to reflect this change.

  Revision 1.2  2004/02/14 00:09:18  savage
  Changed uses to now make use of moduleloader.pas rather than dllfuncs.pas

  Revision 1.1  2004/02/05 00:08:19  savage
  Module 1.0 release

  Revision 1.6  2003/06/02 12:32:12  savage
  Modified Sources to avoid warnings with Delphi by moving CVS Logging to the top of the header files. Hopefully CVS Logging still works.

}

interface

{$I jedi-sdl.inc}

uses
{$IFDEF __GPC__}
  system,
  gpc,
{$ENDIF}

{$IFDEF WINDOWS}
  Windows,
{$ENDIF}
  moduleloader;


var
  LibGL: TModuleHandle;

type
  GLenum     = Cardinal;      PGLenum     = ^GLenum;
  GLboolean  = Byte;          PGLboolean  = ^GLboolean;
  GLbitfield = Cardinal;      PGLbitfield = ^GLbitfield;
  GLbyte     = ShortInt;      PGLbyte     = ^GLbyte;
  GLshort    = SmallInt;      PGLshort    = ^GLshort;
  GLint      = Integer;       PGLint      = ^GLint;
  GLsizei    = Integer;       PGLsizei    = ^GLsizei;
  GLubyte    = Byte;          PGLubyte    = ^GLubyte;
  GLushort   = Word;          PGLushort   = ^GLushort;
  GLuint     = Cardinal;      PGLuint     = ^GLuint;
  GLfloat    = Single;        PGLfloat    = ^GLfloat;
  GLclampf   = Single;        PGLclampf   = ^GLclampf;
  GLdouble   = Double;        PGLdouble   = ^GLdouble;
  GLclampd   = Double;        PGLclampd   = ^GLclampd;
{ GLvoid     = void; }        PGLvoid     = Pointer;

{******************************************************************************}

const
{$IFDEF WINDOWS}
  GLLibName = 'OpenGL32.dll';
{$ENDIF}

{$IFDEF UNIX}
{$IFDEF DARWIN}
  GLLibName = '/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib';
{$ELSE}
  GLLibName = 'libGL.so';
{$ENDIF}
{$ENDIF}

  // Version
  GL_VERSION_1_1                    = 1;

  // AccumOp
  GL_ACCUM                          = 00;
  GL_LOAD                           = 01;
  GL_RETURN                         = 02;
  GL_MULT                           = 03;
  GL_ADD                            = 04;

  // AlphaFunction
  GL_NEVER                          = 00;
  GL_LESS                           = 01;
  GL_EQUAL                          = 02;
  GL_LEQUAL                         = 03;
  GL_GREATER                        = 04;
  GL_NOTEQUAL                       = 05;
  GL_GEQUAL                         = 06;
  GL_ALWAYS                         = 07;

  // AttribMask
  GL_CURRENT_BIT                    = {viewgit}{/viewgit}000001;
  GL_POINT_BIT                      = {viewgit}{/viewgit}000002;
  GL_LINE_BIT                       = {viewgit}{/viewgit}000004;
  GL_POLYGON_BIT                    = {viewgit}{/viewgit}000008;
  GL_POLYGON_STIPPLE_BIT            = {viewgit}{/viewgit}000010;
  GL_PIXEL_MODE_BIT                 = {viewgit}{/viewgit}000020;
  GL_LIGHTING_BIT                   = {viewgit}{/viewgit}000040;
  GL_FOG_BIT                        = {viewgit}{/viewgit}000080;
  GL_DEPTH_BUFFER_BIT               = {viewgit}{/viewgit}000100;
  GL_ACCUM_BUFFER_BIT               = {viewgit}{/viewgit}000200;
  GL_STENCIL_BUFFER_BIT             = {viewgit}{/viewgit}000400;
  GL_VIEWPORT_BIT                   = {viewgit}{/viewgit}000800;
  GL_TRANSFORM_BIT                  = {viewgit}{/viewgit}001000;
  GL_ENABLE_BIT                     = {viewgit}{/viewgit}002000;
  GL_COLOR_BUFFER_BIT               = {viewgit}{/viewgit}004000;
  GL_HINT_BIT                       = {viewgit}{/viewgit}008000;
  GL_EVAL_BIT                       = {viewgit}{/viewgit}010000;
  GL_LIST_BIT                       = {viewgit}{/viewgit}020000;
  GL_TEXTURE_BIT                    = {viewgit}{/viewgit}040000;
  GL_SCISSOR_BIT                    = {viewgit}{/viewgit}080000;
  GL_ALL_ATTRIB_BITS                = {viewgit}{/viewgit}0FFFFF;

  // BeginMode
  GL_POINTS                         = {viewgit}{/viewgit}00;
  GL_LINES                          = {viewgit}{/viewgit}01;
  GL_LINE_LOOP                      = {viewgit}{/viewgit}02;
  GL_LINE_STRIP                     = {viewgit}{/viewgit}03;
  GL_TRIANGLES                      = {viewgit}{/viewgit}04;
  GL_TRIANGLE_STRIP                 = {viewgit}{/viewgit}05;
  GL_TRIANGLE_FAN                   = {viewgit}{/viewgit}06;
  GL_QUADS                          = {viewgit}{/viewgit}07;
  GL_QUAD_STRIP                     = {viewgit}{/viewgit}08;
  GL_POLYGON                        = {viewgit}{/viewgit}09;

  // BlendingFactorDest
  GL_ZERO                           = 0;
  GL_ONE                            = 1;
  GL_SRC_COLOR                      = 00;
  GL_ONE_MINUS_SRC_COLOR            = 01;
  GL_SRC_ALPHA                      = 02;
  GL_ONE_MINUS_SRC_ALPHA            = 03;
  GL_DST_ALPHA                      = 04;
  GL_ONE_MINUS_DST_ALPHA            = 05;

  // BlendingFactorSrc
  //      GL_ZERO
  //      GL_ONE
  GL_DST_COLOR                      = 06;
  GL_ONE_MINUS_DST_COLOR            = 07;
  GL_SRC_ALPHA_SATURATE             = 08;
  //      GL_SRC_ALPHA
  //      GL_ONE_MINUS_SRC_ALPHA
  //      GL_DST_ALPHA
  //      GL_ONE_MINUS_DST_ALPHA

  // Boolean
  GL_TRUE                           = 1;
  GL_FALSE                          = 0;

  // ClearBufferMask
  //      GL_COLOR_BUFFER_BIT
  //      GL_ACCUM_BUFFER_BIT
  //      GL_STENCIL_BUFFER_BIT
  //      GL_DEPTH_BUFFER_BIT

  // ClientArrayType
  //      GL_VERTEX_ARRAY
  //      GL_NORMAL_ARRAY
  //      GL_COLOR_ARRAY
  //      GL_INDEX_ARRAY
  //      GL_TEXTURE_COORD_ARRAY
  //      GL_EDGE_FLAG_ARRAY

  // ClipPlaneName
  GL_CLIP_PLANE0                    = 00;
  GL_CLIP_PLANE1                    = 01;
  GL_CLIP_PLANE2                    = 02;
  GL_CLIP_PLANE3                    = 03;
  GL_CLIP_PLANE4                    = 04;
  GL_CLIP_PLANE5                    = 05;

  // ColorMaterialFace
  //      GL_FRONT
  //      GL_BACK
  //      GL_FRONT_AND_BACK

  // ColorMaterialParameter
  //      GL_AMBIENT
  //      GL_DIFFUSE
  //      GL_SPECULAR
  //      GL_EMISSION
  //      GL_AMBIENT_AND_DIFFUSE

  // ColorPointerType
  //      GL_BYTE
  //      GL_UNSIGNED_BYTE
  //      GL_SHORT
  //      GL_UNSIGNED_SHORT
  //      GL_INT
  //      GL_UNSIGNED_INT
  //      GL_FLOAT
  //      GL_DOUBLE

  // CullFaceMode
  //      GL_FRONT
  //      GL_BACK
  //      GL_FRONT_AND_BACK

  // DataType
  GL_BYTE                           = 00;
  GL_UNSIGNED_BYTE                  = 01;
  GL_SHORT                          = 02;
  GL_UNSIGNED_SHORT                 = 03;
  GL_INT                            = 04;
  GL_UNSIGNED_INT                   = 05;
  GL_FLOAT                          = 06;
  GL_2_BYTES                        = 07;
  GL_3_BYTES                        = 08;
  GL_4_BYTES                        = 09;
  GL_DOUBLE                         = 0A;

  // DepthFunction
  //      GL_NEVER
  //      GL_LESS
  //      GL_EQUAL
  //      GL_LEQUAL
  //      GL_GREATER
  //      GL_NOTEQUAL
  //      GL_GEQUAL
  //      GL_ALWAYS

  // DrawBufferMode
  GL_NONE                           = 0;
  GL_FRONT_LEFT                     = 00;
  GL_FRONT_RIGHT                    = 01;
  GL_BACK_LEFT                      = 02;
  GL_BACK_RIGHT                     = 03;
  GL_FRONT                          = 04;
  GL_BACK                           = 05;
  GL_LEFT                           = 06;
  GL_RIGHT                          = 07;
  GL_FRONT_AND_BACK                 = 08;
  GL_AUX0                           = 09;
  GL_AUX1                           = 0A;
  GL_AUX2                           = 0B;
  GL_AUX3                           = 0C;

  // Enable
  //      GL_FOG
  //      GL_LIGHTING
  //      GL_TEXTURE_1D
  //      GL_TEXTURE_2D
  //      GL_LINE_STIPPLE
  //      GL_POLYGON_STIPPLE
  //      GL_CULL_FACE
  //      GL_ALPHA_TEST
  //      GL_BLEND
  //      GL_INDEX_LOGIC_OP
  //      GL_COLOR_LOGIC_OP
  //      GL_DITHER
  //      GL_STENCIL_TEST
  //      GL_DEPTH_TEST
  //      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_TEXTURE_GEN_S
  //      GL_TEXTURE_GEN_T
  //      GL_TEXTURE_GEN_R
  //      GL_TEXTURE_GEN_Q
  //      GL_MAP1_VERTEX_3
  //      GL_MAP1_VERTEX_4
  //      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_MAP2_VERTEX_3
  //      GL_MAP2_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_POINT_SMOOTH
  //      GL_LINE_SMOOTH
  //      GL_POLYGON_SMOOTH
  //      GL_SCISSOR_TEST
  //      GL_COLOR_MATERIAL
  //      GL_NORMALIZE
  //      GL_AUTO_NORMAL
  //      GL_VERTEX_ARRAY
  //      GL_NORMAL_ARRAY
  //      GL_COLOR_ARRAY
  //      GL_INDEX_ARRAY
  //      GL_TEXTURE_COORD_ARRAY
  //      GL_EDGE_FLAG_ARRAY
  //      GL_POLYGON_OFFSET_POINT
  //      GL_POLYGON_OFFSET_LINE
  //      GL_POLYGON_OFFSET_FILL

  // ErrorCode
  GL_NO_ERROR                       = 0;
  GL_INVALID_ENUM                   = 00;
  GL_INVALID_VALUE                  = 01;
  GL_INVALID_OPERATION              = 02;
  GL_STACK_OVERFLOW                 = 03;
  GL_STACK_UNDERFLOW                = 04;
  GL_OUT_OF_MEMORY                  = 05;

  // FeedBackMode
  GL_2D                             = 00;
  GL_3D                             = 01;
  GL_3D_COLOR                       = 02;
  GL_3D_COLOR_TEXTURE               = 03;
  GL_4D_COLOR_TEXTURE               = 04;

  // FeedBackToken
  GL_PASS_THROUGH_TOKEN             = 00;
  GL_POINT_TOKEN                    = 01;
  GL_LINE_TOKEN                     = 02;
  GL_POLYGON_TOKEN                  = 03;
  GL_BITMAP_TOKEN                   = 04;
  GL_DRAW_PIXEL_TOKEN               = 05;
  GL_COPY_PIXEL_TOKEN               = 06;
  GL_LINE_RESET_TOKEN               = 07;

  // FogMode
  //      GL_LINEAR
  GL_EXP                            = 00;
  GL_EXP2                           = 01;

  // FogParameter
  //      GL_FOG_COLOR
  //      GL_FOG_DENSITY
  //      GL_FOG_END
  //      GL_FOG_INDEX
  //      GL_FOG_MODE
  //      GL_FOG_START

  // FrontFaceDirection
  GL_CW                             = 00;
  GL_CCW                            = 01;

  // GetMapTarget
  GL_COEFF                          = {viewgit}{/viewgit}A00;
  GL_ORDER                          = {viewgit}{/viewgit}A01;
  GL_DOMAIN                         = {viewgit}{/viewgit}A02;

  // GetPixelMap
  //      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

  // GetPointerTarget
  //      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

  // GetTarget
  GL_CURRENT_COLOR                  = {viewgit}{/viewgit}B00;
  GL_CURRENT_INDEX                  = {viewgit}{/viewgit}B01;
  GL_CURRENT_NORMAL                 = {viewgit}{/viewgit}B02;
  GL_CURRENT_TEXTURE_COORDS         = {viewgit}{/viewgit}B03;
  GL_CURRENT_RASTER_COLOR           = {viewgit}{/viewgit}B04;
  GL_CURRENT_RASTER_INDEX           = {viewgit}{/viewgit}B05;
  GL_CURRENT_RASTER_TEXTURE_COORDS  = {viewgit}{/viewgit}B06;
  GL_CURRENT_RASTER_POSITION        = {viewgit}{/viewgit}B07;
  GL_CURRENT_RASTER_POSITION_VALID  = {viewgit}{/viewgit}B08;
  GL_CURRENT_RASTER_DISTANCE        = {viewgit}{/viewgit}B09;
  GL_POINT_SMOOTH                   = {viewgit}{/viewgit}B10;
  GL_POINT_SIZE                     = {viewgit}{/viewgit}B11;
  GL_POINT_SIZE_RANGE               = {viewgit}{/viewgit}B12;
  GL_POINT_SIZE_GRANULARITY         = {viewgit}{/viewgit}B13;
  GL_LINE_SMOOTH                    = {viewgit}{/viewgit}B20;
  GL_LINE_WIDTH                     = {viewgit}{/viewgit}B21;
  GL_LINE_WIDTH_RANGE               = {viewgit}{/viewgit}B22;
  GL_LINE_WIDTH_GRANULARITY         = {viewgit}{/viewgit}B23;
  GL_LINE_STIPPLE                   = {viewgit}{/viewgit}B24;
  GL_LINE_STIPPLE_PATTERN           = {viewgit}{/viewgit}B25;
  GL_LINE_STIPPLE_REPEAT            = {viewgit}{/viewgit}B26;
  GL_LIST_MODE                      = {viewgit}{/viewgit}B30;
  GL_MAX_LIST_NESTING               = {viewgit}{/viewgit}B31;
  GL_LIST_BASE                      = {viewgit}{/viewgit}B32;
  GL_LIST_INDEX                     = {viewgit}{/viewgit}B33;
  GL_POLYGON_MODE                   = {viewgit}{/viewgit}B40;
  GL_POLYGON_SMOOTH                 = {viewgit}{/viewgit}B41;
  GL_POLYGON_STIPPLE                = {viewgit}{/viewgit}B42;
  GL_EDGE_FLAG                      = {viewgit}{/viewgit}B43;
  GL_CULL_FACE                      = {viewgit}{/viewgit}B44;
  GL_CULL_FACE_MODE                 = {viewgit}{/viewgit}B45;
  GL_FRONT_FACE                     = {viewgit}{/viewgit}B46;
  GL_LIGHTING                       = {viewgit}{/viewgit}B50;
  GL_LIGHT_MODEL_LOCAL_VIEWER       = {viewgit}{/viewgit}B51;
  GL_LIGHT_MODEL_TWO_SIDE           = {viewgit}{/viewgit}B52;
  GL_LIGHT_MODEL_AMBIENT            = {viewgit}{/viewgit}B53;
  GL_SHADE_MODEL                    = {viewgit}{/viewgit}B54;
  GL_COLOR_MATERIAL_FACE            = {viewgit}{/viewgit}B55;
  GL_COLOR_MATERIAL_PARAMETER       = {viewgit}{/viewgit}B56;
  GL_COLOR_MATERIAL                 = {viewgit}{/viewgit}B57;
  GL_FOG                            = {viewgit}{/viewgit}B60;
  GL_FOG_INDEX                      = {viewgit}{/viewgit}B61;
  GL_FOG_DENSITY                    = {viewgit}{/viewgit}B62;
  GL_FOG_START                      = {viewgit}{/viewgit}B63;
  GL_FOG_END                        = {viewgit}{/viewgit}B64;
  GL_FOG_MODE                       = {viewgit}{/viewgit}B65;
  GL_FOG_COLOR                      = {viewgit}{/viewgit}B66;
  GL_DEPTH_RANGE                    = {viewgit}{/viewgit}B70;
  GL_DEPTH_TEST                     = {viewgit}{/viewgit}B71;
  GL_DEPTH_WRITEMASK                = {viewgit}{/viewgit}B72;
  GL_DEPTH_CLEAR_VALUE              = {viewgit}{/viewgit}B73;
  GL_DEPTH_FUNC                     = {viewgit}{/viewgit}B74;
  GL_ACCUM_CLEAR_VALUE              = {viewgit}{/viewgit}B80;
  GL_STENCIL_TEST                   = {viewgit}{/viewgit}B90;
  GL_STENCIL_CLEAR_VALUE            = {viewgit}{/viewgit}B91;
  GL_STENCIL_FUNC                   = {viewgit}{/viewgit}B92;
  GL_STENCIL_VALUE_MASK             = {viewgit}{/viewgit}B93;
  GL_STENCIL_FAIL                   = {viewgit}{/viewgit}B94;
  GL_STENCIL_PASS_DEPTH_FAIL        = {viewgit}{/viewgit}B95;
  GL_STENCIL_PASS_DEPTH_PASS        = {viewgit}{/viewgit}B96;
  GL_STENCIL_REF                    = {viewgit}{/viewgit}B97;
  GL_STENCIL_WRITEMASK              = {viewgit}{/viewgit}B98;
  GL_MATRIX_MODE                    = {viewgit}{/viewgit}BA0;
  GL_NORMALIZE                      = {viewgit}{/viewgit}BA1;
  GL_VIEWPORT                       = {viewgit}{/viewgit}BA2;
  GL_MODELVIEW_STACK_DEPTH          = {viewgit}{/viewgit}BA3;
  GL_PROJECTION_STACK_DEPTH         = {viewgit}{/viewgit}BA4;
  GL_TEXTURE_STACK_DEPTH            = {viewgit}{/viewgit}BA5;
  GL_MODELVIEW_MATRIX               = {viewgit}{/viewgit}BA6;
  GL_PROJECTION_MATRIX              = {viewgit}{/viewgit}BA7;
  GL_TEXTURE_MATRIX                 = {viewgit}{/viewgit}BA8;
  GL_ATTRIB_STACK_DEPTH             = {viewgit}{/viewgit}BB0;
  GL_CLIENT_ATTRIB_STACK_DEPTH      = {viewgit}{/viewgit}BB1;
  GL_ALPHA_TEST                     = {viewgit}{/viewgit}BC0;
  GL_ALPHA_TEST_FUNC                = {viewgit}{/viewgit}BC1;
  GL_ALPHA_TEST_REF                 = {viewgit}{/viewgit}BC2;
  GL_DITHER                         = {viewgit}{/viewgit}BD0;
  GL_BLEND_DST                      = {viewgit}{/viewgit}BE0;
  GL_BLEND_SRC                      = {viewgit}{/viewgit}BE1;
  GL_BLEND                          = {viewgit}{/viewgit}BE2;
  GL_LOGIC_OP_MODE                  = {viewgit}{/viewgit}BF0;
  GL_INDEX_LOGIC_OP                 = {viewgit}{/viewgit}BF1;
  GL_COLOR_LOGIC_OP                 = {viewgit}{/viewgit}BF2;
  GL_AUX_BUFFERS                    = {viewgit}{/viewgit}C00;
  GL_DRAW_BUFFER                    = {viewgit}{/viewgit}C01;
  GL_READ_BUFFER                    = {viewgit}{/viewgit}C02;
  GL_SCISSOR_BOX                    = {viewgit}{/viewgit}C10;
  GL_SCISSOR_TEST                   = {viewgit}{/viewgit}C11;
  GL_INDEX_CLEAR_VALUE              = {viewgit}{/viewgit}C20;
  GL_INDEX_WRITEMASK                = {viewgit}{/viewgit}C21;
  GL_COLOR_CLEAR_VALUE              = {viewgit}{/viewgit}C22;
  GL_COLOR_WRITEMASK                = {viewgit}{/viewgit}C23;
  GL_INDEX_MODE                     = {viewgit}{/viewgit}C30;
  GL_RGBA_MODE                      = {viewgit}{/viewgit}C31;
  GL_DOUBLEBUFFER                   = {viewgit}{/viewgit}C32;
  GL_STEREO                         = {viewgit}{/viewgit}C33;
  GL_RENDER_MODE                    = {viewgit}{/viewgit}C40;
  GL_PERSPECTIVE_CORRECTION_HINT    = {viewgit}{/viewgit}C50;
  GL_POINT_SMOOTH_HINT              = {viewgit}{/viewgit}C51;
  GL_LINE_SMOOTH_HINT               = {viewgit}{/viewgit}C52;
  GL_POLYGON_SMOOTH_HINT            = {viewgit}{/viewgit}C53;
  GL_FOG_HINT                       = {viewgit}{/viewgit}C54;
  GL_TEXTURE_GEN_S                  = {viewgit}{/viewgit}C60;
  GL_TEXTURE_GEN_T                  = {viewgit}{/viewgit}C61;
  GL_TEXTURE_GEN_R                  = {viewgit}{/viewgit}C62;
  GL_TEXTURE_GEN_Q                  = {viewgit}{/viewgit}C63;
  GL_PIXEL_MAP_I_TO_I               = {viewgit}{/viewgit}C70;
  GL_PIXEL_MAP_S_TO_S               = {viewgit}{/viewgit}C71;
  GL_PIXEL_MAP_I_TO_R               = {viewgit}{/viewgit}C72;
  GL_PIXEL_MAP_I_TO_G               = {viewgit}{/viewgit}C73;
  GL_PIXEL_MAP_I_TO_B               = {viewgit}{/viewgit}C74;
  GL_PIXEL_MAP_I_TO_A               = {viewgit}{/viewgit}C75;
  GL_PIXEL_MAP_R_TO_R               = {viewgit}{/viewgit}C76;
  GL_PIXEL_MAP_G_TO_G               = {viewgit}{/viewgit}C77;
  GL_PIXEL_MAP_B_TO_B               = {viewgit}{/viewgit}C78;
  GL_PIXEL_MAP_A_TO_A               = {viewgit}{/viewgit}C79;
  GL_PIXEL_MAP_I_TO_I_SIZE          = {viewgit}{/viewgit}CB0;
  GL_PIXEL_MAP_S_TO_S_SIZE          = {viewgit}{/viewgit}CB1;
  GL_PIXEL_MAP_I_TO_R_SIZE          = {viewgit}{/viewgit}CB2;
  GL_PIXEL_MAP_I_TO_G_SIZE          = {viewgit}{/viewgit}CB3;
  GL_PIXEL_MAP_I_TO_B_SIZE          = {viewgit}{/viewgit}CB4;
  GL_PIXEL_MAP_I_TO_A_SIZE          = {viewgit}{/viewgit}CB5;
  GL_PIXEL_MAP_R_TO_R_SIZE          = {viewgit}{/viewgit}CB6;
  GL_PIXEL_MAP_G_TO_G_SIZE          = {viewgit}{/viewgit}CB7;
  GL_PIXEL_MAP_B_TO_B_SIZE          = {viewgit}{/viewgit}CB8;
  GL_PIXEL_MAP_A_TO_A_SIZE          = {viewgit}{/viewgit}CB9;
  GL_UNPACK_SWAP_BYTES              = {viewgit}{/viewgit}CF0;
  GL_UNPACK_LSB_FIRST               = {viewgit}{/viewgit}CF1;
  GL_UNPACK_ROW_LENGTH              = {viewgit}{/viewgit}CF2;
  GL_UNPACK_SKIP_ROWS               = {viewgit}{/viewgit}CF3;
  GL_UNPACK_SKIP_PIXELS             = {viewgit}{/viewgit}CF4;
  GL_UNPACK_ALIGNMENT               = {viewgit}{/viewgit}CF5;
  GL_PACK_SWAP_BYTES                = {viewgit}{/viewgit}D00;
  GL_PACK_LSB_FIRST                 = {viewgit}{/viewgit}D01;
  GL_PACK_ROW_LENGTH                = {viewgit}{/viewgit}D02;
  GL_PACK_SKIP_ROWS                 = {viewgit}{/viewgit}D03;
  GL_PACK_SKIP_PIXELS               = {viewgit}{/viewgit}D04;
  GL_PACK_ALIGNMENT                 = {viewgit}{/viewgit}D05;
  GL_MAP_COLOR                      = {viewgit}{/viewgit}D10;
  GL_MAP_STENCIL                    = {viewgit}{/viewgit}D11;
  GL_INDEX_SHIFT                    = {viewgit}{/viewgit}D12;
  GL_INDEX_OFFSET                   = {viewgit}{/viewgit}D13;
  GL_RED_SCALE                      = {viewgit}{/viewgit}D14;
  GL_RED_BIAS                       = {viewgit}{/viewgit}D15;
  GL_ZOOM_X                         = {viewgit}{/viewgit}D16;
  GL_ZOOM_Y                         = {viewgit}{/viewgit}D17;
  GL_GREEN_SCALE                    = {viewgit}{/viewgit}D18;
  GL_GREEN_BIAS                     = {viewgit}{/viewgit}D19;
  GL_BLUE_SCALE                     = {viewgit}{/viewgit}D1A;
  GL_BLUE_BIAS                      = {viewgit}{/viewgit}D1B;
  GL_ALPHA_SCALE                    = {viewgit}{/viewgit}D1C;
  GL_ALPHA_BIAS                     = {viewgit}{/viewgit}D1D;
  GL_DEPTH_SCALE                    = {viewgit}{/viewgit}D1E;
  GL_DEPTH_BIAS                     = {viewgit}{/viewgit}D1F;
  GL_MAX_EVAL_ORDER                 = {viewgit}{/viewgit}D30;
  GL_MAX_LIGHTS                     = {viewgit}{/viewgit}D31;
  GL_MAX_CLIP_PLANES                = {viewgit}{/viewgit}D32;
  GL_MAX_TEXTURE_SIZE               = {viewgit}{/viewgit}D33;
  GL_MAX_PIXEL_MAP_TABLE            = {viewgit}{/viewgit}D34;
  GL_MAX_ATTRIB_STACK_DEPTH         = {viewgit}{/viewgit}D35;
  GL_MAX_MODELVIEW_STACK_DEPTH      = {viewgit}{/viewgit}D36;
  GL_MAX_NAME_STACK_DEPTH           = {viewgit}{/viewgit}D37;
  GL_MAX_PROJECTION_STACK_DEPTH     = {viewgit}{/viewgit}D38;
  GL_MAX_TEXTURE_STACK_DEPTH        = {viewgit}{/viewgit}D39;
  GL_MAX_VIEWPORT_DIMS              = {viewgit}{/viewgit}D3A;
  GL_MAX_CLIENT_ATTRIB_STACK_DEPTH  = {viewgit}{/viewgit}D3B;
  GL_SUBPIXEL_BITS                  = {viewgit}{/viewgit}D50;
  GL_INDEX_BITS                     = {viewgit}{/viewgit}D51;
  GL_RED_BITS                       = {viewgit}{/viewgit}D52;
  GL_GREEN_BITS                     = {viewgit}{/viewgit}D53;
  GL_BLUE_BITS                      = {viewgit}{/viewgit}D54;
  GL_ALPHA_BITS                     = {viewgit}{/viewgit}D55;
  GL_DEPTH_BITS                     = {viewgit}{/viewgit}D56;
  GL_STENCIL_BITS                   = {viewgit}{/viewgit}D57;
  GL_ACCUM_RED_BITS                 = {viewgit}{/viewgit}D58;
  GL_ACCUM_GREEN_BITS               = {viewgit}{/viewgit}D59;
  GL_ACCUM_BLUE_BITS                = {viewgit}{/viewgit}D5A;
  GL_ACCUM_ALPHA_BITS               = {viewgit}{/viewgit}D5B;
  GL_NAME_STACK_DEPTH               = {viewgit}{/viewgit}D70;
  GL_AUTO_NORMAL                    = {viewgit}{/viewgit}D80;
  GL_MAP1_COLOR_4                   = {viewgit}{/viewgit}D90;
  GL_MAP1_INDEX                     = {viewgit}{/viewgit}D91;
  GL_MAP1_NORMAL                    = {viewgit}{/viewgit}D92;
  GL_MAP1_TEXTURE_COORD_1           = {viewgit}{/viewgit}D93;
  GL_MAP1_TEXTURE_COORD_2           = {viewgit}{/viewgit}D94;
  GL_MAP1_TEXTURE_COORD_3           = {viewgit}{/viewgit}D95;
  GL_MAP1_TEXTURE_COORD_4           = {viewgit}{/viewgit}D96;
  GL_MAP1_VERTEX_3                  = {viewgit}{/viewgit}D97;
  GL_MAP1_VERTEX_4                  = {viewgit}{/viewgit}D98;
  GL_MAP2_COLOR_4                   = {viewgit}{/viewgit}DB0;
  GL_MAP2_INDEX                     = {viewgit}{/viewgit}DB1;
  GL_MAP2_NORMAL                    = {viewgit}{/viewgit}DB2;
  GL_MAP2_TEXTURE_COORD_1           = {viewgit}{/viewgit}DB3;
  GL_MAP2_TEXTURE_COORD_2           = {viewgit}{/viewgit}DB4;
  GL_MAP2_TEXTURE_COORD_3           = {viewgit}{/viewgit}DB5;
  GL_MAP2_TEXTURE_COORD_4           = {viewgit}{/viewgit}DB6;
  GL_MAP2_VERTEX_3                  = {viewgit}{/viewgit}DB7;
  GL_MAP2_VERTEX_4                  = {viewgit}{/viewgit}DB8;
  GL_MAP1_GRID_DOMAIN               = {viewgit}{/viewgit}DD0;
  GL_MAP1_GRID_SEGMENTS             = {viewgit}{/viewgit}DD1;
  GL_MAP2_GRID_DOMAIN               = {viewgit}{/viewgit}DD2;
  GL_MAP2_GRID_SEGMENTS             = {viewgit}{/viewgit}DD3;
  GL_TEXTURE_1D                     = {viewgit}{/viewgit}DE0;
  GL_TEXTURE_2D                     = {viewgit}{/viewgit}DE1;
  GL_FEEDBACK_BUFFER_POINTER        = {viewgit}{/viewgit}DF0;
  GL_FEEDBACK_BUFFER_SIZE           = {viewgit}{/viewgit}DF1;
  GL_FEEDBACK_BUFFER_TYPE           = {viewgit}{/viewgit}DF2;
  GL_SELECTION_BUFFER_POINTER       = {viewgit}{/viewgit}DF3;
  GL_SELECTION_BUFFER_SIZE          = {viewgit}{/viewgit}DF4;
  //      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
  //      GL_POLYGON_OFFSET_FACTOR
  //      GL_POLYGON_OFFSET_UNITS

  // GetTextureParameter
  //      GL_TEXTURE_MAG_FILTER
  //      GL_TEXTURE_MIN_FILTER
  //      GL_TEXTURE_WRAP_S
  //      GL_TEXTURE_WRAP_T
  GL_TEXTURE_WIDTH                  = 00;
  GL_TEXTURE_HEIGHT                 = 01;
  GL_TEXTURE_INTERNAL_FORMAT        = 03;
  GL_TEXTURE_BORDER_COLOR           = 04;
  GL_TEXTURE_BORDER                 = 05;
  //      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_PRIORITY
  //      GL_TEXTURE_RESIDENT

  // HintMode
  GL_DONT_CARE                      = 00;
  GL_FASTEST                        = 01;
  GL_NICEST                         = 02;

  // HintTarget
  //      GL_PERSPECTIVE_CORRECTION_HINT
  //      GL_POINT_SMOOTH_HINT
  //      GL_LINE_SMOOTH_HINT
  //      GL_POLYGON_SMOOTH_HINT
  //      GL_FOG_HINT

  // IndexPointerType
  //      GL_SHORT
  //      GL_INT
  //      GL_FLOAT
  //      GL_DOUBLE

  // LightModelParameter
  //      GL_LIGHT_MODEL_AMBIENT
  //      GL_LIGHT_MODEL_LOCAL_VIEWER
  //      GL_LIGHT_MODEL_TWO_SIDE

  // LightName
  GL_LIGHT0                         = 00;
  GL_LIGHT1                         = 01;
  GL_LIGHT2                         = 02;
  GL_LIGHT3                         = 03;
  GL_LIGHT4                         = 04;
  GL_LIGHT5                         = 05;
  GL_LIGHT6                         = 06;
  GL_LIGHT7                         = 07;

  // LightParameter
  GL_AMBIENT                        = 00;
  GL_DIFFUSE                        = 01;
  GL_SPECULAR                       = 02;
  GL_POSITION                       = 03;
  GL_SPOT_DIRECTION                 = 04;
  GL_SPOT_EXPONENT                  = 05;
  GL_SPOT_CUTOFF                    = 06;
  GL_CONSTANT_ATTENUATION           = 07;
  GL_LINEAR_ATTENUATION             = 08;
  GL_QUADRATIC_ATTENUATION          = 09;

  // InterleavedArrays
  //      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

  // ListMode
  GL_COMPILE                        = 00;
  GL_COMPILE_AND_EXECUTE            = 01;

  // ListNameType
  //      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

  // LogicOp
  GL_CLEAR                          = 00;
  GL_AND                            = 01;
  GL_AND_REVERSE                    = 02;
  GL_COPY                           = 03;
  GL_AND_INVERTED                   = 04;
  GL_NOOP                           = 05;
  GL_XOR                            = 06;
  GL_OR                             = 07;
  GL_NOR                            = 08;
  GL_EQUIV                          = 09;
  GL_INVERT                         = 0A;
  GL_OR_REVERSE                     = 0B;
  GL_COPY_INVERTED                  = 0C;
  GL_OR_INVERTED                    = 0D;
  GL_NAND                           = 0E;
  GL_SET                            = 0F;

  // MapTarget
  //      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

  // MaterialFace
  //      GL_FRONT
  //      GL_BACK
  //      GL_FRONT_AND_BACK

  // MaterialParameter
  GL_EMISSION                       = 00;
  GL_SHININESS                      = 01;
  GL_AMBIENT_AND_DIFFUSE            = 02;
  GL_COLOR_INDEXES                  = 03;
  //      GL_AMBIENT
  //      GL_DIFFUSE
  //      GL_SPECULAR

  // MatrixMode
  GL_MODELVIEW                      = 00;
  GL_PROJECTION                     = 01;
  GL_TEXTURE                        = 02;

  // MeshMode1
  //      GL_POINT
  //      GL_LINE

  // MeshMode2
  //      GL_POINT
  //      GL_LINE
  //      GL_FILL

  // NormalPointerType
  //      GL_BYTE
  //      GL_SHORT
  //      GL_INT
  //      GL_FLOAT
  //      GL_DOUBLE

  // PixelCopyType
  GL_COLOR                          = 00;
  GL_DEPTH                          = 01;
  GL_STENCIL                        = 02;

  // PixelFormat
  GL_COLOR_INDEX                    = 00;
  GL_STENCIL_INDEX                  = 01;
  GL_DEPTH_COMPONENT                = 02;
  GL_RED                            = 03;
  GL_GREEN                          = 04;
  GL_BLUE                           = 05;
  GL_ALPHA                          = 06;
  GL_RGB                            = 07;
  GL_RGBA                           = 08;
  GL_LUMINANCE                      = 09;
  GL_LUMINANCE_ALPHA                = 0A;

  // PixelMap
  //      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

  // PixelStore
  //      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

  // PixelTransfer
  //      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

  // PixelType
  GL_BITMAP                         = A00;
  //      GL_BYTE
  //      GL_UNSIGNED_BYTE
  //      GL_SHORT
  //      GL_UNSIGNED_SHORT
  //      GL_INT
  //      GL_UNSIGNED_INT
  //      GL_FLOAT

  // PolygonMode
  GL_POINT                          = B00;
  GL_LINE                           = B01;
  GL_FILL                           = B02;

  // ReadBufferMode
  //      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

  // RenderingMode
  GL_RENDER                         = C00;
  GL_FEEDBACK                       = C01;
  GL_SELECT                         = C02;

  // ShadingModel
  GL_FLAT                           = D00;
  GL_SMOOTH                         = D01;

  // StencilFunction
  //      GL_NEVER
  //      GL_LESS
  //      GL_EQUAL
  //      GL_LEQUAL
  //      GL_GREATER
  //      GL_NOTEQUAL
  //      GL_GEQUAL
  //      GL_ALWAYS

  // StencilOp
  //      GL_ZERO
  GL_KEEP                           = E00;
  GL_REPLACE                        = E01;
  GL_INCR                           = E02;
  GL_DECR                           = E03;
  //      GL_INVERT

  // StringName
  GL_VENDOR                         = F00;
  GL_RENDERER                       = F01;
  GL_VERSION                        = F02;
  GL_EXTENSIONS                     = F03;

  // TextureCoordName
  GL_S                              = 00;
  GL_T                              = 01;
  GL_R                              = 02;
  GL_Q                              = 03;

  // TexCoordPointerType
  //      GL_SHORT
  //      GL_INT
  //      GL_FLOAT
  //      GL_DOUBLE

  // TextureEnvMode
  GL_MODULATE                       = 00;
  GL_DECAL                          = 01;
  //      GL_BLEND
  //      GL_REPLACE

  // TextureEnvParameter
  GL_TEXTURE_ENV_MODE               = 00;
  GL_TEXTURE_ENV_COLOR              = 01;

  // TextureEnvTarget
  GL_TEXTURE_ENV                    = 00;

  // TextureGenMode
  GL_EYE_LINEAR                     = 00;
  GL_OBJECT_LINEAR                  = 01;
  GL_SPHERE_MAP                     = 02;

  // TextureGenParameter
  GL_TEXTURE_GEN_MODE               = 00;
  GL_OBJECT_PLANE                   = 01;
  GL_EYE_PLANE                      = 02;

  // TextureMagFilter
  GL_NEAREST                        = 00;
  GL_LINEAR                         = 01;

  // TextureMinFilter
  //      GL_NEAREST
  //      GL_LINEAR
  GL_NEAREST_MIPMAP_NEAREST         = 00;
  GL_LINEAR_MIPMAP_NEAREST          = 01;
  GL_NEAREST_MIPMAP_LINEAR          = 02;
  GL_LINEAR_MIPMAP_LINEAR           = 03;

  // TextureParameterName
  GL_TEXTURE_MAG_FILTER             = 00;
  GL_TEXTURE_MIN_FILTER             = 01;
  GL_TEXTURE_WRAP_S                 = 02;
  GL_TEXTURE_WRAP_T                 = 03;
  //      GL_TEXTURE_BORDER_COLOR
  //      GL_TEXTURE_PRIORITY

  // TextureTarget
  //      GL_TEXTURE_1D
  //      GL_TEXTURE_2D
  //      GL_PROXY_TEXTURE_1D
  //      GL_PROXY_TEXTURE_2D

  // TextureWrapMode
  GL_CLAMP                          = 00;
  GL_REPEAT                         = 01;

  // VertexPointerType
  //      GL_SHORT
  //      GL_INT
  //      GL_FLOAT
  //      GL_DOUBLE

  // ClientAttribMask
  GL_CLIENT_PIXEL_STORE_BIT         = {viewgit}{/viewgit}000001;
  GL_CLIENT_VERTEX_ARRAY_BIT        = {viewgit}{/viewgit}000002;
  GL_CLIENT_ALL_ATTRIB_BITS         = $FFFFFFFF;

  // polygon_offset
  GL_POLYGON_OFFSET_FACTOR          = 38;
  GL_POLYGON_OFFSET_UNITS           = A00;
  GL_POLYGON_OFFSET_POINT           = A01;
  GL_POLYGON_OFFSET_LINE            = A02;
  GL_POLYGON_OFFSET_FILL            = 37;

  // texture
  GL_ALPHA4                         = 3B;
  GL_ALPHA8                         = 3C;
  GL_ALPHA12                        = 3D;
  GL_ALPHA16                        = 3E;
  GL_LUMINANCE4                     = 3F;
  GL_LUMINANCE8                     = 40;
  GL_LUMINANCE12                    = 41;
  GL_LUMINANCE16                    = 42;
  GL_LUMINANCE4_ALPHA4              = 43;
  GL_LUMINANCE6_ALPHA2              = 44;
  GL_LUMINANCE8_ALPHA8              = 45;
  GL_LUMINANCE12_ALPHA4             = 46;
  GL_LUMINANCE12_ALPHA12            = 47;
  GL_LUMINANCE16_ALPHA16            = 48;
  GL_INTENSITY                      = 49;
  GL_INTENSITY4                     = 4A;
  GL_INTENSITY8                     = 4B;
  GL_INTENSITY12                    = 4C;
  GL_INTENSITY16                    = 4D;
  GL_R3_G3_B2                       = A10;
  GL_RGB4                           = 4F;
  GL_RGB5                           = 50;
  GL_RGB8                           = 51;
  GL_RGB10                          = 52;
  GL_RGB12                          = 53;
  GL_RGB16                          = 54;
  GL_RGBA2                          = 55;
  GL_RGBA4                          = 56;
  GL_RGB5_A1                        = 57;
  GL_RGBA8                          = 58;
  GL_RGB10_A2                       = 59;
  GL_RGBA12                         = 5A;
  GL_RGBA16                         = 5B;
  GL_TEXTURE_RED_SIZE               = 5C;
  GL_TEXTURE_GREEN_SIZE             = 5D;
  GL_TEXTURE_BLUE_SIZE              = 5E;
  GL_TEXTURE_ALPHA_SIZE             = 5F;
  GL_TEXTURE_LUMINANCE_SIZE         = 60;
  GL_TEXTURE_INTENSITY_SIZE         = 61;
  GL_PROXY_TEXTURE_1D               = 63;
  GL_PROXY_TEXTURE_2D               = 64;

  // texture_object
  GL_TEXTURE_PRIORITY               = 66;
  GL_TEXTURE_RESIDENT               = 67;
  GL_TEXTURE_BINDING_1D             = 68;
  GL_TEXTURE_BINDING_2D             = 69;

  // vertex_array
  GL_VERTEX_ARRAY                   = 74;
  GL_NORMAL_ARRAY                   = 75;
  GL_COLOR_ARRAY                    = 76;
  GL_INDEX_ARRAY                    = 77;
  GL_TEXTURE_COORD_ARRAY            = 78;
  GL_EDGE_FLAG_ARRAY                = 79;
  GL_VERTEX_ARRAY_SIZE              = 7A;
  GL_VERTEX_ARRAY_TYPE              = 7B;
  GL_VERTEX_ARRAY_STRIDE            = 7C;
  GL_NORMAL_ARRAY_TYPE              = 7E;
  GL_NORMAL_ARRAY_STRIDE            = 7F;
  GL_COLOR_ARRAY_SIZE               = 81;
  GL_COLOR_ARRAY_TYPE               = 82;
  GL_COLOR_ARRAY_STRIDE             = 83;
  GL_INDEX_ARRAY_TYPE               = 85;
  GL_INDEX_ARRAY_STRIDE             = 86;
  GL_TEXTURE_COORD_ARRAY_SIZE       = 88;
  GL_TEXTURE_COORD_ARRAY_TYPE       = 89;
  GL_TEXTURE_COORD_ARRAY_STRIDE     = 8A;
  GL_EDGE_FLAG_ARRAY_STRIDE         = 8C;
  GL_VERTEX_ARRAY_POINTER           = 8E;
  GL_NORMAL_ARRAY_POINTER           = 8F;
  GL_COLOR_ARRAY_POINTER            = 90;
  GL_INDEX_ARRAY_POINTER            = 91;
  GL_TEXTURE_COORD_ARRAY_POINTER    = 92;
  GL_EDGE_FLAG_ARRAY_POINTER        = 93;
  GL_V2F                            = A20;
  GL_V3F                            = A21;
  GL_C4UB_V2F                       = A22;
  GL_C4UB_V3F                       = A23;
  GL_C3F_V3F                        = A24;
  GL_N3F_V3F                        = A25;
  GL_C4F_N3F_V3F                    = A26;
  GL_T2F_V3F                        = A27;
  GL_T4F_V4F                        = A28;
  GL_T2F_C4UB_V3F                   = A29;
  GL_T2F_C3F_V3F                    = A2A;
  GL_T2F_N3F_V3F                    = A2B;
  GL_T2F_C4F_N3F_V3F                = A2C;
  GL_T4F_C4F_N3F_V4F                = A2D;

  // Extensions
  GL_EXT_vertex_array               = 1;
  GL_WIN_swap_hint                  = 1;
  GL_EXT_bgra                       = 1;
  GL_EXT_paletted_texture           = 1;

  // EXT_vertex_array
  GL_VERTEX_ARRAY_EXT               = 74;
  GL_NORMAL_ARRAY_EXT               = 75;
  GL_COLOR_ARRAY_EXT                = 76;
  GL_INDEX_ARRAY_EXT                = 77;
  GL_TEXTURE_COORD_ARRAY_EXT        = 78;
  GL_EDGE_FLAG_ARRAY_EXT            = 79;
  GL_VERTEX_ARRAY_SIZE_EXT          = 7A;
  GL_VERTEX_ARRAY_TYPE_EXT          = 7B;
  GL_VERTEX_ARRAY_STRIDE_EXT        = 7C;
  GL_VERTEX_ARRAY_COUNT_EXT         = 7D;
  GL_NORMAL_ARRAY_TYPE_EXT          = 7E;
  GL_NORMAL_ARRAY_STRIDE_EXT        = 7F;
  GL_NORMAL_ARRAY_COUNT_EXT         = 80;
  GL_COLOR_ARRAY_SIZE_EXT           = 81;
  GL_COLOR_ARRAY_TYPE_EXT           = 82;
  GL_COLOR_ARRAY_STRIDE_EXT         = 83;
  GL_COLOR_ARRAY_COUNT_EXT          = 84;
  GL_INDEX_ARRAY_TYPE_EXT           = 85;
  GL_INDEX_ARRAY_STRIDE_EXT         = 86;
  GL_INDEX_ARRAY_COUNT_EXT          = 87;
  GL_TEXTURE_COORD_ARRAY_SIZE_EXT   = 88;
  GL_TEXTURE_COORD_ARRAY_TYPE_EXT   = 89;
  GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = 8A;
  GL_TEXTURE_COORD_ARRAY_COUNT_EXT  = 8B;
  GL_EDGE_FLAG_ARRAY_STRIDE_EXT     = 8C;
  GL_EDGE_FLAG_ARRAY_COUNT_EXT      = 8D;
  GL_VERTEX_ARRAY_POINTER_EXT       = 8E;
  GL_NORMAL_ARRAY_POINTER_EXT       = 8F;
  GL_COLOR_ARRAY_POINTER_EXT        = 90;
  GL_INDEX_ARRAY_POINTER_EXT        = 91;
  GL_TEXTURE_COORD_ARRAY_POINTER_EXT = 92;
  GL_EDGE_FLAG_ARRAY_POINTER_EXT    = 93;
  GL_DOUBLE_EXT                     = GL_DOUBLE;

  // EXT_bgra
  GL_BGR_EXT                        = E0;
  GL_BGRA_EXT                       = E1;

  // EXT_paletted_texture

  // These must match the GL_COLOR_TABLE_*_SGI enumerants
  GL_COLOR_TABLE_FORMAT_EXT         = D8;
  GL_COLOR_TABLE_WIDTH_EXT          = D9;
  GL_COLOR_TABLE_RED_SIZE_EXT       = DA;
  GL_COLOR_TABLE_GREEN_SIZE_EXT     = DB;
  GL_COLOR_TABLE_BLUE_SIZE_EXT      = DC;
  GL_COLOR_TABLE_ALPHA_SIZE_EXT     = DD;
  GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = DE;
  GL_COLOR_TABLE_INTENSITY_SIZE_EXT = DF;

  GL_COLOR_INDEX1_EXT               = E2;
  GL_COLOR_INDEX2_EXT               = E3;
  GL_COLOR_INDEX4_EXT               = E4;
  GL_COLOR_INDEX8_EXT               = E5;
  GL_COLOR_INDEX12_EXT              = E6;
  GL_COLOR_INDEX16_EXT              = E7;

  // For compatibility with OpenGL v1.0
  GL_LOGIC_OP                       = GL_INDEX_LOGIC_OP;
  GL_TEXTURE_COMPONENTS             = GL_TEXTURE_INTERNAL_FORMAT;

{******************************************************************************}

var
  glAccum: procedure(op: GLenum; value: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glAlphaFunc: procedure(func: GLenum; ref: GLclampf); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glAreTexturesResident: function (n: GLsizei; const textures: PGLuint; residences: PGLboolean): GLboolean; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glArrayElement: procedure(i: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glBegin: procedure(mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindTexture: procedure(target: GLenum; texture: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glBitmap: procedure (width, height: GLsizei; xorig, yorig: GLfloat; xmove, ymove: GLfloat; const bitmap: PGLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glBlendFunc: procedure(sfactor, dfactor: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCallList: procedure(list: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCallLists: procedure(n: GLsizei; atype: GLenum; const lists: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glClear: procedure(mask: GLbitfield); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearAccum: procedure(red, green, blue, alpha: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearColor: procedure(red, green, blue, alpha: GLclampf); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearDepth: procedure(depth: GLclampd); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearIndex: procedure(c: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearStencil: procedure(s: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glClipPlane: procedure(plane: GLenum; const equation: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3b: procedure(red, green, blue: GLbyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3bv: procedure(const v: PGLbyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3d: procedure(red, green, blue: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3f: procedure(red, green, blue: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3i: procedure(red, green, blue: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3s: procedure(red, green, blue: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3ub: procedure(red, green, blue: GLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3ubv: procedure(const v: PGLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3ui: procedure(red, green, blue: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3uiv: procedure(const v: PGLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3us: procedure(red, green, blue: GLushort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3usv: procedure(const v: PGLushort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4b: procedure(red, green, blue, alpha: GLbyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4bv: procedure(const v: PGLbyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4d: procedure(red, green, blue, alpha: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4f: procedure(red, green, blue, alpha: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4i: procedure(red, green, blue, alpha: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4s: procedure(red, green, blue, alpha: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4ub: procedure(red, green, blue, alpha: GLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4ubv: procedure(const v: PGLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4ui: procedure(red, green, blue, alpha: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4uiv: procedure(const v: PGLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4us: procedure(red, green, blue, alpha: GLushort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4usv: procedure(const v: PGLushort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColorMask: procedure(red, green, blue, alpha: GLboolean); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColorMaterial: procedure(face, mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glColorPointer: procedure(size: GLint; atype: GLenum; stride: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyPixels: procedure(x, y: GLint; width, height: GLsizei; atype: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexImage1D: procedure (target: GLenum; level: GLint; internalFormat: GLenum; x, y: GLint; width: GLsizei; border: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexImage2D: procedure(target: GLenum; level: GLint; internalFormat: GLenum; x, y: GLint; width, height: GLsizei; border: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexSubImage1D: procedure(target: GLenum; level, xoffset, x, y: GLint; width: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexSubImage2D: procedure(target: GLenum; level, xoffset, yoffset, x, y: GLint; width, height: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glCullFace: procedure(mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteLists: procedure(list: GLuint; range: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteTextures: procedure(n: GLsizei; const textures: PGLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDepthFunc: procedure(func: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDepthMask: procedure(flag: GLboolean); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDepthRange: procedure(zNear, zFar: GLclampd); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDisable: procedure(cap: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDisableClientState: procedure(aarray: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawArrays: procedure(mode: GLenum; first: GLint; count: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawBuffer: procedure(mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawElements: procedure(mode: GLenum; count: GLsizei; atype: GLenum; const indices: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawPixels: procedure(width, height: GLsizei; format, atype: GLenum; const pixels: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEdgeFlag: procedure(flag: GLboolean); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEdgeFlagPointer: procedure(stride: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEdgeFlagv: procedure(const flag: PGLboolean); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnable: procedure(cap: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnableClientState: procedure(aarray: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnd: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEndList: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord1d: procedure(u: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord1dv: procedure(const u: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord1f: procedure(u: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord1fv: procedure(const u: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2d: procedure(u, v: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2dv: procedure(const u: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2f: procedure(u, v: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2fv: procedure(const u: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalMesh1: procedure(mode: GLenum; i1, i2: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalMesh2: procedure(mode: GLenum; i1, i2, j1, j2: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalPoint1: procedure(i: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalPoint2: procedure(i, j: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFeedbackBuffer: procedure(size: GLsizei; atype: GLenum; buffer: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFinish: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFlush: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogf: procedure(pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogfv: procedure(pname: GLenum; const params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogi: procedure(pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogiv: procedure(pname: GLenum; const params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFrontFace: procedure(mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glFrustum: procedure(left, right, bottom, top, zNear, zFar: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenLists: function(range: GLsizei): GLuint; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenTextures: procedure(n: GLsizei; textures: PGLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetBooleanv: procedure(pname: GLenum; params: PGLboolean); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetClipPlane: procedure(plane: GLenum; equation: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetDoublev: procedure(pname: GLenum; params: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetError: function: GLenum; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetFloatv: procedure(pname: GLenum; params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetIntegerv: procedure(pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetLightfv: procedure(light, pname: GLenum; params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetLightiv: procedure(light, pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMapdv: procedure(target, query: GLenum; v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMapfv: procedure(target, query: GLenum; v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMapiv: procedure(target, query: GLenum; v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMaterialfv: procedure(face, pname: GLenum; params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMaterialiv: procedure(face, pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPixelMapfv: procedure(map: GLenum; values: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPixelMapuiv: procedure(map: GLenum; values: PGLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPixelMapusv: procedure(map: GLenum; values: PGLushort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPointerv: procedure(pname: GLenum; params: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPolygonStipple: procedure(mask: PGLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetString: function(name: GLenum): PChar; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexEnvfv: procedure(target, pname: GLenum; params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexEnviv: procedure(target, pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexGendv: procedure(coord, pname: GLenum; params: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexGenfv: procedure(coord, pname: GLenum; params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexGeniv: procedure(coord, pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexImage: procedure(target: GLenum; level: GLint; format: GLenum; atype: GLenum; pixels: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexLevelParameterfv: procedure(target: GLenum; level: GLint; pname: GLenum; params: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexLevelParameteriv: procedure(target: GLenum; level: GLint; pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexParameterfv: procedure(target, pname: GLenum; params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexParameteriv: procedure(target, pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glHint: procedure(target, mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexMask: procedure(mask: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexPointer: procedure(atype: GLenum; stride: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexd: procedure(c: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexdv: procedure(const c: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexf: procedure(c: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexfv: procedure(const c: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexi: procedure(c: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexiv: procedure(const c: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexs: procedure(c: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexsv: procedure(const c: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexub: procedure(c: GLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexubv: procedure(const c: PGLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glInitNames: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glInterleavedArrays: procedure(format: GLenum; stride: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsEnabled: function(cap: GLenum): GLboolean; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsList: function(list: GLuint): GLboolean; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsTexture: function(texture: GLuint): GLboolean; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModelf: procedure(pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModelfv: procedure(pname: GLenum; const params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModeli: procedure(pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModeliv: procedure(pname: GLenum; const params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightf: procedure(light, pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightfv: procedure(light, pname: GLenum; const params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLighti: procedure(light, pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightiv: procedure(light, pname: GLenum; const params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLineStipple: procedure(factor: GLint; pattern: GLushort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLineWidth: procedure(width: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glListBase: procedure(base: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadIdentity: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadMatrixd: procedure(const m: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadMatrixf: procedure(const m: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadName: procedure(name: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glLogicOp: procedure(opcode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap1d: procedure(target: GLenum; u1, u2: GLdouble; stride, order: GLint; const points: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap1f: procedure(target: GLenum; u1, u2: GLfloat; stride, order: GLint; const points: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap2d: procedure(target: GLenum; u1, u2: GLdouble; ustride, uorder: GLint; v1, v2: GLdouble; vstride, vorder: GLint; const points: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap2f: procedure(target: GLenum; u1, u2: GLfloat; ustride, uorder: GLint; v1, v2: GLfloat; vstride, vorder: GLint; const points: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid1d: procedure(un: GLint; u1, u2: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid1f: procedure(un: GLint; u1, u2: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid2d: procedure(un: GLint; u1, u2: GLdouble; vn: GLint; v1, v2: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid2f: procedure(un: GLint; u1, u2: GLfloat; vn: GLint; v1, v2: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMaterialf: procedure(face, pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMaterialfv: procedure(face, pname: GLenum; const params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMateriali: procedure(face, pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMaterialiv: procedure(face, pname: GLenum; const params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMatrixMode: procedure(mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultMatrixd: procedure(const m: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultMatrixf: procedure(const m: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNewList: procedure(list: GLuint; mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3b: procedure(nx, ny, nz: GLbyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3bv: procedure(const v: PGLbyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3d: procedure(nx, ny, nz: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3f: procedure(nx, ny, nz: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3i: procedure(nx, ny, nz: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3s: procedure(nx, ny, nz: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormalPointer: procedure(atype: GLenum; stride: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glOrtho: procedure(left, right, bottom, top, zNear, zFar: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPassThrough: procedure(token: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelMapfv: procedure(map: GLenum; mapsize: GLsizei; const values: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelMapuiv: procedure(map: GLenum; mapsize: GLsizei; const values: PGLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelMapusv: procedure(map: GLenum; mapsize: GLsizei; const values: PGLushort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelStoref: procedure(pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelStorei: procedure(pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelTransferf: procedure(pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelTransferi: procedure(pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelZoom: procedure(xfactor, yfactor: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPointSize: procedure(size: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPolygonMode: procedure(face, mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPolygonOffset: procedure(factor, units: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPolygonStipple: procedure(const mask: PGLubyte); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopAttrib: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopClientAttrib: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopMatrix: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopName: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPrioritizeTextures: procedure(n: GLsizei; const textures: PGLuint; const priorities: PGLclampf); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPushAttrib: procedure(mask: GLbitfield); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPushClientAttrib: procedure(mask: GLbitfield); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPushMatrix: procedure; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glPushName: procedure(name: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2d: procedure(x, y: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2f: procedure(x, y: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2i: procedure(x, y: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2s: procedure(x, y: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3d: procedure(x, y, z: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3f: procedure(x, y, z: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3i: procedure(x, y, z: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3s: procedure(x, y, z: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4d: procedure(x, y, z, w: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4f: procedure(x, y, z, w: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4i: procedure(x, y, z, w: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4s: procedure(x, y, z, w: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glReadBuffer: procedure(mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glReadPixels: procedure(x, y: GLint; width, height: GLsizei; format, atype: GLenum; pixels: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectd: procedure(x1, y1, x2, y2: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectdv: procedure(const v1: PGLdouble; const v2: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectf: procedure(x1, y1, x2, y2: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectfv: procedure(const v1: PGLfloat; const v2: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRecti: procedure(x1, y1, x2, y2: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectiv: procedure(const v1: PGLint; const v2: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRects: procedure(x1, y1, x2, y2: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectsv: procedure(const v1: PGLshort; const v2: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRenderMode: function(mode: GLint): GLint; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRotated: procedure(angle, x, y, z: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glRotatef: procedure(angle, x, y, z: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glScaled: procedure(x, y, z: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glScalef: procedure(x, y, z: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glScissor: procedure(x, y: GLint; width, height: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glSelectBuffer: procedure(size: GLsizei; buffer: PGLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glShadeModel: procedure(mode: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilFunc: procedure(func: GLenum; ref: GLint; mask: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilMask: procedure(mask: GLuint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilOp: procedure(fail, zfail, zpass: GLenum); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1d: procedure(s: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1f: procedure(s: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1i: procedure(s: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1s: procedure(s: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2d: procedure(s, t: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2f: procedure(s, t: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2i: procedure(s, t: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2s: procedure(s, t: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3d: procedure(s, t, r: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3f: procedure(s, t, r: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3i: procedure(s, t, r: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3s: procedure(s, t, r: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4d: procedure(s, t, r, q: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4f: procedure(s, t, r, q: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4i: procedure(s, t, r, q: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4s: procedure(s, t, r, q: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoordPointer: procedure(size: GLint; atype: GLenum; stride: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnvf: procedure(target: GLenum; pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnvfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnvi: procedure(target: GLenum; pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnviv: procedure(target: GLenum; pname: GLenum; const params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGend: procedure(coord: GLenum; pname: GLenum; param: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGendv: procedure(coord: GLenum; pname: GLenum; const params: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGenf: procedure(coord: GLenum; pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGenfv: procedure(coord: GLenum; pname: GLenum; const params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGeni: procedure(coord: GLenum; pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGeniv: procedure(coord: GLenum; pname: GLenum; const params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexImage1D: procedure(target: GLenum; level, internalformat: GLint; width: GLsizei; border: GLint; format, atype: GLenum; const pixels: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexImage2D: procedure(target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, atype: GLenum; const pixels: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameterf: procedure(target: GLenum; pname: GLenum; param: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameterfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameteri: procedure(target: GLenum; pname: GLenum; param: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameteriv: procedure(target: GLenum; pname: GLenum; const params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexSubImage1D: procedure(target: GLenum; level, xoffset: GLint; width: GLsizei; format, atype: GLenum; const pixels: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexSubImage2D: procedure(target: GLenum; level, xoffset, yoffset: GLint; width, height: GLsizei; format, atype: GLenum; const pixels: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTranslated: procedure(x, y, z: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glTranslatef: procedure(x, y, z: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2d: procedure(x, y: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2f: procedure(x, y: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2i: procedure(x, y: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2s: procedure(x, y: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3d: procedure(x, y, z: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3f: procedure(x, y, z: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3i: procedure(x, y, z: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3s: procedure(x, y, z: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4d: procedure(x, y, z, w: GLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4dv: procedure(const v: PGLdouble); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4f: procedure(x, y, z, w: GLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4fv: procedure(const v: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4i: procedure(x, y, z, w: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4iv: procedure(const v: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4s: procedure(x, y, z, w: GLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4sv: procedure(const v: PGLshort); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexPointer: procedure(size: GLint; atype: GLenum; stride: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  glViewport: procedure(x, y: GLint; width, height: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  {$IFDEF WINDOWS}
  ChoosePixelFormat: function(DC: HDC; p2: PPixelFormatDescriptor): Integer; {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  {$ENDIF}

type
  // EXT_vertex_array
  PFNGLARRAYELEMENTEXTPROC = procedure(i: GLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLDRAWARRAYSEXTPROC = procedure(mode: GLenum; first: GLint; count: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLVERTEXPOINTEREXTPROC = procedure(size: GLint; atype: GLenum;
                                        stride, count: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLNORMALPOINTEREXTPROC = procedure(atype: GLenum; stride, count: GLsizei;
                                        const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLCOLORPOINTEREXTPROC = procedure(size: GLint; atype: GLenum; stride, count: GLsizei;
                                       const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLINDEXPOINTEREXTPROC = procedure(atype: GLenum; stride, count: GLsizei;
                                       const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLTEXCOORDPOINTEREXTPROC = procedure(size: GLint; atype: GLenum;
                                          stride, count: GLsizei; const pointer: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLEDGEFLAGPOINTEREXTPROC = procedure(stride, count: GLsizei;
                                          const pointer: PGLboolean); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLGETPOINTERVEXTPROC = procedure(pname: GLenum; params: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLARRAYELEMENTARRAYEXTPROC = procedure(mode: GLenum; count: GLsizei;
                                            const pi: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}

  // WIN_swap_hint
  PFNGLADDSWAPHINTRECTWINPROC = procedure(x, y: GLint; width, height: GLsizei); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}

  // EXT_paletted_texture
  PFNGLCOLORTABLEEXTPROC = procedure(target, internalFormat: GLenum; width: GLsizei;
                                     format, atype: GLenum; const data: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLCOLORSUBTABLEEXTPROC = procedure(target: GLenum; start, count: GLsizei;
                                        format, atype: GLenum; const data: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLGETCOLORTABLEEXTPROC = procedure(target, format, atype: GLenum; data: Pointer); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLGETCOLORTABLEPARAMETERIVEXTPROC = procedure(target, pname: GLenum; params: PGLint); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  PFNGLGETCOLORTABLEPARAMETERFVEXTPROC = procedure(target, pname: GLenum; params: PGLfloat); {$IFDEF WINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}

procedure LoadOpenGL( const dll: PChar );
procedure FreeOpenGL;

implementation

procedure FreeOpenGL;
begin

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

  UnLoadModule(LibGL);

end;

procedure LoadOpenGL(const dll: PChar);
begin

  FreeOpenGL;

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

    {$IFDEF WINDOWS}
    @ChoosePixelFormat := GetModuleSymbol(LibGL, 'ChoosePixelFormat');
    if not Assigned(ChoosePixelFormat) then
      {$IFNDEF FPC}@{$ENDIF}ChoosePixelFormat := @Windows.ChoosePixelFormat;
    {$ENDIF}
  end;
end;

initialization
  {$ifdef x86}
  Set8087CW(3F);
  {$endif x86}

  LoadOpenGL( GLLibName );

finalization

  FreeOpenGL;

end.