{

    OpenGL loader generated by glad 0.1.36 on Sat Nov  4 09:00:00 2023.

    Language/Generator: Pascal
    Specification: gl
    APIs: gl=3.0
    Profile: compatibility
    Extensions:
        
    Loader: True
    Local files: False
    Omit khrplatform: False
    Reproducible: False

    Commandline:
        --profile="compatibility" --api="gl=3.0" --generator="pascal" --spec="gl" --extensions=""
    Online:
        https://glad.dav1d.de/#profile=compatibility&language=pascal&specification=gl&loader=on&api=gl%3D3.0
}
Unit glad_gl;

{$IF Defined(FPC)}{$MODE Delphi}{$ENDIF}{$H+}

Interface

Uses
  SysUtils, StrUtils;

Var
  glVersionMajor, glVersionMinor: integer;

  (* Types *)
Type
  GLVULKANPROCNV = pointer;
  GLbitfield = uint32;
  GLboolean = byte;
  GLbyte = int8;
  GLchar = char;
  GLcharARB = byte;
  GLclampd = double;
  GLclampf = single;
  GLclampx = int32;
  GLdouble = double;
  GLeglClientBufferEXT = pointer;
  GLeglImageOES = pointer;
  GLenum = uint32;
  GLfixed = int32;
  GLfloat = single;
  GLhalf = uint16;
  GLhalfARB = uint16;
  GLhalfNV = uint16;
  GLhandleARB = uint32;
  GLint = int32;
  GLint64 = int64;
  GLint64EXT = int64;
  GLintptr = int32;
  GLintptrARB = int32;
  GLshort = int16;
  GLsizei = int32;
  GLsizeiptr = int32;
  GLsizeiptrARB = int32;
  GLsync = pointer;
  GLubyte = uint8;
  GLuint = uint32;
  GLuint64 = uint64;
  GLuint64EXT = uint64;
  GLushort = uint16;
  GLvdpauSurfaceNV = int32;
  GLvoid = pointer;
  _cl_context = pointer;
  _cl_event = pointer;

  PGLVULKANPROCNV = ^pointer;
  PGLbitfield = ^uint32;
  PGLboolean = ^byte;
  PGLbyte = ^int8;
  PGLchar = ^char;
  PGLcharARB = ^byte;
  PGLclampd = ^double;
  PGLclampf = ^single;
  PGLclampx = ^int32;
  PGLdouble = ^double;
  PGLeglClientBufferEXT = ^pointer;
  PGLeglImageOES = ^pointer;
  PGLenum = ^uint32;
  PGLfixed = ^int32;
  PGLfloat = ^single;
  PGLhalf = ^uint16;
  PGLhalfARB = ^uint16;
  PGLhalfNV = ^uint16;
  PGLhandleARB = ^uint32;
  PGLint = ^int32;
  PGLint64 = ^int64;
  PGLint64EXT = ^int64;
  PGLintptr = ^int32;
  PGLintptrARB = ^int32;
  PGLshort = ^int16;
  PGLsizei = ^int32;
  PGLsizeiptr = ^int32;
  PGLsizeiptrARB = ^int32;
  PGLsync = ^pointer;
  PGLubyte = ^uint8;
  PGLuint = ^uint32;
  PGLuint64 = ^uint64;
  PGLuint64EXT = ^uint64;
  PGLushort = ^uint16;
  PGLvdpauSurfaceNV = ^int32;
  PGLvoid = ^pointer;
  P_cl_context = ^pointer;
  P_cl_event = ^pointer;
  PPGLchar = ^PGLchar;
  PPGLcharARB = ^PGLcharARB;
  PPGLboolean = ^PGLboolean;

  GLdebugProc = Procedure(Source: GLenum; typ: GLenum;
    id: GLuint; severity: GLenum; length: GLsizei; message: PGLchar;
    userParam: pointer); Stdcall;
  GLdebugProcArb = GLdebugProc;
  GLdebugProcKhr = GLdebugProc;

  GLdebugProcAmd = Procedure(id: GLuint; category: GLenum;
    severity: GLenum; len: GLsizei; message: PGLchar;
    userParam: pointer); Stdcall;


  (* Enums *)
Const
  GL_FALSE = 0;
  GL_INVALID_INDEX = uint32($FFFFFFFF);
  GL_NONE = 0;
  GL_NONE_OES = 0;
  GL_NO_ERROR = 0;
  GL_ONE = 1;
  GL_TIMEOUT_IGNORED = uint64($FFFFFFFFFFFFFFFF);
  GL_TIMEOUT_IGNORED_APPLE = uint64($FFFFFFFFFFFFFFFF);
  GL_TRUE = 1;
  GL_VERSION_ES_CL_1_0 = 1;
  GL_VERSION_ES_CL_1_1 = 1;
  GL_VERSION_ES_CM_1_1 = 1;
  GL_ZERO = 0;

  GL_DEPTH_BUFFER_BIT = $00000100;
  GL_STENCIL_BUFFER_BIT = $00000400;
  GL_COLOR_BUFFER_BIT = $00004000;
  GL_POINTS = $0000;
  GL_LINES = $0001;
  GL_LINE_LOOP = $0002;
  GL_LINE_STRIP = $0003;
  GL_TRIANGLES = $0004;
  GL_TRIANGLE_STRIP = $0005;
  GL_TRIANGLE_FAN = $0006;
  GL_QUADS = $0007;
  GL_NEVER = $0200;
  GL_LESS = $0201;
  GL_EQUAL = $0202;
  GL_LEQUAL = $0203;
  GL_GREATER = $0204;
  GL_NOTEQUAL = $0205;
  GL_GEQUAL = $0206;
  GL_ALWAYS = $0207;
  GL_SRC_COLOR = $0300;
  GL_ONE_MINUS_SRC_COLOR = $0301;
  GL_SRC_ALPHA = $0302;
  GL_ONE_MINUS_SRC_ALPHA = $0303;
  GL_DST_ALPHA = $0304;
  GL_ONE_MINUS_DST_ALPHA = $0305;
  GL_DST_COLOR = $0306;
  GL_ONE_MINUS_DST_COLOR = $0307;
  GL_SRC_ALPHA_SATURATE = $0308;
  GL_FRONT_LEFT = $0400;
  GL_FRONT_RIGHT = $0401;
  GL_BACK_LEFT = $0402;
  GL_BACK_RIGHT = $0403;
  GL_FRONT = $0404;
  GL_BACK = $0405;
  GL_LEFT = $0406;
  GL_RIGHT = $0407;
  GL_FRONT_AND_BACK = $0408;
  GL_INVALID_ENUM = $0500;
  GL_INVALID_VALUE = $0501;
  GL_INVALID_OPERATION = $0502;
  GL_OUT_OF_MEMORY = $0505;
  GL_CW = $0900;
  GL_CCW = $0901;
  GL_POINT_SIZE = $0B11;
  GL_POINT_SIZE_RANGE = $0B12;
  GL_POINT_SIZE_GRANULARITY = $0B13;
  GL_LINE_SMOOTH = $0B20;
  GL_LINE_WIDTH = $0B21;
  GL_LINE_WIDTH_RANGE = $0B22;
  GL_LINE_WIDTH_GRANULARITY = $0B23;
  GL_POLYGON_MODE = $0B40;
  GL_POLYGON_SMOOTH = $0B41;
  GL_CULL_FACE = $0B44;
  GL_CULL_FACE_MODE = $0B45;
  GL_FRONT_FACE = $0B46;
  GL_DEPTH_RANGE = $0B70;
  GL_DEPTH_TEST = $0B71;
  GL_DEPTH_WRITEMASK = $0B72;
  GL_DEPTH_CLEAR_VALUE = $0B73;
  GL_DEPTH_FUNC = $0B74;
  GL_STENCIL_TEST = $0B90;
  GL_STENCIL_CLEAR_VALUE = $0B91;
  GL_STENCIL_FUNC = $0B92;
  GL_STENCIL_VALUE_MASK = $0B93;
  GL_STENCIL_FAIL = $0B94;
  GL_STENCIL_PASS_DEPTH_FAIL = $0B95;
  GL_STENCIL_PASS_DEPTH_PASS = $0B96;
  GL_STENCIL_REF = $0B97;
  GL_STENCIL_WRITEMASK = $0B98;
  GL_VIEWPORT = $0BA2;
  GL_DITHER = $0BD0;
  GL_BLEND_DST = $0BE0;
  GL_BLEND_SRC = $0BE1;
  GL_BLEND = $0BE2;
  GL_LOGIC_OP_MODE = $0BF0;
  GL_DRAW_BUFFER = $0C01;
  GL_READ_BUFFER = $0C02;
  GL_SCISSOR_BOX = $0C10;
  GL_SCISSOR_TEST = $0C11;
  GL_COLOR_CLEAR_VALUE = $0C22;
  GL_COLOR_WRITEMASK = $0C23;
  GL_DOUBLEBUFFER = $0C32;
  GL_STEREO = $0C33;
  GL_LINE_SMOOTH_HINT = $0C52;
  GL_POLYGON_SMOOTH_HINT = $0C53;
  GL_UNPACK_SWAP_BYTES = $0CF0;
  GL_UNPACK_LSB_FIRST = $0CF1;
  GL_UNPACK_ROW_LENGTH = $0CF2;
  GL_UNPACK_SKIP_ROWS = $0CF3;
  GL_UNPACK_SKIP_PIXELS = $0CF4;
  GL_UNPACK_ALIGNMENT = $0CF5;
  GL_PACK_SWAP_BYTES = $0D00;
  GL_PACK_LSB_FIRST = $0D01;
  GL_PACK_ROW_LENGTH = $0D02;
  GL_PACK_SKIP_ROWS = $0D03;
  GL_PACK_SKIP_PIXELS = $0D04;
  GL_PACK_ALIGNMENT = $0D05;
  GL_MAX_TEXTURE_SIZE = $0D33;
  GL_MAX_VIEWPORT_DIMS = $0D3A;
  GL_SUBPIXEL_BITS = $0D50;
  GL_TEXTURE_1D = $0DE0;
  GL_TEXTURE_2D = $0DE1;
  GL_TEXTURE_WIDTH = $1000;
  GL_TEXTURE_HEIGHT = $1001;
  GL_TEXTURE_BORDER_COLOR = $1004;
  GL_DONT_CARE = $1100;
  GL_FASTEST = $1101;
  GL_NICEST = $1102;
  GL_BYTE = $1400;
  GL_UNSIGNED_BYTE = $1401;
  GL_SHORT = $1402;
  GL_UNSIGNED_SHORT = $1403;
  GL_INT = $1404;
  GL_UNSIGNED_INT = $1405;
  GL_FLOAT = $1406;
  GL_STACK_OVERFLOW = $0503;
  GL_STACK_UNDERFLOW = $0504;
  GL_CLEAR = $1500;
  GL_AND = $1501;
  GL_AND_REVERSE = $1502;
  GL_COPY = $1503;
  GL_AND_INVERTED = $1504;
  GL_NOOP = $1505;
  GL_XOR = $1506;
  GL_OR = $1507;
  GL_NOR = $1508;
  GL_EQUIV = $1509;
  GL_INVERT = $150A;
  GL_OR_REVERSE = $150B;
  GL_COPY_INVERTED = $150C;
  GL_OR_INVERTED = $150D;
  GL_NAND = $150E;
  GL_SET = $150F;
  GL_TEXTURE = $1702;
  GL_COLOR = $1800;
  GL_DEPTH = $1801;
  GL_STENCIL = $1802;
  GL_STENCIL_INDEX = $1901;
  GL_DEPTH_COMPONENT = $1902;
  GL_RED = $1903;
  GL_GREEN = $1904;
  GL_BLUE = $1905;
  GL_ALPHA = $1906;
  GL_RGB = $1907;
  GL_RGBA = $1908;
  GL_POINT = $1B00;
  GL_LINE = $1B01;
  GL_FILL = $1B02;
  GL_KEEP = $1E00;
  GL_REPLACE = $1E01;
  GL_INCR = $1E02;
  GL_DECR = $1E03;
  GL_VENDOR = $1F00;
  GL_RENDERER = $1F01;
  GL_VERSION = $1F02;
  GL_EXTENSIONS = $1F03;
  GL_NEAREST = $2600;
  GL_LINEAR = $2601;
  GL_NEAREST_MIPMAP_NEAREST = $2700;
  GL_LINEAR_MIPMAP_NEAREST = $2701;
  GL_NEAREST_MIPMAP_LINEAR = $2702;
  GL_LINEAR_MIPMAP_LINEAR = $2703;
  GL_TEXTURE_MAG_FILTER = $2800;
  GL_TEXTURE_MIN_FILTER = $2801;
  GL_TEXTURE_WRAP_S = $2802;
  GL_TEXTURE_WRAP_T = $2803;
  GL_REPEAT = $2901;
  GL_CURRENT_BIT = $00000001;
  GL_POINT_BIT = $00000002;
  GL_LINE_BIT = $00000004;
  GL_POLYGON_BIT = $00000008;
  GL_POLYGON_STIPPLE_BIT = $00000010;
  GL_PIXEL_MODE_BIT = $00000020;
  GL_LIGHTING_BIT = $00000040;
  GL_FOG_BIT = $00000080;
  GL_ACCUM_BUFFER_BIT = $00000200;
  GL_VIEWPORT_BIT = $00000800;
  GL_TRANSFORM_BIT = $00001000;
  GL_ENABLE_BIT = $00002000;
  GL_HINT_BIT = $00008000;
  GL_EVAL_BIT = $00010000;
  GL_LIST_BIT = $00020000;
  GL_TEXTURE_BIT = $00040000;
  GL_SCISSOR_BIT = $00080000;
  GL_ALL_ATTRIB_BITS = $FFFFFFFF;
  GL_QUAD_STRIP = $0008;
  GL_POLYGON = $0009;
  GL_ACCUM = $0100;
  GL_LOAD = $0101;
  GL_RETURN = $0102;
  GL_MULT = $0103;
  GL_ADD = $0104;
  GL_AUX0 = $0409;
  GL_AUX1 = $040A;
  GL_AUX2 = $040B;
  GL_AUX3 = $040C;
  GL_2D = $0600;
  GL_3D = $0601;
  GL_3D_COLOR = $0602;
  GL_3D_COLOR_TEXTURE = $0603;
  GL_4D_COLOR_TEXTURE = $0604;
  GL_PASS_THROUGH_TOKEN = $0700;
  GL_POINT_TOKEN = $0701;
  GL_LINE_TOKEN = $0702;
  GL_POLYGON_TOKEN = $0703;
  GL_BITMAP_TOKEN = $0704;
  GL_DRAW_PIXEL_TOKEN = $0705;
  GL_COPY_PIXEL_TOKEN = $0706;
  GL_LINE_RESET_TOKEN = $0707;
  GL_EXP = $0800;
  GL_EXP2 = $0801;
  GL_COEFF = $0A00;
  GL_ORDER = $0A01;
  GL_DOMAIN = $0A02;
  GL_PIXEL_MAP_I_TO_I = $0C70;
  GL_PIXEL_MAP_S_TO_S = $0C71;
  GL_PIXEL_MAP_I_TO_R = $0C72;
  GL_PIXEL_MAP_I_TO_G = $0C73;
  GL_PIXEL_MAP_I_TO_B = $0C74;
  GL_PIXEL_MAP_I_TO_A = $0C75;
  GL_PIXEL_MAP_R_TO_R = $0C76;
  GL_PIXEL_MAP_G_TO_G = $0C77;
  GL_PIXEL_MAP_B_TO_B = $0C78;
  GL_PIXEL_MAP_A_TO_A = $0C79;
  GL_CURRENT_COLOR = $0B00;
  GL_CURRENT_INDEX = $0B01;
  GL_CURRENT_NORMAL = $0B02;
  GL_CURRENT_TEXTURE_COORDS = $0B03;
  GL_CURRENT_RASTER_COLOR = $0B04;
  GL_CURRENT_RASTER_INDEX = $0B05;
  GL_CURRENT_RASTER_TEXTURE_COORDS = $0B06;
  GL_CURRENT_RASTER_POSITION = $0B07;
  GL_CURRENT_RASTER_POSITION_VALID = $0B08;
  GL_CURRENT_RASTER_DISTANCE = $0B09;
  GL_POINT_SMOOTH = $0B10;
  GL_LINE_STIPPLE = $0B24;
  GL_LINE_STIPPLE_PATTERN = $0B25;
  GL_LINE_STIPPLE_REPEAT = $0B26;
  GL_LIST_MODE = $0B30;
  GL_MAX_LIST_NESTING = $0B31;
  GL_LIST_BASE = $0B32;
  GL_LIST_INDEX = $0B33;
  GL_POLYGON_STIPPLE = $0B42;
  GL_EDGE_FLAG = $0B43;
  GL_LIGHTING = $0B50;
  GL_LIGHT_MODEL_LOCAL_VIEWER = $0B51;
  GL_LIGHT_MODEL_TWO_SIDE = $0B52;
  GL_LIGHT_MODEL_AMBIENT = $0B53;
  GL_SHADE_MODEL = $0B54;
  GL_COLOR_MATERIAL_FACE = $0B55;
  GL_COLOR_MATERIAL_PARAMETER = $0B56;
  GL_COLOR_MATERIAL = $0B57;
  GL_FOG = $0B60;
  GL_FOG_INDEX = $0B61;
  GL_FOG_DENSITY = $0B62;
  GL_FOG_START = $0B63;
  GL_FOG_END = $0B64;
  GL_FOG_MODE = $0B65;
  GL_FOG_COLOR = $0B66;
  GL_ACCUM_CLEAR_VALUE = $0B80;
  GL_MATRIX_MODE = $0BA0;
  GL_NORMALIZE = $0BA1;
  GL_MODELVIEW_STACK_DEPTH = $0BA3;
  GL_PROJECTION_STACK_DEPTH = $0BA4;
  GL_TEXTURE_STACK_DEPTH = $0BA5;
  GL_MODELVIEW_MATRIX = $0BA6;
  GL_PROJECTION_MATRIX = $0BA7;
  GL_TEXTURE_MATRIX = $0BA8;
  GL_ATTRIB_STACK_DEPTH = $0BB0;
  GL_ALPHA_TEST = $0BC0;
  GL_ALPHA_TEST_FUNC = $0BC1;
  GL_ALPHA_TEST_REF = $0BC2;
  GL_LOGIC_OP = $0BF1;
  GL_AUX_BUFFERS = $0C00;
  GL_INDEX_CLEAR_VALUE = $0C20;
  GL_INDEX_WRITEMASK = $0C21;
  GL_INDEX_MODE = $0C30;
  GL_RGBA_MODE = $0C31;
  GL_RENDER_MODE = $0C40;
  GL_PERSPECTIVE_CORRECTION_HINT = $0C50;
  GL_POINT_SMOOTH_HINT = $0C51;
  GL_FOG_HINT = $0C54;
  GL_TEXTURE_GEN_S = $0C60;
  GL_TEXTURE_GEN_T = $0C61;
  GL_TEXTURE_GEN_R = $0C62;
  GL_TEXTURE_GEN_Q = $0C63;
  GL_PIXEL_MAP_I_TO_I_SIZE = $0CB0;
  GL_PIXEL_MAP_S_TO_S_SIZE = $0CB1;
  GL_PIXEL_MAP_I_TO_R_SIZE = $0CB2;
  GL_PIXEL_MAP_I_TO_G_SIZE = $0CB3;
  GL_PIXEL_MAP_I_TO_B_SIZE = $0CB4;
  GL_PIXEL_MAP_I_TO_A_SIZE = $0CB5;
  GL_PIXEL_MAP_R_TO_R_SIZE = $0CB6;
  GL_PIXEL_MAP_G_TO_G_SIZE = $0CB7;
  GL_PIXEL_MAP_B_TO_B_SIZE = $0CB8;
  GL_PIXEL_MAP_A_TO_A_SIZE = $0CB9;
  GL_MAP_COLOR = $0D10;
  GL_MAP_STENCIL = $0D11;
  GL_INDEX_SHIFT = $0D12;
  GL_INDEX_OFFSET = $0D13;
  GL_RED_SCALE = $0D14;
  GL_RED_BIAS = $0D15;
  GL_ZOOM_X = $0D16;
  GL_ZOOM_Y = $0D17;
  GL_GREEN_SCALE = $0D18;
  GL_GREEN_BIAS = $0D19;
  GL_BLUE_SCALE = $0D1A;
  GL_BLUE_BIAS = $0D1B;
  GL_ALPHA_SCALE = $0D1C;
  GL_ALPHA_BIAS = $0D1D;
  GL_DEPTH_SCALE = $0D1E;
  GL_DEPTH_BIAS = $0D1F;
  GL_MAX_EVAL_ORDER = $0D30;
  GL_MAX_LIGHTS = $0D31;
  GL_MAX_CLIP_PLANES = $0D32;
  GL_MAX_PIXEL_MAP_TABLE = $0D34;
  GL_MAX_ATTRIB_STACK_DEPTH = $0D35;
  GL_MAX_MODELVIEW_STACK_DEPTH = $0D36;
  GL_MAX_NAME_STACK_DEPTH = $0D37;
  GL_MAX_PROJECTION_STACK_DEPTH = $0D38;
  GL_MAX_TEXTURE_STACK_DEPTH = $0D39;
  GL_INDEX_BITS = $0D51;
  GL_RED_BITS = $0D52;
  GL_GREEN_BITS = $0D53;
  GL_BLUE_BITS = $0D54;
  GL_ALPHA_BITS = $0D55;
  GL_DEPTH_BITS = $0D56;
  GL_STENCIL_BITS = $0D57;
  GL_ACCUM_RED_BITS = $0D58;
  GL_ACCUM_GREEN_BITS = $0D59;
  GL_ACCUM_BLUE_BITS = $0D5A;
  GL_ACCUM_ALPHA_BITS = $0D5B;
  GL_NAME_STACK_DEPTH = $0D70;
  GL_AUTO_NORMAL = $0D80;
  GL_MAP1_COLOR_4 = $0D90;
  GL_MAP1_INDEX = $0D91;
  GL_MAP1_NORMAL = $0D92;
  GL_MAP1_TEXTURE_COORD_1 = $0D93;
  GL_MAP1_TEXTURE_COORD_2 = $0D94;
  GL_MAP1_TEXTURE_COORD_3 = $0D95;
  GL_MAP1_TEXTURE_COORD_4 = $0D96;
  GL_MAP1_VERTEX_3 = $0D97;
  GL_MAP1_VERTEX_4 = $0D98;
  GL_MAP2_COLOR_4 = $0DB0;
  GL_MAP2_INDEX = $0DB1;
  GL_MAP2_NORMAL = $0DB2;
  GL_MAP2_TEXTURE_COORD_1 = $0DB3;
  GL_MAP2_TEXTURE_COORD_2 = $0DB4;
  GL_MAP2_TEXTURE_COORD_3 = $0DB5;
  GL_MAP2_TEXTURE_COORD_4 = $0DB6;
  GL_MAP2_VERTEX_3 = $0DB7;
  GL_MAP2_VERTEX_4 = $0DB8;
  GL_MAP1_GRID_DOMAIN = $0DD0;
  GL_MAP1_GRID_SEGMENTS = $0DD1;
  GL_MAP2_GRID_DOMAIN = $0DD2;
  GL_MAP2_GRID_SEGMENTS = $0DD3;
  GL_TEXTURE_COMPONENTS = $1003;
  GL_TEXTURE_BORDER = $1005;
  GL_AMBIENT = $1200;
  GL_DIFFUSE = $1201;
  GL_SPECULAR = $1202;
  GL_POSITION = $1203;
  GL_SPOT_DIRECTION = $1204;
  GL_SPOT_EXPONENT = $1205;
  GL_SPOT_CUTOFF = $1206;
  GL_CONSTANT_ATTENUATION = $1207;
  GL_LINEAR_ATTENUATION = $1208;
  GL_QUADRATIC_ATTENUATION = $1209;
  GL_COMPILE = $1300;
  GL_COMPILE_AND_EXECUTE = $1301;
  GL_2_BYTES = $1407;
  GL_3_BYTES = $1408;
  GL_4_BYTES = $1409;
  GL_EMISSION = $1600;
  GL_SHININESS = $1601;
  GL_AMBIENT_AND_DIFFUSE = $1602;
  GL_COLOR_INDEXES = $1603;
  GL_MODELVIEW = $1700;
  GL_PROJECTION = $1701;
  GL_COLOR_INDEX = $1900;
  GL_LUMINANCE = $1909;
  GL_LUMINANCE_ALPHA = $190A;
  GL_BITMAP = $1A00;
  GL_RENDER = $1C00;
  GL_FEEDBACK = $1C01;
  GL_SELECT = $1C02;
  GL_FLAT = $1D00;
  GL_SMOOTH = $1D01;
  GL_S = $2000;
  GL_T = $2001;
  GL_R = $2002;
  GL_Q = $2003;
  GL_MODULATE = $2100;
  GL_DECAL = $2101;
  GL_TEXTURE_ENV_MODE = $2200;
  GL_TEXTURE_ENV_COLOR = $2201;
  GL_TEXTURE_ENV = $2300;
  GL_EYE_LINEAR = $2400;
  GL_OBJECT_LINEAR = $2401;
  GL_SPHERE_MAP = $2402;
  GL_TEXTURE_GEN_MODE = $2500;
  GL_OBJECT_PLANE = $2501;
  GL_EYE_PLANE = $2502;
  GL_CLAMP = $2900;
  GL_CLIP_PLANE0 = $3000;
  GL_CLIP_PLANE1 = $3001;
  GL_CLIP_PLANE2 = $3002;
  GL_CLIP_PLANE3 = $3003;
  GL_CLIP_PLANE4 = $3004;
  GL_CLIP_PLANE5 = $3005;
  GL_LIGHT0 = $4000;
  GL_LIGHT1 = $4001;
  GL_LIGHT2 = $4002;
  GL_LIGHT3 = $4003;
  GL_LIGHT4 = $4004;
  GL_LIGHT5 = $4005;
  GL_LIGHT6 = $4006;
  GL_LIGHT7 = $4007;
  GL_COLOR_LOGIC_OP = $0BF2;
  GL_POLYGON_OFFSET_UNITS = $2A00;
  GL_POLYGON_OFFSET_POINT = $2A01;
  GL_POLYGON_OFFSET_LINE = $2A02;
  GL_POLYGON_OFFSET_FILL = $8037;
  GL_POLYGON_OFFSET_FACTOR = $8038;
  GL_TEXTURE_BINDING_1D = $8068;
  GL_TEXTURE_BINDING_2D = $8069;
  GL_TEXTURE_INTERNAL_FORMAT = $1003;
  GL_TEXTURE_RED_SIZE = $805C;
  GL_TEXTURE_GREEN_SIZE = $805D;
  GL_TEXTURE_BLUE_SIZE = $805E;
  GL_TEXTURE_ALPHA_SIZE = $805F;
  GL_DOUBLE = $140A;
  GL_PROXY_TEXTURE_1D = $8063;
  GL_PROXY_TEXTURE_2D = $8064;
  GL_R3_G3_B2 = $2A10;
  GL_RGB4 = $804F;
  GL_RGB5 = $8050;
  GL_RGB8 = $8051;
  GL_RGB10 = $8052;
  GL_RGB12 = $8053;
  GL_RGB16 = $8054;
  GL_RGBA2 = $8055;
  GL_RGBA4 = $8056;
  GL_RGB5_A1 = $8057;
  GL_RGBA8 = $8058;
  GL_RGB10_A2 = $8059;
  GL_RGBA12 = $805A;
  GL_RGBA16 = $805B;
  GL_CLIENT_PIXEL_STORE_BIT = $00000001;
  GL_CLIENT_VERTEX_ARRAY_BIT = $00000002;
  GL_CLIENT_ALL_ATTRIB_BITS = $FFFFFFFF;
  GL_VERTEX_ARRAY_POINTER = $808E;
  GL_NORMAL_ARRAY_POINTER = $808F;
  GL_COLOR_ARRAY_POINTER = $8090;
  GL_INDEX_ARRAY_POINTER = $8091;
  GL_TEXTURE_COORD_ARRAY_POINTER = $8092;
  GL_EDGE_FLAG_ARRAY_POINTER = $8093;
  GL_FEEDBACK_BUFFER_POINTER = $0DF0;
  GL_SELECTION_BUFFER_POINTER = $0DF3;
  GL_CLIENT_ATTRIB_STACK_DEPTH = $0BB1;
  GL_INDEX_LOGIC_OP = $0BF1;
  GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = $0D3B;
  GL_FEEDBACK_BUFFER_SIZE = $0DF1;
  GL_FEEDBACK_BUFFER_TYPE = $0DF2;
  GL_SELECTION_BUFFER_SIZE = $0DF4;
  GL_VERTEX_ARRAY = $8074;
  GL_NORMAL_ARRAY = $8075;
  GL_COLOR_ARRAY = $8076;
  GL_INDEX_ARRAY = $8077;
  GL_TEXTURE_COORD_ARRAY = $8078;
  GL_EDGE_FLAG_ARRAY = $8079;
  GL_VERTEX_ARRAY_SIZE = $807A;
  GL_VERTEX_ARRAY_TYPE = $807B;
  GL_VERTEX_ARRAY_STRIDE = $807C;
  GL_NORMAL_ARRAY_TYPE = $807E;
  GL_NORMAL_ARRAY_STRIDE = $807F;
  GL_COLOR_ARRAY_SIZE = $8081;
  GL_COLOR_ARRAY_TYPE = $8082;
  GL_COLOR_ARRAY_STRIDE = $8083;
  GL_INDEX_ARRAY_TYPE = $8085;
  GL_INDEX_ARRAY_STRIDE = $8086;
  GL_TEXTURE_COORD_ARRAY_SIZE = $8088;
  GL_TEXTURE_COORD_ARRAY_TYPE = $8089;
  GL_TEXTURE_COORD_ARRAY_STRIDE = $808A;
  GL_EDGE_FLAG_ARRAY_STRIDE = $808C;
  GL_TEXTURE_LUMINANCE_SIZE = $8060;
  GL_TEXTURE_INTENSITY_SIZE = $8061;
  GL_TEXTURE_PRIORITY = $8066;
  GL_TEXTURE_RESIDENT = $8067;
  GL_ALPHA4 = $803B;
  GL_ALPHA8 = $803C;
  GL_ALPHA12 = $803D;
  GL_ALPHA16 = $803E;
  GL_LUMINANCE4 = $803F;
  GL_LUMINANCE8 = $8040;
  GL_LUMINANCE12 = $8041;
  GL_LUMINANCE16 = $8042;
  GL_LUMINANCE4_ALPHA4 = $8043;
  GL_LUMINANCE6_ALPHA2 = $8044;
  GL_LUMINANCE8_ALPHA8 = $8045;
  GL_LUMINANCE12_ALPHA4 = $8046;
  GL_LUMINANCE12_ALPHA12 = $8047;
  GL_LUMINANCE16_ALPHA16 = $8048;
  GL_INTENSITY = $8049;
  GL_INTENSITY4 = $804A;
  GL_INTENSITY8 = $804B;
  GL_INTENSITY12 = $804C;
  GL_INTENSITY16 = $804D;
  GL_V2F = $2A20;
  GL_V3F = $2A21;
  GL_C4UB_V2F = $2A22;
  GL_C4UB_V3F = $2A23;
  GL_C3F_V3F = $2A24;
  GL_N3F_V3F = $2A25;
  GL_C4F_N3F_V3F = $2A26;
  GL_T2F_V3F = $2A27;
  GL_T4F_V4F = $2A28;
  GL_T2F_C4UB_V3F = $2A29;
  GL_T2F_C3F_V3F = $2A2A;
  GL_T2F_N3F_V3F = $2A2B;
  GL_T2F_C4F_N3F_V3F = $2A2C;
  GL_T4F_C4F_N3F_V4F = $2A2D;
  GL_UNSIGNED_BYTE_3_3_2 = $8032;
  GL_UNSIGNED_SHORT_4_4_4_4 = $8033;
  GL_UNSIGNED_SHORT_5_5_5_1 = $8034;
  GL_UNSIGNED_INT_8_8_8_8 = $8035;
  GL_UNSIGNED_INT_10_10_10_2 = $8036;
  GL_TEXTURE_BINDING_3D = $806A;
  GL_PACK_SKIP_IMAGES = $806B;
  GL_PACK_IMAGE_HEIGHT = $806C;
  GL_UNPACK_SKIP_IMAGES = $806D;
  GL_UNPACK_IMAGE_HEIGHT = $806E;
  GL_TEXTURE_3D = $806F;
  GL_PROXY_TEXTURE_3D = $8070;
  GL_TEXTURE_DEPTH = $8071;
  GL_TEXTURE_WRAP_R = $8072;
  GL_MAX_3D_TEXTURE_SIZE = $8073;
  GL_UNSIGNED_BYTE_2_3_3_REV = $8362;
  GL_UNSIGNED_SHORT_5_6_5 = $8363;
  GL_UNSIGNED_SHORT_5_6_5_REV = $8364;
  GL_UNSIGNED_SHORT_4_4_4_4_REV = $8365;
  GL_UNSIGNED_SHORT_1_5_5_5_REV = $8366;
  GL_UNSIGNED_INT_8_8_8_8_REV = $8367;
  GL_UNSIGNED_INT_2_10_10_10_REV = $8368;
  GL_BGR = $80E0;
  GL_BGRA = $80E1;
  GL_MAX_ELEMENTS_VERTICES = $80E8;
  GL_MAX_ELEMENTS_INDICES = $80E9;
  GL_CLAMP_TO_EDGE = $812F;
  GL_TEXTURE_MIN_LOD = $813A;
  GL_TEXTURE_MAX_LOD = $813B;
  GL_TEXTURE_BASE_LEVEL = $813C;
  GL_TEXTURE_MAX_LEVEL = $813D;
  GL_SMOOTH_POINT_SIZE_RANGE = $0B12;
  GL_SMOOTH_POINT_SIZE_GRANULARITY = $0B13;
  GL_SMOOTH_LINE_WIDTH_RANGE = $0B22;
  GL_SMOOTH_LINE_WIDTH_GRANULARITY = $0B23;
  GL_ALIASED_LINE_WIDTH_RANGE = $846E;
  GL_RESCALE_NORMAL = $803A;
  GL_LIGHT_MODEL_COLOR_CONTROL = $81F8;
  GL_SINGLE_COLOR = $81F9;
  GL_SEPARATE_SPECULAR_COLOR = $81FA;
  GL_ALIASED_POINT_SIZE_RANGE = $846D;
  GL_TEXTURE0 = $84C0;
  GL_TEXTURE1 = $84C1;
  GL_TEXTURE2 = $84C2;
  GL_TEXTURE3 = $84C3;
  GL_TEXTURE4 = $84C4;
  GL_TEXTURE5 = $84C5;
  GL_TEXTURE6 = $84C6;
  GL_TEXTURE7 = $84C7;
  GL_TEXTURE8 = $84C8;
  GL_TEXTURE9 = $84C9;
  GL_TEXTURE10 = $84CA;
  GL_TEXTURE11 = $84CB;
  GL_TEXTURE12 = $84CC;
  GL_TEXTURE13 = $84CD;
  GL_TEXTURE14 = $84CE;
  GL_TEXTURE15 = $84CF;
  GL_TEXTURE16 = $84D0;
  GL_TEXTURE17 = $84D1;
  GL_TEXTURE18 = $84D2;
  GL_TEXTURE19 = $84D3;
  GL_TEXTURE20 = $84D4;
  GL_TEXTURE21 = $84D5;
  GL_TEXTURE22 = $84D6;
  GL_TEXTURE23 = $84D7;
  GL_TEXTURE24 = $84D8;
  GL_TEXTURE25 = $84D9;
  GL_TEXTURE26 = $84DA;
  GL_TEXTURE27 = $84DB;
  GL_TEXTURE28 = $84DC;
  GL_TEXTURE29 = $84DD;
  GL_TEXTURE30 = $84DE;
  GL_TEXTURE31 = $84DF;
  GL_ACTIVE_TEXTURE = $84E0;
  GL_MULTISAMPLE = $809D;
  GL_SAMPLE_ALPHA_TO_COVERAGE = $809E;
  GL_SAMPLE_ALPHA_TO_ONE = $809F;
  GL_SAMPLE_COVERAGE = $80A0;
  GL_SAMPLE_BUFFERS = $80A8;
  GL_SAMPLES = $80A9;
  GL_SAMPLE_COVERAGE_VALUE = $80AA;
  GL_SAMPLE_COVERAGE_INVERT = $80AB;
  GL_TEXTURE_CUBE_MAP = $8513;
  GL_TEXTURE_BINDING_CUBE_MAP = $8514;
  GL_TEXTURE_CUBE_MAP_POSITIVE_X = $8515;
  GL_TEXTURE_CUBE_MAP_NEGATIVE_X = $8516;
  GL_TEXTURE_CUBE_MAP_POSITIVE_Y = $8517;
  GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = $8518;
  GL_TEXTURE_CUBE_MAP_POSITIVE_Z = $8519;
  GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = $851A;
  GL_PROXY_TEXTURE_CUBE_MAP = $851B;
  GL_MAX_CUBE_MAP_TEXTURE_SIZE = $851C;
  GL_COMPRESSED_RGB = $84ED;
  GL_COMPRESSED_RGBA = $84EE;
  GL_TEXTURE_COMPRESSION_HINT = $84EF;
  GL_TEXTURE_COMPRESSED_IMAGE_SIZE = $86A0;
  GL_TEXTURE_COMPRESSED = $86A1;
  GL_NUM_COMPRESSED_TEXTURE_FORMATS = $86A2;
  GL_COMPRESSED_TEXTURE_FORMATS = $86A3;
  GL_CLAMP_TO_BORDER = $812D;
  GL_CLIENT_ACTIVE_TEXTURE = $84E1;
  GL_MAX_TEXTURE_UNITS = $84E2;
  GL_TRANSPOSE_MODELVIEW_MATRIX = $84E3;
  GL_TRANSPOSE_PROJECTION_MATRIX = $84E4;
  GL_TRANSPOSE_TEXTURE_MATRIX = $84E5;
  GL_TRANSPOSE_COLOR_MATRIX = $84E6;
  GL_MULTISAMPLE_BIT = $20000000;
  GL_NORMAL_MAP = $8511;
  GL_REFLECTION_MAP = $8512;
  GL_COMPRESSED_ALPHA = $84E9;
  GL_COMPRESSED_LUMINANCE = $84EA;
  GL_COMPRESSED_LUMINANCE_ALPHA = $84EB;
  GL_COMPRESSED_INTENSITY = $84EC;
  GL_COMBINE = $8570;
  GL_COMBINE_RGB = $8571;
  GL_COMBINE_ALPHA = $8572;
  GL_SOURCE0_RGB = $8580;
  GL_SOURCE1_RGB = $8581;
  GL_SOURCE2_RGB = $8582;
  GL_SOURCE0_ALPHA = $8588;
  GL_SOURCE1_ALPHA = $8589;
  GL_SOURCE2_ALPHA = $858A;
  GL_OPERAND0_RGB = $8590;
  GL_OPERAND1_RGB = $8591;
  GL_OPERAND2_RGB = $8592;
  GL_OPERAND0_ALPHA = $8598;
  GL_OPERAND1_ALPHA = $8599;
  GL_OPERAND2_ALPHA = $859A;
  GL_RGB_SCALE = $8573;
  GL_ADD_SIGNED = $8574;
  GL_INTERPOLATE = $8575;
  GL_SUBTRACT = $84E7;
  GL_CONSTANT = $8576;
  GL_PRIMARY_COLOR = $8577;
  GL_PREVIOUS = $8578;
  GL_DOT3_RGB = $86AE;
  GL_DOT3_RGBA = $86AF;
  GL_BLEND_DST_RGB = $80C8;
  GL_BLEND_SRC_RGB = $80C9;
  GL_BLEND_DST_ALPHA = $80CA;
  GL_BLEND_SRC_ALPHA = $80CB;
  GL_POINT_FADE_THRESHOLD_SIZE = $8128;
  GL_DEPTH_COMPONENT16 = $81A5;
  GL_DEPTH_COMPONENT24 = $81A6;
  GL_DEPTH_COMPONENT32 = $81A7;
  GL_MIRRORED_REPEAT = $8370;
  GL_MAX_TEXTURE_LOD_BIAS = $84FD;
  GL_TEXTURE_LOD_BIAS = $8501;
  GL_INCR_WRAP = $8507;
  GL_DECR_WRAP = $8508;
  GL_TEXTURE_DEPTH_SIZE = $884A;
  GL_TEXTURE_COMPARE_MODE = $884C;
  GL_TEXTURE_COMPARE_FUNC = $884D;
  GL_POINT_SIZE_MIN = $8126;
  GL_POINT_SIZE_MAX = $8127;
  GL_POINT_DISTANCE_ATTENUATION = $8129;
  GL_GENERATE_MIPMAP = $8191;
  GL_GENERATE_MIPMAP_HINT = $8192;
  GL_FOG_COORDINATE_SOURCE = $8450;
  GL_FOG_COORDINATE = $8451;
  GL_FRAGMENT_DEPTH = $8452;
  GL_CURRENT_FOG_COORDINATE = $8453;
  GL_FOG_COORDINATE_ARRAY_TYPE = $8454;
  GL_FOG_COORDINATE_ARRAY_STRIDE = $8455;
  GL_FOG_COORDINATE_ARRAY_POINTER = $8456;
  GL_FOG_COORDINATE_ARRAY = $8457;
  GL_COLOR_SUM = $8458;
  GL_CURRENT_SECONDARY_COLOR = $8459;
  GL_SECONDARY_COLOR_ARRAY_SIZE = $845A;
  GL_SECONDARY_COLOR_ARRAY_TYPE = $845B;
  GL_SECONDARY_COLOR_ARRAY_STRIDE = $845C;
  GL_SECONDARY_COLOR_ARRAY_POINTER = $845D;
  GL_SECONDARY_COLOR_ARRAY = $845E;
  GL_TEXTURE_FILTER_CONTROL = $8500;
  GL_DEPTH_TEXTURE_MODE = $884B;
  GL_COMPARE_R_TO_TEXTURE = $884E;
  GL_BLEND_COLOR = $8005;
  GL_BLEND_EQUATION = $8009;
  GL_CONSTANT_COLOR = $8001;
  GL_ONE_MINUS_CONSTANT_COLOR = $8002;
  GL_CONSTANT_ALPHA = $8003;
  GL_ONE_MINUS_CONSTANT_ALPHA = $8004;
  GL_FUNC_ADD = $8006;
  GL_FUNC_REVERSE_SUBTRACT = $800B;
  GL_FUNC_SUBTRACT = $800A;
  GL_MIN = $8007;
  GL_MAX = $8008;
  GL_BUFFER_SIZE = $8764;
  GL_BUFFER_USAGE = $8765;
  GL_QUERY_COUNTER_BITS = $8864;
  GL_CURRENT_QUERY = $8865;
  GL_QUERY_RESULT = $8866;
  GL_QUERY_RESULT_AVAILABLE = $8867;
  GL_ARRAY_BUFFER = $8892;
  GL_ELEMENT_ARRAY_BUFFER = $8893;
  GL_ARRAY_BUFFER_BINDING = $8894;
  GL_ELEMENT_ARRAY_BUFFER_BINDING = $8895;
  GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = $889F;
  GL_READ_ONLY = $88B8;
  GL_WRITE_ONLY = $88B9;
  GL_READ_WRITE = $88BA;
  GL_BUFFER_ACCESS = $88BB;
  GL_BUFFER_MAPPED = $88BC;
  GL_BUFFER_MAP_POINTER = $88BD;
  GL_STREAM_DRAW = $88E0;
  GL_STREAM_READ = $88E1;
  GL_STREAM_COPY = $88E2;
  GL_STATIC_DRAW = $88E4;
  GL_STATIC_READ = $88E5;
  GL_STATIC_COPY = $88E6;
  GL_DYNAMIC_DRAW = $88E8;
  GL_DYNAMIC_READ = $88E9;
  GL_DYNAMIC_COPY = $88EA;
  GL_SAMPLES_PASSED = $8914;
  GL_SRC1_ALPHA = $8589;
  GL_VERTEX_ARRAY_BUFFER_BINDING = $8896;
  GL_NORMAL_ARRAY_BUFFER_BINDING = $8897;
  GL_COLOR_ARRAY_BUFFER_BINDING = $8898;
  GL_INDEX_ARRAY_BUFFER_BINDING = $8899;
  GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = $889A;
  GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = $889B;
  GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = $889C;
  GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = $889D;
  GL_WEIGHT_ARRAY_BUFFER_BINDING = $889E;
  GL_FOG_COORD_SRC = $8450;
  GL_FOG_COORD = $8451;
  GL_CURRENT_FOG_COORD = $8453;
  GL_FOG_COORD_ARRAY_TYPE = $8454;
  GL_FOG_COORD_ARRAY_STRIDE = $8455;
  GL_FOG_COORD_ARRAY_POINTER = $8456;
  GL_FOG_COORD_ARRAY = $8457;
  GL_FOG_COORD_ARRAY_BUFFER_BINDING = $889D;
  GL_SRC0_RGB = $8580;
  GL_SRC1_RGB = $8581;
  GL_SRC2_RGB = $8582;
  GL_SRC0_ALPHA = $8588;
  GL_SRC2_ALPHA = $858A;
  GL_BLEND_EQUATION_RGB = $8009;
  GL_VERTEX_ATTRIB_ARRAY_ENABLED = $8622;
  GL_VERTEX_ATTRIB_ARRAY_SIZE = $8623;
  GL_VERTEX_ATTRIB_ARRAY_STRIDE = $8624;
  GL_VERTEX_ATTRIB_ARRAY_TYPE = $8625;
  GL_CURRENT_VERTEX_ATTRIB = $8626;
  GL_VERTEX_PROGRAM_POINT_SIZE = $8642;
  GL_VERTEX_ATTRIB_ARRAY_POINTER = $8645;
  GL_STENCIL_BACK_FUNC = $8800;
  GL_STENCIL_BACK_FAIL = $8801;
  GL_STENCIL_BACK_PASS_DEPTH_FAIL = $8802;
  GL_STENCIL_BACK_PASS_DEPTH_PASS = $8803;
  GL_MAX_DRAW_BUFFERS = $8824;
  GL_DRAW_BUFFER0 = $8825;
  GL_DRAW_BUFFER1 = $8826;
  GL_DRAW_BUFFER2 = $8827;
  GL_DRAW_BUFFER3 = $8828;
  GL_DRAW_BUFFER4 = $8829;
  GL_DRAW_BUFFER5 = $882A;
  GL_DRAW_BUFFER6 = $882B;
  GL_DRAW_BUFFER7 = $882C;
  GL_DRAW_BUFFER8 = $882D;
  GL_DRAW_BUFFER9 = $882E;
  GL_DRAW_BUFFER10 = $882F;
  GL_DRAW_BUFFER11 = $8830;
  GL_DRAW_BUFFER12 = $8831;
  GL_DRAW_BUFFER13 = $8832;
  GL_DRAW_BUFFER14 = $8833;
  GL_DRAW_BUFFER15 = $8834;
  GL_BLEND_EQUATION_ALPHA = $883D;
  GL_MAX_VERTEX_ATTRIBS = $8869;
  GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = $886A;
  GL_MAX_TEXTURE_IMAGE_UNITS = $8872;
  GL_FRAGMENT_SHADER = $8B30;
  GL_VERTEX_SHADER = $8B31;
  GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = $8B49;
  GL_MAX_VERTEX_UNIFORM_COMPONENTS = $8B4A;
  GL_MAX_VARYING_FLOATS = $8B4B;
  GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = $8B4C;
  GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = $8B4D;
  GL_SHADER_TYPE = $8B4F;
  GL_FLOAT_VEC2 = $8B50;
  GL_FLOAT_VEC3 = $8B51;
  GL_FLOAT_VEC4 = $8B52;
  GL_INT_VEC2 = $8B53;
  GL_INT_VEC3 = $8B54;
  GL_INT_VEC4 = $8B55;
  GL_BOOL = $8B56;
  GL_BOOL_VEC2 = $8B57;
  GL_BOOL_VEC3 = $8B58;
  GL_BOOL_VEC4 = $8B59;
  GL_FLOAT_MAT2 = $8B5A;
  GL_FLOAT_MAT3 = $8B5B;
  GL_FLOAT_MAT4 = $8B5C;
  GL_SAMPLER_1D = $8B5D;
  GL_SAMPLER_2D = $8B5E;
  GL_SAMPLER_3D = $8B5F;
  GL_SAMPLER_CUBE = $8B60;
  GL_SAMPLER_1D_SHADOW = $8B61;
  GL_SAMPLER_2D_SHADOW = $8B62;
  GL_DELETE_STATUS = $8B80;
  GL_COMPILE_STATUS = $8B81;
  GL_LINK_STATUS = $8B82;
  GL_VALIDATE_STATUS = $8B83;
  GL_INFO_LOG_LENGTH = $8B84;
  GL_ATTACHED_SHADERS = $8B85;
  GL_ACTIVE_UNIFORMS = $8B86;
  GL_ACTIVE_UNIFORM_MAX_LENGTH = $8B87;
  GL_SHADER_SOURCE_LENGTH = $8B88;
  GL_ACTIVE_ATTRIBUTES = $8B89;
  GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = $8B8A;
  GL_FRAGMENT_SHADER_DERIVATIVE_HINT = $8B8B;
  GL_SHADING_LANGUAGE_VERSION = $8B8C;
  GL_CURRENT_PROGRAM = $8B8D;
  GL_POINT_SPRITE_COORD_ORIGIN = $8CA0;
  GL_LOWER_LEFT = $8CA1;
  GL_UPPER_LEFT = $8CA2;
  GL_STENCIL_BACK_REF = $8CA3;
  GL_STENCIL_BACK_VALUE_MASK = $8CA4;
  GL_STENCIL_BACK_WRITEMASK = $8CA5;
  GL_VERTEX_PROGRAM_TWO_SIDE = $8643;
  GL_POINT_SPRITE = $8861;
  GL_COORD_REPLACE = $8862;
  GL_MAX_TEXTURE_COORDS = $8871;
  GL_PIXEL_PACK_BUFFER = $88EB;
  GL_PIXEL_UNPACK_BUFFER = $88EC;
  GL_PIXEL_PACK_BUFFER_BINDING = $88ED;
  GL_PIXEL_UNPACK_BUFFER_BINDING = $88EF;
  GL_FLOAT_MAT2x3 = $8B65;
  GL_FLOAT_MAT2x4 = $8B66;
  GL_FLOAT_MAT3x2 = $8B67;
  GL_FLOAT_MAT3x4 = $8B68;
  GL_FLOAT_MAT4x2 = $8B69;
  GL_FLOAT_MAT4x3 = $8B6A;
  GL_SRGB = $8C40;
  GL_SRGB8 = $8C41;
  GL_SRGB_ALPHA = $8C42;
  GL_SRGB8_ALPHA8 = $8C43;
  GL_COMPRESSED_SRGB = $8C48;
  GL_COMPRESSED_SRGB_ALPHA = $8C49;
  GL_CURRENT_RASTER_SECONDARY_COLOR = $845F;
  GL_SLUMINANCE_ALPHA = $8C44;
  GL_SLUMINANCE8_ALPHA8 = $8C45;
  GL_SLUMINANCE = $8C46;
  GL_SLUMINANCE8 = $8C47;
  GL_COMPRESSED_SLUMINANCE = $8C4A;
  GL_COMPRESSED_SLUMINANCE_ALPHA = $8C4B;
  GL_COMPARE_REF_TO_TEXTURE = $884E;
  GL_CLIP_DISTANCE0 = $3000;
  GL_CLIP_DISTANCE1 = $3001;
  GL_CLIP_DISTANCE2 = $3002;
  GL_CLIP_DISTANCE3 = $3003;
  GL_CLIP_DISTANCE4 = $3004;
  GL_CLIP_DISTANCE5 = $3005;
  GL_CLIP_DISTANCE6 = $3006;
  GL_CLIP_DISTANCE7 = $3007;
  GL_MAX_CLIP_DISTANCES = $0D32;
  GL_MAJOR_VERSION = $821B;
  GL_MINOR_VERSION = $821C;
  GL_NUM_EXTENSIONS = $821D;
  GL_CONTEXT_FLAGS = $821E;
  GL_COMPRESSED_RED = $8225;
  GL_COMPRESSED_RG = $8226;
  GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = $00000001;
  GL_RGBA32F = $8814;
  GL_RGB32F = $8815;
  GL_RGBA16F = $881A;
  GL_RGB16F = $881B;
  GL_VERTEX_ATTRIB_ARRAY_INTEGER = $88FD;
  GL_MAX_ARRAY_TEXTURE_LAYERS = $88FF;
  GL_MIN_PROGRAM_TEXEL_OFFSET = $8904;
  GL_MAX_PROGRAM_TEXEL_OFFSET = $8905;
  GL_CLAMP_READ_COLOR = $891C;
  GL_FIXED_ONLY = $891D;
  GL_MAX_VARYING_COMPONENTS = $8B4B;
  GL_TEXTURE_1D_ARRAY = $8C18;
  GL_PROXY_TEXTURE_1D_ARRAY = $8C19;
  GL_TEXTURE_2D_ARRAY = $8C1A;
  GL_PROXY_TEXTURE_2D_ARRAY = $8C1B;
  GL_TEXTURE_BINDING_1D_ARRAY = $8C1C;
  GL_TEXTURE_BINDING_2D_ARRAY = $8C1D;
  GL_R11F_G11F_B10F = $8C3A;
  GL_UNSIGNED_INT_10F_11F_11F_REV = $8C3B;
  GL_RGB9_E5 = $8C3D;
  GL_UNSIGNED_INT_5_9_9_9_REV = $8C3E;
  GL_TEXTURE_SHARED_SIZE = $8C3F;
  GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = $8C76;
  GL_TRANSFORM_FEEDBACK_BUFFER_MODE = $8C7F;
  GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = $8C80;
  GL_TRANSFORM_FEEDBACK_VARYINGS = $8C83;
  GL_TRANSFORM_FEEDBACK_BUFFER_START = $8C84;
  GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = $8C85;
  GL_PRIMITIVES_GENERATED = $8C87;
  GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = $8C88;
  GL_RASTERIZER_DISCARD = $8C89;
  GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = $8C8A;
  GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = $8C8B;
  GL_INTERLEAVED_ATTRIBS = $8C8C;
  GL_SEPARATE_ATTRIBS = $8C8D;
  GL_TRANSFORM_FEEDBACK_BUFFER = $8C8E;
  GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = $8C8F;
  GL_RGBA32UI = $8D70;
  GL_RGB32UI = $8D71;
  GL_RGBA16UI = $8D76;
  GL_RGB16UI = $8D77;
  GL_RGBA8UI = $8D7C;
  GL_RGB8UI = $8D7D;
  GL_RGBA32I = $8D82;
  GL_RGB32I = $8D83;
  GL_RGBA16I = $8D88;
  GL_RGB16I = $8D89;
  GL_RGBA8I = $8D8E;
  GL_RGB8I = $8D8F;
  GL_RED_INTEGER = $8D94;
  GL_GREEN_INTEGER = $8D95;
  GL_BLUE_INTEGER = $8D96;
  GL_RGB_INTEGER = $8D98;
  GL_RGBA_INTEGER = $8D99;
  GL_BGR_INTEGER = $8D9A;
  GL_BGRA_INTEGER = $8D9B;
  GL_SAMPLER_1D_ARRAY = $8DC0;
  GL_SAMPLER_2D_ARRAY = $8DC1;
  GL_SAMPLER_1D_ARRAY_SHADOW = $8DC3;
  GL_SAMPLER_2D_ARRAY_SHADOW = $8DC4;
  GL_SAMPLER_CUBE_SHADOW = $8DC5;
  GL_UNSIGNED_INT_VEC2 = $8DC6;
  GL_UNSIGNED_INT_VEC3 = $8DC7;
  GL_UNSIGNED_INT_VEC4 = $8DC8;
  GL_INT_SAMPLER_1D = $8DC9;
  GL_INT_SAMPLER_2D = $8DCA;
  GL_INT_SAMPLER_3D = $8DCB;
  GL_INT_SAMPLER_CUBE = $8DCC;
  GL_INT_SAMPLER_1D_ARRAY = $8DCE;
  GL_INT_SAMPLER_2D_ARRAY = $8DCF;
  GL_UNSIGNED_INT_SAMPLER_1D = $8DD1;
  GL_UNSIGNED_INT_SAMPLER_2D = $8DD2;
  GL_UNSIGNED_INT_SAMPLER_3D = $8DD3;
  GL_UNSIGNED_INT_SAMPLER_CUBE = $8DD4;
  GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = $8DD6;
  GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = $8DD7;
  GL_QUERY_WAIT = $8E13;
  GL_QUERY_NO_WAIT = $8E14;
  GL_QUERY_BY_REGION_WAIT = $8E15;
  GL_QUERY_BY_REGION_NO_WAIT = $8E16;
  GL_BUFFER_ACCESS_FLAGS = $911F;
  GL_BUFFER_MAP_LENGTH = $9120;
  GL_BUFFER_MAP_OFFSET = $9121;
  GL_DEPTH_COMPONENT32F = $8CAC;
  GL_DEPTH32F_STENCIL8 = $8CAD;
  GL_FLOAT_32_UNSIGNED_INT_24_8_REV = $8DAD;
  GL_INVALID_FRAMEBUFFER_OPERATION = $0506;
  GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = $8210;
  GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = $8211;
  GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = $8212;
  GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = $8213;
  GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = $8214;
  GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = $8215;
  GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = $8216;
  GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = $8217;
  GL_FRAMEBUFFER_DEFAULT = $8218;
  GL_FRAMEBUFFER_UNDEFINED = $8219;
  GL_DEPTH_STENCIL_ATTACHMENT = $821A;
  GL_MAX_RENDERBUFFER_SIZE = $84E8;
  GL_DEPTH_STENCIL = $84F9;
  GL_UNSIGNED_INT_24_8 = $84FA;
  GL_DEPTH24_STENCIL8 = $88F0;
  GL_TEXTURE_STENCIL_SIZE = $88F1;
  GL_TEXTURE_RED_TYPE = $8C10;
  GL_TEXTURE_GREEN_TYPE = $8C11;
  GL_TEXTURE_BLUE_TYPE = $8C12;
  GL_TEXTURE_ALPHA_TYPE = $8C13;
  GL_TEXTURE_DEPTH_TYPE = $8C16;
  GL_UNSIGNED_NORMALIZED = $8C17;
  GL_FRAMEBUFFER_BINDING = $8CA6;
  GL_DRAW_FRAMEBUFFER_BINDING = $8CA6;
  GL_RENDERBUFFER_BINDING = $8CA7;
  GL_READ_FRAMEBUFFER = $8CA8;
  GL_DRAW_FRAMEBUFFER = $8CA9;
  GL_READ_FRAMEBUFFER_BINDING = $8CAA;
  GL_RENDERBUFFER_SAMPLES = $8CAB;
  GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = $8CD0;
  GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = $8CD1;
  GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = $8CD2;
  GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = $8CD3;
  GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = $8CD4;
  GL_FRAMEBUFFER_COMPLETE = $8CD5;
  GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = $8CD6;
  GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = $8CD7;
  GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = $8CDB;
  GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = $8CDC;
  GL_FRAMEBUFFER_UNSUPPORTED = $8CDD;
  GL_MAX_COLOR_ATTACHMENTS = $8CDF;
  GL_COLOR_ATTACHMENT0 = $8CE0;
  GL_COLOR_ATTACHMENT1 = $8CE1;
  GL_COLOR_ATTACHMENT2 = $8CE2;
  GL_COLOR_ATTACHMENT3 = $8CE3;
  GL_COLOR_ATTACHMENT4 = $8CE4;
  GL_COLOR_ATTACHMENT5 = $8CE5;
  GL_COLOR_ATTACHMENT6 = $8CE6;
  GL_COLOR_ATTACHMENT7 = $8CE7;
  GL_COLOR_ATTACHMENT8 = $8CE8;
  GL_COLOR_ATTACHMENT9 = $8CE9;
  GL_COLOR_ATTACHMENT10 = $8CEA;
  GL_COLOR_ATTACHMENT11 = $8CEB;
  GL_COLOR_ATTACHMENT12 = $8CEC;
  GL_COLOR_ATTACHMENT13 = $8CED;
  GL_COLOR_ATTACHMENT14 = $8CEE;
  GL_COLOR_ATTACHMENT15 = $8CEF;
  GL_COLOR_ATTACHMENT16 = $8CF0;
  GL_COLOR_ATTACHMENT17 = $8CF1;
  GL_COLOR_ATTACHMENT18 = $8CF2;
  GL_COLOR_ATTACHMENT19 = $8CF3;
  GL_COLOR_ATTACHMENT20 = $8CF4;
  GL_COLOR_ATTACHMENT21 = $8CF5;
  GL_COLOR_ATTACHMENT22 = $8CF6;
  GL_COLOR_ATTACHMENT23 = $8CF7;
  GL_COLOR_ATTACHMENT24 = $8CF8;
  GL_COLOR_ATTACHMENT25 = $8CF9;
  GL_COLOR_ATTACHMENT26 = $8CFA;
  GL_COLOR_ATTACHMENT27 = $8CFB;
  GL_COLOR_ATTACHMENT28 = $8CFC;
  GL_COLOR_ATTACHMENT29 = $8CFD;
  GL_COLOR_ATTACHMENT30 = $8CFE;
  GL_COLOR_ATTACHMENT31 = $8CFF;
  GL_DEPTH_ATTACHMENT = $8D00;
  GL_STENCIL_ATTACHMENT = $8D20;
  GL_FRAMEBUFFER = $8D40;
  GL_RENDERBUFFER = $8D41;
  GL_RENDERBUFFER_WIDTH = $8D42;
  GL_RENDERBUFFER_HEIGHT = $8D43;
  GL_RENDERBUFFER_INTERNAL_FORMAT = $8D44;
  GL_STENCIL_INDEX1 = $8D46;
  GL_STENCIL_INDEX4 = $8D47;
  GL_STENCIL_INDEX8 = $8D48;
  GL_STENCIL_INDEX16 = $8D49;
  GL_RENDERBUFFER_RED_SIZE = $8D50;
  GL_RENDERBUFFER_GREEN_SIZE = $8D51;
  GL_RENDERBUFFER_BLUE_SIZE = $8D52;
  GL_RENDERBUFFER_ALPHA_SIZE = $8D53;
  GL_RENDERBUFFER_DEPTH_SIZE = $8D54;
  GL_RENDERBUFFER_STENCIL_SIZE = $8D55;
  GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = $8D56;
  GL_MAX_SAMPLES = $8D57;
  GL_INDEX = $8222;
  GL_TEXTURE_LUMINANCE_TYPE = $8C14;
  GL_TEXTURE_INTENSITY_TYPE = $8C15;
  GL_FRAMEBUFFER_SRGB = $8DB9;
  GL_HALF_FLOAT = $140B;
  GL_MAP_READ_BIT = $0001;
  GL_MAP_WRITE_BIT = $0002;
  GL_MAP_INVALIDATE_RANGE_BIT = $0004;
  GL_MAP_INVALIDATE_BUFFER_BIT = $0008;
  GL_MAP_FLUSH_EXPLICIT_BIT = $0010;
  GL_MAP_UNSYNCHRONIZED_BIT = $0020;
  GL_COMPRESSED_RED_RGTC1 = $8DBB;
  GL_COMPRESSED_SIGNED_RED_RGTC1 = $8DBC;
  GL_COMPRESSED_RG_RGTC2 = $8DBD;
  GL_COMPRESSED_SIGNED_RG_RGTC2 = $8DBE;
  GL_RG = $8227;
  GL_RG_INTEGER = $8228;
  GL_R8 = $8229;
  GL_R16 = $822A;
  GL_RG8 = $822B;
  GL_RG16 = $822C;
  GL_R16F = $822D;
  GL_R32F = $822E;
  GL_RG16F = $822F;
  GL_RG32F = $8230;
  GL_R8I = $8231;
  GL_R8UI = $8232;
  GL_R16I = $8233;
  GL_R16UI = $8234;
  GL_R32I = $8235;
  GL_R32UI = $8236;
  GL_RG8I = $8237;
  GL_RG8UI = $8238;
  GL_RG16I = $8239;
  GL_RG16UI = $823A;
  GL_RG32I = $823B;
  GL_RG32UI = $823C;
  GL_VERTEX_ARRAY_BINDING = $85B5;
  GL_CLAMP_VERTEX_COLOR = $891A;
  GL_CLAMP_FRAGMENT_COLOR = $891B;
  GL_ALPHA_INTEGER = $8D97;

  (* Functions *)
Var
  GLAD_GL_VERSION_1_0: boolean;
  GLAD_GL_VERSION_1_1: boolean;
  GLAD_GL_VERSION_1_2: boolean;
  GLAD_GL_VERSION_1_3: boolean;
  GLAD_GL_VERSION_1_4: boolean;
  GLAD_GL_VERSION_1_5: boolean;
  GLAD_GL_VERSION_2_0: boolean;
  GLAD_GL_VERSION_2_1: boolean;
  GLAD_GL_VERSION_3_0: boolean;

Var
  glCullFace: Procedure(mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFrontFace: Procedure(mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glHint: Procedure(target: GLenum; mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLineWidth: Procedure(Width: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPointSize: Procedure(size: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPolygonMode: Procedure(face: GLenum; mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glScissor: Procedure(x: GLint; y: GLint; Width: GLsizei; Height: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameterf: Procedure(target: GLenum; pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameterfv: Procedure(target: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameteri: Procedure(target: GLenum; pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameteriv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexImage1D: Procedure(target: GLenum; level: GLint; internalformat: GLint;
  Width: GLsizei; border: GLint; format: GLenum; type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexImage2D: Procedure(target: GLenum; level: GLint; internalformat: GLint;
  Width: GLsizei; Height: GLsizei; border: GLint; format: GLenum;
  type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawBuffer: Procedure(buf: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClear: Procedure(mask: GLbitfield);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearColor: Procedure(red: GLfloat; green: GLfloat; blue: GLfloat; alpha: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearStencil: Procedure(s: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearDepth: Procedure(depth: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilMask: Procedure(mask: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColorMask: Procedure(red: GLboolean; green: GLboolean; blue: GLboolean;
  alpha: GLboolean); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glDepthMask: Procedure(flag: GLboolean);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDisable: Procedure(cap: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnable: Procedure(cap: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFinish: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glFlush: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glBlendFunc: Procedure(sfactor: GLenum; dfactor: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLogicOp: Procedure(opcode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilFunc: Procedure(func: GLenum; ref: GLint; mask: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilOp: Procedure(fail: GLenum; zfail: GLenum; zpass: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDepthFunc: Procedure(func: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelStoref: Procedure(pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelStorei: Procedure(pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glReadBuffer: Procedure(src: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glReadPixels: Procedure(x: GLint; y: GLint; Width: GLsizei;
  Height: GLsizei; format: GLenum; type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetBooleanv: Procedure(pname: GLenum; Data: PGLboolean);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetDoublev: Procedure(pname: GLenum; Data: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetError: Function(): GLenum;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetFloatv: Procedure(pname: GLenum; Data: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetIntegerv: Procedure(pname: GLenum; Data: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetString: Function(Name: GLenum): PGLubyte;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexImage: Procedure(target: GLenum; level: GLint; format: GLenum;
  type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexParameterfv: Procedure(target: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexParameteriv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexLevelParameterfv: Procedure(target: GLenum; level: GLint;
  pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexLevelParameteriv: Procedure(target: GLenum; level: GLint;
  pname: GLenum; params: PGLint); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glIsEnabled: Function(cap: GLenum): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDepthRange: Procedure(n: GLdouble; f: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glViewport: Procedure(x: GLint; y: GLint; Width: GLsizei; Height: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNewList: Procedure(list: GLuint; mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEndList: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glCallList: Procedure(list: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCallLists: Procedure(n: GLsizei; type_: GLenum; lists: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteLists: Procedure(list: GLuint; range: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenLists: Function(range: GLsizei): GLuint;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glListBase: Procedure(base: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBegin: Procedure(mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBitmap: Procedure(Width: GLsizei; Height: GLsizei; xorig: GLfloat;
  yorig: GLfloat; xmove: GLfloat; ymove: GLfloat; bitmap: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3b: Procedure(red: GLbyte; green: GLbyte; blue: GLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3bv: Procedure(v: PGLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3d: Procedure(red: GLdouble; green: GLdouble; blue: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3f: Procedure(red: GLfloat; green: GLfloat; blue: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3i: Procedure(red: GLint; green: GLint; blue: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3s: Procedure(red: GLshort; green: GLshort; blue: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3ub: Procedure(red: GLubyte; green: GLubyte; blue: GLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3ubv: Procedure(v: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3ui: Procedure(red: GLuint; green: GLuint; blue: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3uiv: Procedure(v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3us: Procedure(red: GLushort; green: GLushort; blue: GLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor3usv: Procedure(v: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4b: Procedure(red: GLbyte; green: GLbyte; blue: GLbyte; alpha: GLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4bv: Procedure(v: PGLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4d: Procedure(red: GLdouble; green: GLdouble; blue: GLdouble; alpha: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4f: Procedure(red: GLfloat; green: GLfloat; blue: GLfloat; alpha: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4i: Procedure(red: GLint; green: GLint; blue: GLint; alpha: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4s: Procedure(red: GLshort; green: GLshort; blue: GLshort; alpha: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4ub: Procedure(red: GLubyte; green: GLubyte; blue: GLubyte; alpha: GLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4ubv: Procedure(v: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4ui: Procedure(red: GLuint; green: GLuint; blue: GLuint; alpha: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4uiv: Procedure(v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColor4us: Procedure(red: GLushort; green: GLushort; blue: GLushort;
  alpha: GLushort); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glColor4usv: Procedure(v: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEdgeFlag: Procedure(flag: GLboolean);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEdgeFlagv: Procedure(flag: PGLboolean);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnd: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glIndexd: Procedure(c: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexdv: Procedure(c: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexf: Procedure(c: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexfv: Procedure(c: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexi: Procedure(c: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexiv: Procedure(c: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexs: Procedure(c: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexsv: Procedure(c: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3b: Procedure(nx: GLbyte; ny: GLbyte; nz: GLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3bv: Procedure(v: PGLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3d: Procedure(nx: GLdouble; ny: GLdouble; nz: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3f: Procedure(nx: GLfloat; ny: GLfloat; nz: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3i: Procedure(nx: GLint; ny: GLint; nz: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3s: Procedure(nx: GLshort; ny: GLshort; nz: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormal3sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2d: Procedure(x: GLdouble; y: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2f: Procedure(x: GLfloat; y: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2i: Procedure(x: GLint; y: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2s: Procedure(x: GLshort; y: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos2sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3d: Procedure(x: GLdouble; y: GLdouble; z: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3f: Procedure(x: GLfloat; y: GLfloat; z: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3i: Procedure(x: GLint; y: GLint; z: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3s: Procedure(x: GLshort; y: GLshort; z: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos3sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4d: Procedure(x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4f: Procedure(x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4i: Procedure(x: GLint; y: GLint; z: GLint; w: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4s: Procedure(x: GLshort; y: GLshort; z: GLshort; w: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRasterPos4sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectd: Procedure(x1: GLdouble; y1: GLdouble; x2: GLdouble; y2: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectdv: Procedure(v1: PGLdouble; v2: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectf: Procedure(x1: GLfloat; y1: GLfloat; x2: GLfloat; y2: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectfv: Procedure(v1: PGLfloat; v2: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRecti: Procedure(x1: GLint; y1: GLint; x2: GLint; y2: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectiv: Procedure(v1: PGLint; v2: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRects: Procedure(x1: GLshort; y1: GLshort; x2: GLshort; y2: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRectsv: Procedure(v1: PGLshort; v2: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1d: Procedure(s: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1f: Procedure(s: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1i: Procedure(s: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1s: Procedure(s: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord1sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2d: Procedure(s: GLdouble; t: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2f: Procedure(s: GLfloat; t: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2i: Procedure(s: GLint; t: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2s: Procedure(s: GLshort; t: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord2sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3d: Procedure(s: GLdouble; t: GLdouble; r: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3f: Procedure(s: GLfloat; t: GLfloat; r: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3i: Procedure(s: GLint; t: GLint; r: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3s: Procedure(s: GLshort; t: GLshort; r: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord3sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4d: Procedure(s: GLdouble; t: GLdouble; r: GLdouble; q: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4f: Procedure(s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4i: Procedure(s: GLint; t: GLint; r: GLint; q: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4s: Procedure(s: GLshort; t: GLshort; r: GLshort; q: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoord4sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2d: Procedure(x: GLdouble; y: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2f: Procedure(x: GLfloat; y: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2i: Procedure(x: GLint; y: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2s: Procedure(x: GLshort; y: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex2sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3d: Procedure(x: GLdouble; y: GLdouble; z: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3f: Procedure(x: GLfloat; y: GLfloat; z: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3i: Procedure(x: GLint; y: GLint; z: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3s: Procedure(x: GLshort; y: GLshort; z: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex3sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4d: Procedure(x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4f: Procedure(x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4i: Procedure(x: GLint; y: GLint; z: GLint; w: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4s: Procedure(x: GLshort; y: GLshort; z: GLshort; w: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertex4sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClipPlane: Procedure(plane: GLenum; equation: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColorMaterial: Procedure(face: GLenum; mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogf: Procedure(pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogfv: Procedure(pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogi: Procedure(pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogiv: Procedure(pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightf: Procedure(light: GLenum; pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightfv: Procedure(light: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLighti: Procedure(light: GLenum; pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightiv: Procedure(light: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModelf: Procedure(pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModelfv: Procedure(pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModeli: Procedure(pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLightModeliv: Procedure(pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLineStipple: Procedure(factor: GLint; pattern: GLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMaterialf: Procedure(face: GLenum; pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMaterialfv: Procedure(face: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMateriali: Procedure(face: GLenum; pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMaterialiv: Procedure(face: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPolygonStipple: Procedure(mask: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glShadeModel: Procedure(mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnvf: Procedure(target: GLenum; pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnvfv: Procedure(target: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnvi: Procedure(target: GLenum; pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexEnviv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGend: Procedure(coord: GLenum; pname: GLenum; param: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGendv: Procedure(coord: GLenum; pname: GLenum; params: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGenf: Procedure(coord: GLenum; pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGenfv: Procedure(coord: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGeni: Procedure(coord: GLenum; pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexGeniv: Procedure(coord: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFeedbackBuffer: Procedure(size: GLsizei; type_: GLenum; buffer: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSelectBuffer: Procedure(size: GLsizei; buffer: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRenderMode: Function(mode: GLenum): GLint;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glInitNames: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glLoadName: Procedure(Name: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPassThrough: Procedure(token: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopName: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glPushName: Procedure(Name: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearAccum: Procedure(red: GLfloat; green: GLfloat; blue: GLfloat; alpha: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearIndex: Procedure(c: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexMask: Procedure(mask: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glAccum: Procedure(op: GLenum; Value: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopAttrib: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glPushAttrib: Procedure(mask: GLbitfield);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap1d: Procedure(target: GLenum; u1: GLdouble; u2: GLdouble;
  stride: GLint; order: GLint; points: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap1f: Procedure(target: GLenum; u1: GLfloat; u2: GLfloat;
  stride: GLint; order: GLint; points: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap2d: Procedure(target: GLenum; u1: GLdouble; u2: GLdouble;
  ustride: GLint; uorder: GLint; v1: GLdouble; v2: GLdouble; vstride: GLint;
  vorder: GLint; points: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMap2f: Procedure(target: GLenum; u1: GLfloat; u2: GLfloat;
  ustride: GLint; uorder: GLint; v1: GLfloat; v2: GLfloat; vstride: GLint;
  vorder: GLint; points: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid1d: Procedure(un: GLint; u1: GLdouble; u2: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid1f: Procedure(un: GLint; u1: GLfloat; u2: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid2d: Procedure(un: GLint; u1: GLdouble; u2: GLdouble;
  vn: GLint; v1: GLdouble; v2: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapGrid2f: Procedure(un: GLint; u1: GLfloat; u2: GLfloat; vn: GLint;
  v1: GLfloat; v2: GLfloat); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glEvalCoord1d: Procedure(u: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord1dv: Procedure(u: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord1f: Procedure(u: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord1fv: Procedure(u: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2d: Procedure(u: GLdouble; v: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2dv: Procedure(u: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2f: Procedure(u: GLfloat; v: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalCoord2fv: Procedure(u: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalMesh1: Procedure(mode: GLenum; i1: GLint; i2: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalPoint1: Procedure(i: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalMesh2: Procedure(mode: GLenum; i1: GLint; i2: GLint; j1: GLint; j2: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEvalPoint2: Procedure(i: GLint; j: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glAlphaFunc: Procedure(func: GLenum; ref: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelZoom: Procedure(xfactor: GLfloat; yfactor: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelTransferf: Procedure(pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelTransferi: Procedure(pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelMapfv: Procedure(map: GLenum; mapsize: GLsizei; values: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelMapuiv: Procedure(map: GLenum; mapsize: GLsizei; values: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPixelMapusv: Procedure(map: GLenum; mapsize: GLsizei; values: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyPixels: Procedure(x: GLint; y: GLint; Width: GLsizei;
  Height: GLsizei; type_: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawPixels: Procedure(Width: GLsizei; Height: GLsizei; format: GLenum;
  type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetClipPlane: Procedure(plane: GLenum; equation: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetLightfv: Procedure(light: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetLightiv: Procedure(light: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMapdv: Procedure(target: GLenum; query: GLenum; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMapfv: Procedure(target: GLenum; query: GLenum; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMapiv: Procedure(target: GLenum; query: GLenum; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMaterialfv: Procedure(face: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetMaterialiv: Procedure(face: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPixelMapfv: Procedure(map: GLenum; values: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPixelMapuiv: Procedure(map: GLenum; values: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPixelMapusv: Procedure(map: GLenum; values: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetPolygonStipple: Procedure(mask: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexEnvfv: Procedure(target: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexEnviv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexGendv: Procedure(coord: GLenum; pname: GLenum; params: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexGenfv: Procedure(coord: GLenum; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexGeniv: Procedure(coord: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsList: Function(list: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFrustum: Procedure(left: GLdouble; right: GLdouble; bottom: GLdouble;
  top: GLdouble; zNear: GLdouble; zFar: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadIdentity: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glLoadMatrixf: Procedure(m: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadMatrixd: Procedure(m: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMatrixMode: Procedure(mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultMatrixf: Procedure(m: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultMatrixd: Procedure(m: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glOrtho: Procedure(left: GLdouble; right: GLdouble; bottom: GLdouble;
  top: GLdouble; zNear: GLdouble; zFar: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopMatrix: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glPushMatrix: Procedure(); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glRotated: Procedure(angle: GLdouble; x: GLdouble; y: GLdouble; z: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRotatef: Procedure(angle: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glScaled: Procedure(x: GLdouble; y: GLdouble; z: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glScalef: Procedure(x: GLfloat; y: GLfloat; z: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTranslated: Procedure(x: GLdouble; y: GLdouble; z: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTranslatef: Procedure(x: GLfloat; y: GLfloat; z: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawArrays: Procedure(mode: GLenum; First: GLint; Count: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawElements: Procedure(mode: GLenum; Count: GLsizei; type_: GLenum;
  indices: Pointer); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glGetPointerv: Procedure(pname: GLenum; params: PPointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPolygonOffset: Procedure(factor: GLfloat; units: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexImage1D: Procedure(target: GLenum; level: GLint;
  internalformat: GLenum; x: GLint; y: GLint; Width: GLsizei; border: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexImage2D: Procedure(target: GLenum; level: GLint;
  internalformat: GLenum; x: GLint; y: GLint; Width: GLsizei; Height: GLsizei;
  border: GLint); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glCopyTexSubImage1D: Procedure(target: GLenum; level: GLint;
  xoffset: GLint; x: GLint; y: GLint; Width: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexSubImage2D: Procedure(target: GLenum; level: GLint;
  xoffset: GLint; yoffset: GLint; x: GLint; y: GLint; Width: GLsizei; Height: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexSubImage1D: Procedure(target: GLenum; level: GLint; xoffset: GLint;
  Width: GLsizei; format: GLenum; type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexSubImage2D: Procedure(target: GLenum; level: GLint; xoffset: GLint;
  yoffset: GLint; Width: GLsizei; Height: GLsizei; format: GLenum;
  type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindTexture: Procedure(target: GLenum; texture: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteTextures: Procedure(n: GLsizei; textures: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenTextures: Procedure(n: GLsizei; textures: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsTexture: Function(texture: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glArrayElement: Procedure(i: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColorPointer: Procedure(size: GLint; type_: GLenum; stride: GLsizei;
  pointer: Pointer); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glDisableClientState: Procedure(array_: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEdgeFlagPointer: Procedure(stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnableClientState: Procedure(array_: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexPointer: Procedure(type_: GLenum; stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glInterleavedArrays: Procedure(format: GLenum; stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glNormalPointer: Procedure(type_: GLenum; stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexCoordPointer: Procedure(size: GLint; type_: GLenum; stride: GLsizei;
  pointer: Pointer); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glVertexPointer: Procedure(size: GLint; type_: GLenum; stride: GLsizei;
  pointer: Pointer); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glAreTexturesResident: Function(n: GLsizei; textures: PGLuint;
  residences: PGLboolean): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPrioritizeTextures: Procedure(n: GLsizei; textures: PGLuint; priorities: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexub: Procedure(c: GLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIndexubv: Procedure(c: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPopClientAttrib: Procedure();
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPushClientAttrib: Procedure(mask: GLbitfield);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawRangeElements: Procedure(mode: GLenum; start: GLuint;
  end_: GLuint; Count: GLsizei; type_: GLenum; indices: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexImage3D: Procedure(target: GLenum; level: GLint; internalformat: GLint;
  Width: GLsizei; Height: GLsizei; depth: GLsizei; border: GLint;
  format: GLenum; type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexSubImage3D: Procedure(target: GLenum; level: GLint; xoffset: GLint;
  yoffset: GLint; zoffset: GLint; Width: GLsizei; Height: GLsizei;
  depth: GLsizei; format: GLenum; type_: GLenum; pixels: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCopyTexSubImage3D: Procedure(target: GLenum; level: GLint;
  xoffset: GLint; yoffset: GLint; zoffset: GLint; x: GLint; y: GLint;
  Width: GLsizei; Height: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glActiveTexture: Procedure(texture: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSampleCoverage: Procedure(Value: GLfloat; invert: GLboolean);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCompressedTexImage3D: Procedure(target: GLenum; level: GLint;
  internalformat: GLenum; Width: GLsizei; Height: GLsizei; depth: GLsizei;
  border: GLint; imageSize: GLsizei; Data: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCompressedTexImage2D: Procedure(target: GLenum; level: GLint;
  internalformat: GLenum; Width: GLsizei; Height: GLsizei; border: GLint;
  imageSize: GLsizei; Data: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCompressedTexImage1D: Procedure(target: GLenum; level: GLint;
  internalformat: GLenum; Width: GLsizei; border: GLint; imageSize: GLsizei;
  Data: Pointer); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glCompressedTexSubImage3D: Procedure(target: GLenum; level: GLint;
  xoffset: GLint; yoffset: GLint; zoffset: GLint; Width: GLsizei;
  Height: GLsizei; depth: GLsizei; format: GLenum; imageSize: GLsizei; Data: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCompressedTexSubImage2D: Procedure(target: GLenum; level: GLint;
  xoffset: GLint; yoffset: GLint; Width: GLsizei; Height: GLsizei;
  format: GLenum; imageSize: GLsizei; Data: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCompressedTexSubImage1D: Procedure(target: GLenum; level: GLint;
  xoffset: GLint; Width: GLsizei; format: GLenum; imageSize: GLsizei; Data: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetCompressedTexImage: Procedure(target: GLenum; level: GLint; img: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClientActiveTexture: Procedure(texture: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1d: Procedure(target: GLenum; s: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1dv: Procedure(target: GLenum; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1f: Procedure(target: GLenum; s: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1fv: Procedure(target: GLenum; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1i: Procedure(target: GLenum; s: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1iv: Procedure(target: GLenum; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1s: Procedure(target: GLenum; s: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord1sv: Procedure(target: GLenum; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2d: Procedure(target: GLenum; s: GLdouble; t: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2dv: Procedure(target: GLenum; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2f: Procedure(target: GLenum; s: GLfloat; t: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2fv: Procedure(target: GLenum; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2i: Procedure(target: GLenum; s: GLint; t: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2iv: Procedure(target: GLenum; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2s: Procedure(target: GLenum; s: GLshort; t: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord2sv: Procedure(target: GLenum; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3d: Procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3dv: Procedure(target: GLenum; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3f: Procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3fv: Procedure(target: GLenum; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3i: Procedure(target: GLenum; s: GLint; t: GLint; r: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3iv: Procedure(target: GLenum; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3s: Procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord3sv: Procedure(target: GLenum; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4d: Procedure(target: GLenum; s: GLdouble; t: GLdouble;
  r: GLdouble; q: GLdouble); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4dv: Procedure(target: GLenum; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4f: Procedure(target: GLenum; s: GLfloat; t: GLfloat;
  r: GLfloat; q: GLfloat); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4fv: Procedure(target: GLenum; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4i: Procedure(target: GLenum; s: GLint; t: GLint; r: GLint; q: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4iv: Procedure(target: GLenum; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4s: Procedure(target: GLenum; s: GLshort; t: GLshort;
  r: GLshort; q: GLshort); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glMultiTexCoord4sv: Procedure(target: GLenum; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadTransposeMatrixf: Procedure(m: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLoadTransposeMatrixd: Procedure(m: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultTransposeMatrixf: Procedure(m: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultTransposeMatrixd: Procedure(m: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBlendFuncSeparate: Procedure(sfactorRGB: GLenum; dfactorRGB: GLenum;
  sfactorAlpha: GLenum; dfactorAlpha: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMultiDrawArrays: Procedure(mode: GLenum; First: PGLint; Count: PGLsizei;
  drawcount: GLsizei); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glMultiDrawElements: Procedure(mode: GLenum; Count: PGLsizei;
  type_: GLenum; indices: PPointer; drawcount: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPointParameterf: Procedure(pname: GLenum; param: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPointParameterfv: Procedure(pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPointParameteri: Procedure(pname: GLenum; param: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glPointParameteriv: Procedure(pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogCoordf: Procedure(coord: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogCoordfv: Procedure(coord: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogCoordd: Procedure(coord: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogCoorddv: Procedure(coord: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFogCoordPointer: Procedure(type_: GLenum; stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3b: Procedure(red: GLbyte; green: GLbyte; blue: GLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3bv: Procedure(v: PGLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3d: Procedure(red: GLdouble; green: GLdouble; blue: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3f: Procedure(red: GLfloat; green: GLfloat; blue: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3i: Procedure(red: GLint; green: GLint; blue: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3s: Procedure(red: GLshort; green: GLshort; blue: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3ub: Procedure(red: GLubyte; green: GLubyte; blue: GLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3ubv: Procedure(v: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3ui: Procedure(red: GLuint; green: GLuint; blue: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3uiv: Procedure(v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3us: Procedure(red: GLushort; green: GLushort; blue: GLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColor3usv: Procedure(v: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glSecondaryColorPointer: Procedure(size: GLint; type_: GLenum;
  stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2d: Procedure(x: GLdouble; y: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2f: Procedure(x: GLfloat; y: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2i: Procedure(x: GLint; y: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2s: Procedure(x: GLshort; y: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos2sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3d: Procedure(x: GLdouble; y: GLdouble; z: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3dv: Procedure(v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3f: Procedure(x: GLfloat; y: GLfloat; z: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3fv: Procedure(v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3i: Procedure(x: GLint; y: GLint; z: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3iv: Procedure(v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3s: Procedure(x: GLshort; y: GLshort; z: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glWindowPos3sv: Procedure(v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBlendColor: Procedure(red: GLfloat; green: GLfloat; blue: GLfloat; alpha: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBlendEquation: Procedure(mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenQueries: Procedure(n: GLsizei; ids: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteQueries: Procedure(n: GLsizei; ids: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsQuery: Function(id: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBeginQuery: Procedure(target: GLenum; id: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEndQuery: Procedure(target: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetQueryiv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetQueryObjectiv: Procedure(id: GLuint; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetQueryObjectuiv: Procedure(id: GLuint; pname: GLenum; params: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindBuffer: Procedure(target: GLenum; buffer: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteBuffers: Procedure(n: GLsizei; buffers: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenBuffers: Procedure(n: GLsizei; buffers: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsBuffer: Function(buffer: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBufferData: Procedure(target: GLenum; size: GLsizeiptr; Data: Pointer;
  usage: GLenum); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glBufferSubData: Procedure(target: GLenum; offset: GLintptr;
  size: GLsizeiptr; Data: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetBufferSubData: Procedure(target: GLenum; offset: GLintptr;
  size: GLsizeiptr; Data: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapBuffer: Function(target: GLenum; access: GLenum): Pointer;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUnmapBuffer: Function(target: GLenum): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetBufferParameteriv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetBufferPointerv: Procedure(target: GLenum; pname: GLenum; params: PPointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBlendEquationSeparate: Procedure(modeRGB: GLenum; modeAlpha: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDrawBuffers: Procedure(n: GLsizei; bufs: PGLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilOpSeparate: Procedure(face: GLenum; sfail: GLenum;
  dpfail: GLenum; dppass: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilFuncSeparate: Procedure(face: GLenum; func: GLenum; ref: GLint;
  mask: GLuint); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glStencilMaskSeparate: Procedure(face: GLenum; mask: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glAttachShader: Procedure(program_: GLuint; shader: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindAttribLocation: Procedure(program_: GLuint; index: GLuint; Name: PGLchar);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCompileShader: Procedure(shader: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCreateProgram: Function(): GLuint;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCreateShader: Function(type_: GLenum): GLuint;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteProgram: Procedure(program_: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteShader: Procedure(shader: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDetachShader: Procedure(program_: GLuint; shader: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDisableVertexAttribArray: Procedure(index: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnableVertexAttribArray: Procedure(index: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetActiveAttrib: Procedure(program_: GLuint; index: GLuint;
  bufSize: GLsizei; length: PGLsizei; size: PGLint; type_: PGLenum; Name: PGLchar);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetActiveUniform: Procedure(program_: GLuint; index: GLuint;
  bufSize: GLsizei; length: PGLsizei; size: PGLint; type_: PGLenum; Name: PGLchar);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetAttachedShaders: Procedure(program_: GLuint; maxCount: GLsizei;
  Count: PGLsizei; shaders: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetAttribLocation: Function(program_: GLuint; Name: PGLchar): GLint;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetProgramiv: Procedure(program_: GLuint; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetProgramInfoLog: Procedure(program_: GLuint; bufSize: GLsizei;
  length: PGLsizei; infoLog: PGLchar);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetShaderiv: Procedure(shader: GLuint; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetShaderInfoLog: Procedure(shader: GLuint; bufSize: GLsizei;
  length: PGLsizei; infoLog: PGLchar);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetShaderSource: Procedure(shader: GLuint; bufSize: GLsizei;
  length: PGLsizei; Source: PGLchar);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetUniformLocation: Function(program_: GLuint; Name: PGLchar): GLint;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetUniformfv: Procedure(program_: GLuint; location: GLint; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetUniformiv: Procedure(program_: GLuint; location: GLint; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetVertexAttribdv: Procedure(index: GLuint; pname: GLenum; params: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetVertexAttribfv: Procedure(index: GLuint; pname: GLenum; params: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetVertexAttribiv: Procedure(index: GLuint; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetVertexAttribPointerv: Procedure(index: GLuint; pname: GLenum; pointer: PPointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsProgram: Function(program_: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsShader: Function(shader: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glLinkProgram: Procedure(program_: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glShaderSource: Procedure(shader: GLuint; Count: GLsizei;
  string_: PPGLchar; length: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUseProgram: Procedure(program_: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform1f: Procedure(location: GLint; v0: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform2f: Procedure(location: GLint; v0: GLfloat; v1: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform3f: Procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform4f: Procedure(location: GLint; v0: GLfloat; v1: GLfloat;
  v2: GLfloat; v3: GLfloat); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glUniform1i: Procedure(location: GLint; v0: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform2i: Procedure(location: GLint; v0: GLint; v1: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform3i: Procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform4i: Procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform1fv: Procedure(location: GLint; Count: GLsizei; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform2fv: Procedure(location: GLint; Count: GLsizei; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform3fv: Procedure(location: GLint; Count: GLsizei; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform4fv: Procedure(location: GLint; Count: GLsizei; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform1iv: Procedure(location: GLint; Count: GLsizei; Value: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform2iv: Procedure(location: GLint; Count: GLsizei; Value: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform3iv: Procedure(location: GLint; Count: GLsizei; Value: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform4iv: Procedure(location: GLint; Count: GLsizei; Value: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix2fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix3fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix4fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glValidateProgram: Procedure(program_: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib1d: Procedure(index: GLuint; x: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib1dv: Procedure(index: GLuint; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib1f: Procedure(index: GLuint; x: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib1fv: Procedure(index: GLuint; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib1s: Procedure(index: GLuint; x: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib1sv: Procedure(index: GLuint; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib2d: Procedure(index: GLuint; x: GLdouble; y: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib2dv: Procedure(index: GLuint; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib2f: Procedure(index: GLuint; x: GLfloat; y: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib2fv: Procedure(index: GLuint; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib2s: Procedure(index: GLuint; x: GLshort; y: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib2sv: Procedure(index: GLuint; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib3d: Procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib3dv: Procedure(index: GLuint; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib3f: Procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib3fv: Procedure(index: GLuint; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib3s: Procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib3sv: Procedure(index: GLuint; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4Nbv: Procedure(index: GLuint; v: PGLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4Niv: Procedure(index: GLuint; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4Nsv: Procedure(index: GLuint; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4Nub: Procedure(index: GLuint; x: GLubyte; y: GLubyte;
  z: GLubyte; w: GLubyte); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4Nubv: Procedure(index: GLuint; v: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4Nuiv: Procedure(index: GLuint; v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4Nusv: Procedure(index: GLuint; v: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4bv: Procedure(index: GLuint; v: PGLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4d: Procedure(index: GLuint; x: GLdouble; y: GLdouble;
  z: GLdouble; w: GLdouble); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4dv: Procedure(index: GLuint; v: PGLdouble);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4f: Procedure(index: GLuint; x: GLfloat; y: GLfloat;
  z: GLfloat; w: GLfloat); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4fv: Procedure(index: GLuint; v: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4iv: Procedure(index: GLuint; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4s: Procedure(index: GLuint; x: GLshort; y: GLshort;
  z: GLshort; w: GLshort); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4sv: Procedure(index: GLuint; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4ubv: Procedure(index: GLuint; v: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4uiv: Procedure(index: GLuint; v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttrib4usv: Procedure(index: GLuint; v: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribPointer: Procedure(index: GLuint; size: GLint;
  type_: GLenum; normalized: GLboolean; stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix2x3fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix3x2fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix2x4fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix4x2fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix3x4fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniformMatrix4x3fv: Procedure(location: GLint; Count: GLsizei;
  transpose: GLboolean; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glColorMaski: Procedure(index: GLuint; r: GLboolean; g: GLboolean;
  b: GLboolean; a: GLboolean); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glGetBooleani_v: Procedure(target: GLenum; index: GLuint; Data: PGLboolean);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetIntegeri_v: Procedure(target: GLenum; index: GLuint; Data: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEnablei: Procedure(target: GLenum; index: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDisablei: Procedure(target: GLenum; index: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsEnabledi: Function(target: GLenum; index: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBeginTransformFeedback: Procedure(primitiveMode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEndTransformFeedback: Procedure();
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindBufferRange: Procedure(target: GLenum; index: GLuint;
  buffer: GLuint; offset: GLintptr; size: GLsizeiptr);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindBufferBase: Procedure(target: GLenum; index: GLuint; buffer: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTransformFeedbackVaryings: Procedure(program_: GLuint; Count: GLsizei;
  varyings: PPGLchar; bufferMode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTransformFeedbackVarying: Procedure(program_: GLuint;
  index: GLuint; bufSize: GLsizei; length: PGLsizei; size: PGLsizei;
  type_: PGLenum; Name: PGLchar); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glClampColor: Procedure(target: GLenum; clamp: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBeginConditionalRender: Procedure(id: GLuint; mode: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glEndConditionalRender: Procedure();
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribIPointer: Procedure(index: GLuint; size: GLint;
  type_: GLenum; stride: GLsizei; pointer: Pointer);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetVertexAttribIiv: Procedure(index: GLuint; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetVertexAttribIuiv: Procedure(index: GLuint; pname: GLenum; params: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI1i: Procedure(index: GLuint; x: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI2i: Procedure(index: GLuint; x: GLint; y: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI3i: Procedure(index: GLuint; x: GLint; y: GLint; z: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4i: Procedure(index: GLuint; x: GLint; y: GLint; z: GLint; w: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI1ui: Procedure(index: GLuint; x: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI2ui: Procedure(index: GLuint; x: GLuint; y: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI3ui: Procedure(index: GLuint; x: GLuint; y: GLuint; z: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4ui: Procedure(index: GLuint; x: GLuint; y: GLuint;
  z: GLuint; w: GLuint); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glVertexAttribI1iv: Procedure(index: GLuint; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI2iv: Procedure(index: GLuint; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI3iv: Procedure(index: GLuint; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4iv: Procedure(index: GLuint; v: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI1uiv: Procedure(index: GLuint; v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI2uiv: Procedure(index: GLuint; v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI3uiv: Procedure(index: GLuint; v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4uiv: Procedure(index: GLuint; v: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4bv: Procedure(index: GLuint; v: PGLbyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4sv: Procedure(index: GLuint; v: PGLshort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4ubv: Procedure(index: GLuint; v: PGLubyte);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glVertexAttribI4usv: Procedure(index: GLuint; v: PGLushort);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetUniformuiv: Procedure(program_: GLuint; location: GLint; params: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindFragDataLocation: Procedure(program_: GLuint; color: GLuint; Name: PGLchar);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetFragDataLocation: Function(program_: GLuint; Name: PGLchar): GLint;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform1ui: Procedure(location: GLint; v0: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform2ui: Procedure(location: GLint; v0: GLuint; v1: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform3ui: Procedure(location: GLint; v0: GLuint; v1: GLuint; v2: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform4ui: Procedure(location: GLint; v0: GLuint; v1: GLuint;
  v2: GLuint; v3: GLuint); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glUniform1uiv: Procedure(location: GLint; Count: GLsizei; Value: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform2uiv: Procedure(location: GLint; Count: GLsizei; Value: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform3uiv: Procedure(location: GLint; Count: GLsizei; Value: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glUniform4uiv: Procedure(location: GLint; Count: GLsizei; Value: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameterIiv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glTexParameterIuiv: Procedure(target: GLenum; pname: GLenum; params: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexParameterIiv: Procedure(target: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetTexParameterIuiv: Procedure(target: GLenum; pname: GLenum; params: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearBufferiv: Procedure(buffer: GLenum; drawbuffer: GLint; Value: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearBufferuiv: Procedure(buffer: GLenum; drawbuffer: GLint; Value: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearBufferfv: Procedure(buffer: GLenum; drawbuffer: GLint; Value: PGLfloat);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glClearBufferfi: Procedure(buffer: GLenum; drawbuffer: GLint;
  depth: GLfloat; stencil: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetStringi: Function(Name: GLenum; index: GLuint): PGLubyte;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsRenderbuffer: Function(renderbuffer: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindRenderbuffer: Procedure(target: GLenum; renderbuffer: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteRenderbuffers: Procedure(n: GLsizei; renderbuffers: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenRenderbuffers: Procedure(n: GLsizei; renderbuffers: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRenderbufferStorage: Procedure(target: GLenum; internalformat: GLenum;
  Width: GLsizei; Height: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetRenderbufferParameteriv: Procedure(target: GLenum; pname: GLenum;
  params: PGLint); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glIsFramebuffer: Function(framebuffer: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBindFramebuffer: Procedure(target: GLenum; framebuffer: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteFramebuffers: Procedure(n: GLsizei; framebuffers: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenFramebuffers: Procedure(n: GLsizei; framebuffers: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glCheckFramebufferStatus: Function(target: GLenum): GLenum;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFramebufferTexture1D: Procedure(target: GLenum; attachment: GLenum;
  textarget: GLenum; texture: GLuint; level: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFramebufferTexture2D: Procedure(target: GLenum; attachment: GLenum;
  textarget: GLenum; texture: GLuint; level: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFramebufferTexture3D: Procedure(target: GLenum; attachment: GLenum;
  textarget: GLenum; texture: GLuint; level: GLint; zoffset: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFramebufferRenderbuffer: Procedure(target: GLenum; attachment: GLenum;
  renderbuffertarget: GLenum; renderbuffer: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGetFramebufferAttachmentParameteriv: Procedure(target: GLenum;
  attachment: GLenum; pname: GLenum; params: PGLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenerateMipmap: Procedure(target: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glBlitFramebuffer: Procedure(srcX0: GLint; srcY0: GLint; srcX1: GLint;
  srcY1: GLint; dstX0: GLint; dstY0: GLint; dstX1: GLint; dstY1: GLint;
  mask: GLbitfield; filter: GLenum);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glRenderbufferStorageMultisample: Procedure(target: GLenum;
  samples: GLsizei; internalformat: GLenum; Width: GLsizei; Height: GLsizei);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFramebufferTextureLayer: Procedure(target: GLenum; attachment: GLenum;
  texture: GLuint; level: GLint; layer: GLint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glMapBufferRange: Function(target: GLenum; offset: GLintptr;
  length: GLsizeiptr; access: GLbitfield): Pointer;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glFlushMappedBufferRange: Procedure(target: GLenum; offset: GLintptr;
  length: GLsizeiptr); {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;
  {$ELSE}cdecl;{$ENDIF}
  glBindVertexArray: Procedure(array_: GLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glDeleteVertexArrays: Procedure(n: GLsizei; arrays: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glGenVertexArrays: Procedure(n: GLsizei; arrays: PGLuint);
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}
  glIsVertexArray: Function(array_: GLuint): GLboolean;
  {$IF Defined(Windows) or Defined(MSWindows)} Stdcall;{$ELSE}cdecl;{$ENDIF}


Type
  TLoadProc = Function(proc: PAnsiChar): Pointer;

Function gladLoadGL(load: TLoadProc): boolean;


Implementation

{$DEFINE HAS_GL_NUM_EXTENSIONS}Function hasExt(Const extname: string): Boolean;
Var
  extensions: PChar;
  loc, terminator: PChar;
  {$IFDEF HAS_GL_NUM_EXTENSIONS}
  num_extensions, i: integer;
  ext: PChar;
  {$ENDIF}
Begin
  Result := False;
  {$IFDEF HAS_GL_NUM_EXTENSIONS}
  If glVersionMajor >= 3 Then
  Begin
    glGetIntegerv(GL_NUM_EXTENSIONS, @num_extensions);
    For i := 0 To num_extensions - 1 Do
    Begin
      ext := PChar(glGetStringi(GL_EXTENSIONS, i));
      If strcomp(ext, PChar(extname)) = 0 Then
        exit(True);
    End;
    exit;
  End;
  {$ENDIF}
  extensions := PChar(glGetString(GL_EXTENSIONS));
  While True Do
  Begin
    loc := strpos(extensions, PChar(extname));
    If loc = nil Then
      exit;
    terminator := loc + length(extname);
    If (loc = extensions) Or (loc[-1] = ' ') Then
      If (terminator[0] = ' ') Or (terminator[0] = #0) Then
        exit(True);
    extensions := terminator;
  End;
End;

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

Procedure load_GL_VERSION_1_1(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_1_1 Then exit;
  glDrawArrays := load('glDrawArrays');
  glDrawElements := load('glDrawElements');
  glGetPointerv := load('glGetPointerv');
  glPolygonOffset := load('glPolygonOffset');
  glCopyTexImage1D := load('glCopyTexImage1D');
  glCopyTexImage2D := load('glCopyTexImage2D');
  glCopyTexSubImage1D := load('glCopyTexSubImage1D');
  glCopyTexSubImage2D := load('glCopyTexSubImage2D');
  glTexSubImage1D := load('glTexSubImage1D');
  glTexSubImage2D := load('glTexSubImage2D');
  glBindTexture := load('glBindTexture');
  glDeleteTextures := load('glDeleteTextures');
  glGenTextures := load('glGenTextures');
  glIsTexture := load('glIsTexture');
  glArrayElement := load('glArrayElement');
  glColorPointer := load('glColorPointer');
  glDisableClientState := load('glDisableClientState');
  glEdgeFlagPointer := load('glEdgeFlagPointer');
  glEnableClientState := load('glEnableClientState');
  glIndexPointer := load('glIndexPointer');
  glInterleavedArrays := load('glInterleavedArrays');
  glNormalPointer := load('glNormalPointer');
  glTexCoordPointer := load('glTexCoordPointer');
  glVertexPointer := load('glVertexPointer');
  glAreTexturesResident := load('glAreTexturesResident');
  glPrioritizeTextures := load('glPrioritizeTextures');
  glIndexub := load('glIndexub');
  glIndexubv := load('glIndexubv');
  glPopClientAttrib := load('glPopClientAttrib');
  glPushClientAttrib := load('glPushClientAttrib');
End;

Procedure load_GL_VERSION_1_2(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_1_2 Then exit;
  glDrawRangeElements := load('glDrawRangeElements');
  glTexImage3D := load('glTexImage3D');
  glTexSubImage3D := load('glTexSubImage3D');
  glCopyTexSubImage3D := load('glCopyTexSubImage3D');
End;

Procedure load_GL_VERSION_1_3(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_1_3 Then exit;
  glActiveTexture := load('glActiveTexture');
  glSampleCoverage := load('glSampleCoverage');
  glCompressedTexImage3D := load('glCompressedTexImage3D');
  glCompressedTexImage2D := load('glCompressedTexImage2D');
  glCompressedTexImage1D := load('glCompressedTexImage1D');
  glCompressedTexSubImage3D := load('glCompressedTexSubImage3D');
  glCompressedTexSubImage2D := load('glCompressedTexSubImage2D');
  glCompressedTexSubImage1D := load('glCompressedTexSubImage1D');
  glGetCompressedTexImage := load('glGetCompressedTexImage');
  glClientActiveTexture := load('glClientActiveTexture');
  glMultiTexCoord1d := load('glMultiTexCoord1d');
  glMultiTexCoord1dv := load('glMultiTexCoord1dv');
  glMultiTexCoord1f := load('glMultiTexCoord1f');
  glMultiTexCoord1fv := load('glMultiTexCoord1fv');
  glMultiTexCoord1i := load('glMultiTexCoord1i');
  glMultiTexCoord1iv := load('glMultiTexCoord1iv');
  glMultiTexCoord1s := load('glMultiTexCoord1s');
  glMultiTexCoord1sv := load('glMultiTexCoord1sv');
  glMultiTexCoord2d := load('glMultiTexCoord2d');
  glMultiTexCoord2dv := load('glMultiTexCoord2dv');
  glMultiTexCoord2f := load('glMultiTexCoord2f');
  glMultiTexCoord2fv := load('glMultiTexCoord2fv');
  glMultiTexCoord2i := load('glMultiTexCoord2i');
  glMultiTexCoord2iv := load('glMultiTexCoord2iv');
  glMultiTexCoord2s := load('glMultiTexCoord2s');
  glMultiTexCoord2sv := load('glMultiTexCoord2sv');
  glMultiTexCoord3d := load('glMultiTexCoord3d');
  glMultiTexCoord3dv := load('glMultiTexCoord3dv');
  glMultiTexCoord3f := load('glMultiTexCoord3f');
  glMultiTexCoord3fv := load('glMultiTexCoord3fv');
  glMultiTexCoord3i := load('glMultiTexCoord3i');
  glMultiTexCoord3iv := load('glMultiTexCoord3iv');
  glMultiTexCoord3s := load('glMultiTexCoord3s');
  glMultiTexCoord3sv := load('glMultiTexCoord3sv');
  glMultiTexCoord4d := load('glMultiTexCoord4d');
  glMultiTexCoord4dv := load('glMultiTexCoord4dv');
  glMultiTexCoord4f := load('glMultiTexCoord4f');
  glMultiTexCoord4fv := load('glMultiTexCoord4fv');
  glMultiTexCoord4i := load('glMultiTexCoord4i');
  glMultiTexCoord4iv := load('glMultiTexCoord4iv');
  glMultiTexCoord4s := load('glMultiTexCoord4s');
  glMultiTexCoord4sv := load('glMultiTexCoord4sv');
  glLoadTransposeMatrixf := load('glLoadTransposeMatrixf');
  glLoadTransposeMatrixd := load('glLoadTransposeMatrixd');
  glMultTransposeMatrixf := load('glMultTransposeMatrixf');
  glMultTransposeMatrixd := load('glMultTransposeMatrixd');
End;

Procedure load_GL_VERSION_1_4(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_1_4 Then exit;
  glBlendFuncSeparate := load('glBlendFuncSeparate');
  glMultiDrawArrays := load('glMultiDrawArrays');
  glMultiDrawElements := load('glMultiDrawElements');
  glPointParameterf := load('glPointParameterf');
  glPointParameterfv := load('glPointParameterfv');
  glPointParameteri := load('glPointParameteri');
  glPointParameteriv := load('glPointParameteriv');
  glFogCoordf := load('glFogCoordf');
  glFogCoordfv := load('glFogCoordfv');
  glFogCoordd := load('glFogCoordd');
  glFogCoorddv := load('glFogCoorddv');
  glFogCoordPointer := load('glFogCoordPointer');
  glSecondaryColor3b := load('glSecondaryColor3b');
  glSecondaryColor3bv := load('glSecondaryColor3bv');
  glSecondaryColor3d := load('glSecondaryColor3d');
  glSecondaryColor3dv := load('glSecondaryColor3dv');
  glSecondaryColor3f := load('glSecondaryColor3f');
  glSecondaryColor3fv := load('glSecondaryColor3fv');
  glSecondaryColor3i := load('glSecondaryColor3i');
  glSecondaryColor3iv := load('glSecondaryColor3iv');
  glSecondaryColor3s := load('glSecondaryColor3s');
  glSecondaryColor3sv := load('glSecondaryColor3sv');
  glSecondaryColor3ub := load('glSecondaryColor3ub');
  glSecondaryColor3ubv := load('glSecondaryColor3ubv');
  glSecondaryColor3ui := load('glSecondaryColor3ui');
  glSecondaryColor3uiv := load('glSecondaryColor3uiv');
  glSecondaryColor3us := load('glSecondaryColor3us');
  glSecondaryColor3usv := load('glSecondaryColor3usv');
  glSecondaryColorPointer := load('glSecondaryColorPointer');
  glWindowPos2d := load('glWindowPos2d');
  glWindowPos2dv := load('glWindowPos2dv');
  glWindowPos2f := load('glWindowPos2f');
  glWindowPos2fv := load('glWindowPos2fv');
  glWindowPos2i := load('glWindowPos2i');
  glWindowPos2iv := load('glWindowPos2iv');
  glWindowPos2s := load('glWindowPos2s');
  glWindowPos2sv := load('glWindowPos2sv');
  glWindowPos3d := load('glWindowPos3d');
  glWindowPos3dv := load('glWindowPos3dv');
  glWindowPos3f := load('glWindowPos3f');
  glWindowPos3fv := load('glWindowPos3fv');
  glWindowPos3i := load('glWindowPos3i');
  glWindowPos3iv := load('glWindowPos3iv');
  glWindowPos3s := load('glWindowPos3s');
  glWindowPos3sv := load('glWindowPos3sv');
  glBlendColor := load('glBlendColor');
  glBlendEquation := load('glBlendEquation');
End;

Procedure load_GL_VERSION_1_5(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_1_5 Then exit;
  glGenQueries := load('glGenQueries');
  glDeleteQueries := load('glDeleteQueries');
  glIsQuery := load('glIsQuery');
  glBeginQuery := load('glBeginQuery');
  glEndQuery := load('glEndQuery');
  glGetQueryiv := load('glGetQueryiv');
  glGetQueryObjectiv := load('glGetQueryObjectiv');
  glGetQueryObjectuiv := load('glGetQueryObjectuiv');
  glBindBuffer := load('glBindBuffer');
  glDeleteBuffers := load('glDeleteBuffers');
  glGenBuffers := load('glGenBuffers');
  glIsBuffer := load('glIsBuffer');
  glBufferData := load('glBufferData');
  glBufferSubData := load('glBufferSubData');
  glGetBufferSubData := load('glGetBufferSubData');
  glMapBuffer := load('glMapBuffer');
  glUnmapBuffer := load('glUnmapBuffer');
  glGetBufferParameteriv := load('glGetBufferParameteriv');
  glGetBufferPointerv := load('glGetBufferPointerv');
End;

Procedure load_GL_VERSION_2_0(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_2_0 Then exit;
  glBlendEquationSeparate := load('glBlendEquationSeparate');
  glDrawBuffers := load('glDrawBuffers');
  glStencilOpSeparate := load('glStencilOpSeparate');
  glStencilFuncSeparate := load('glStencilFuncSeparate');
  glStencilMaskSeparate := load('glStencilMaskSeparate');
  glAttachShader := load('glAttachShader');
  glBindAttribLocation := load('glBindAttribLocation');
  glCompileShader := load('glCompileShader');
  glCreateProgram := load('glCreateProgram');
  glCreateShader := load('glCreateShader');
  glDeleteProgram := load('glDeleteProgram');
  glDeleteShader := load('glDeleteShader');
  glDetachShader := load('glDetachShader');
  glDisableVertexAttribArray := load('glDisableVertexAttribArray');
  glEnableVertexAttribArray := load('glEnableVertexAttribArray');
  glGetActiveAttrib := load('glGetActiveAttrib');
  glGetActiveUniform := load('glGetActiveUniform');
  glGetAttachedShaders := load('glGetAttachedShaders');
  glGetAttribLocation := load('glGetAttribLocation');
  glGetProgramiv := load('glGetProgramiv');
  glGetProgramInfoLog := load('glGetProgramInfoLog');
  glGetShaderiv := load('glGetShaderiv');
  glGetShaderInfoLog := load('glGetShaderInfoLog');
  glGetShaderSource := load('glGetShaderSource');
  glGetUniformLocation := load('glGetUniformLocation');
  glGetUniformfv := load('glGetUniformfv');
  glGetUniformiv := load('glGetUniformiv');
  glGetVertexAttribdv := load('glGetVertexAttribdv');
  glGetVertexAttribfv := load('glGetVertexAttribfv');
  glGetVertexAttribiv := load('glGetVertexAttribiv');
  glGetVertexAttribPointerv := load('glGetVertexAttribPointerv');
  glIsProgram := load('glIsProgram');
  glIsShader := load('glIsShader');
  glLinkProgram := load('glLinkProgram');
  glShaderSource := load('glShaderSource');
  glUseProgram := load('glUseProgram');
  glUniform1f := load('glUniform1f');
  glUniform2f := load('glUniform2f');
  glUniform3f := load('glUniform3f');
  glUniform4f := load('glUniform4f');
  glUniform1i := load('glUniform1i');
  glUniform2i := load('glUniform2i');
  glUniform3i := load('glUniform3i');
  glUniform4i := load('glUniform4i');
  glUniform1fv := load('glUniform1fv');
  glUniform2fv := load('glUniform2fv');
  glUniform3fv := load('glUniform3fv');
  glUniform4fv := load('glUniform4fv');
  glUniform1iv := load('glUniform1iv');
  glUniform2iv := load('glUniform2iv');
  glUniform3iv := load('glUniform3iv');
  glUniform4iv := load('glUniform4iv');
  glUniformMatrix2fv := load('glUniformMatrix2fv');
  glUniformMatrix3fv := load('glUniformMatrix3fv');
  glUniformMatrix4fv := load('glUniformMatrix4fv');
  glValidateProgram := load('glValidateProgram');
  glVertexAttrib1d := load('glVertexAttrib1d');
  glVertexAttrib1dv := load('glVertexAttrib1dv');
  glVertexAttrib1f := load('glVertexAttrib1f');
  glVertexAttrib1fv := load('glVertexAttrib1fv');
  glVertexAttrib1s := load('glVertexAttrib1s');
  glVertexAttrib1sv := load('glVertexAttrib1sv');
  glVertexAttrib2d := load('glVertexAttrib2d');
  glVertexAttrib2dv := load('glVertexAttrib2dv');
  glVertexAttrib2f := load('glVertexAttrib2f');
  glVertexAttrib2fv := load('glVertexAttrib2fv');
  glVertexAttrib2s := load('glVertexAttrib2s');
  glVertexAttrib2sv := load('glVertexAttrib2sv');
  glVertexAttrib3d := load('glVertexAttrib3d');
  glVertexAttrib3dv := load('glVertexAttrib3dv');
  glVertexAttrib3f := load('glVertexAttrib3f');
  glVertexAttrib3fv := load('glVertexAttrib3fv');
  glVertexAttrib3s := load('glVertexAttrib3s');
  glVertexAttrib3sv := load('glVertexAttrib3sv');
  glVertexAttrib4Nbv := load('glVertexAttrib4Nbv');
  glVertexAttrib4Niv := load('glVertexAttrib4Niv');
  glVertexAttrib4Nsv := load('glVertexAttrib4Nsv');
  glVertexAttrib4Nub := load('glVertexAttrib4Nub');
  glVertexAttrib4Nubv := load('glVertexAttrib4Nubv');
  glVertexAttrib4Nuiv := load('glVertexAttrib4Nuiv');
  glVertexAttrib4Nusv := load('glVertexAttrib4Nusv');
  glVertexAttrib4bv := load('glVertexAttrib4bv');
  glVertexAttrib4d := load('glVertexAttrib4d');
  glVertexAttrib4dv := load('glVertexAttrib4dv');
  glVertexAttrib4f := load('glVertexAttrib4f');
  glVertexAttrib4fv := load('glVertexAttrib4fv');
  glVertexAttrib4iv := load('glVertexAttrib4iv');
  glVertexAttrib4s := load('glVertexAttrib4s');
  glVertexAttrib4sv := load('glVertexAttrib4sv');
  glVertexAttrib4ubv := load('glVertexAttrib4ubv');
  glVertexAttrib4uiv := load('glVertexAttrib4uiv');
  glVertexAttrib4usv := load('glVertexAttrib4usv');
  glVertexAttribPointer := load('glVertexAttribPointer');
End;

Procedure load_GL_VERSION_2_1(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_2_1 Then exit;
  glUniformMatrix2x3fv := load('glUniformMatrix2x3fv');
  glUniformMatrix3x2fv := load('glUniformMatrix3x2fv');
  glUniformMatrix2x4fv := load('glUniformMatrix2x4fv');
  glUniformMatrix4x2fv := load('glUniformMatrix4x2fv');
  glUniformMatrix3x4fv := load('glUniformMatrix3x4fv');
  glUniformMatrix4x3fv := load('glUniformMatrix4x3fv');
End;

Procedure load_GL_VERSION_3_0(load: TLoadProc);
Begin
  If Not GLAD_GL_VERSION_3_0 Then exit;
  glColorMaski := load('glColorMaski');
  glGetBooleani_v := load('glGetBooleani_v');
  glGetIntegeri_v := load('glGetIntegeri_v');
  glEnablei := load('glEnablei');
  glDisablei := load('glDisablei');
  glIsEnabledi := load('glIsEnabledi');
  glBeginTransformFeedback := load('glBeginTransformFeedback');
  glEndTransformFeedback := load('glEndTransformFeedback');
  glBindBufferRange := load('glBindBufferRange');
  glBindBufferBase := load('glBindBufferBase');
  glTransformFeedbackVaryings := load('glTransformFeedbackVaryings');
  glGetTransformFeedbackVarying := load('glGetTransformFeedbackVarying');
  glClampColor := load('glClampColor');
  glBeginConditionalRender := load('glBeginConditionalRender');
  glEndConditionalRender := load('glEndConditionalRender');
  glVertexAttribIPointer := load('glVertexAttribIPointer');
  glGetVertexAttribIiv := load('glGetVertexAttribIiv');
  glGetVertexAttribIuiv := load('glGetVertexAttribIuiv');
  glVertexAttribI1i := load('glVertexAttribI1i');
  glVertexAttribI2i := load('glVertexAttribI2i');
  glVertexAttribI3i := load('glVertexAttribI3i');
  glVertexAttribI4i := load('glVertexAttribI4i');
  glVertexAttribI1ui := load('glVertexAttribI1ui');
  glVertexAttribI2ui := load('glVertexAttribI2ui');
  glVertexAttribI3ui := load('glVertexAttribI3ui');
  glVertexAttribI4ui := load('glVertexAttribI4ui');
  glVertexAttribI1iv := load('glVertexAttribI1iv');
  glVertexAttribI2iv := load('glVertexAttribI2iv');
  glVertexAttribI3iv := load('glVertexAttribI3iv');
  glVertexAttribI4iv := load('glVertexAttribI4iv');
  glVertexAttribI1uiv := load('glVertexAttribI1uiv');
  glVertexAttribI2uiv := load('glVertexAttribI2uiv');
  glVertexAttribI3uiv := load('glVertexAttribI3uiv');
  glVertexAttribI4uiv := load('glVertexAttribI4uiv');
  glVertexAttribI4bv := load('glVertexAttribI4bv');
  glVertexAttribI4sv := load('glVertexAttribI4sv');
  glVertexAttribI4ubv := load('glVertexAttribI4ubv');
  glVertexAttribI4usv := load('glVertexAttribI4usv');
  glGetUniformuiv := load('glGetUniformuiv');
  glBindFragDataLocation := load('glBindFragDataLocation');
  glGetFragDataLocation := load('glGetFragDataLocation');
  glUniform1ui := load('glUniform1ui');
  glUniform2ui := load('glUniform2ui');
  glUniform3ui := load('glUniform3ui');
  glUniform4ui := load('glUniform4ui');
  glUniform1uiv := load('glUniform1uiv');
  glUniform2uiv := load('glUniform2uiv');
  glUniform3uiv := load('glUniform3uiv');
  glUniform4uiv := load('glUniform4uiv');
  glTexParameterIiv := load('glTexParameterIiv');
  glTexParameterIuiv := load('glTexParameterIuiv');
  glGetTexParameterIiv := load('glGetTexParameterIiv');
  glGetTexParameterIuiv := load('glGetTexParameterIuiv');
  glClearBufferiv := load('glClearBufferiv');
  glClearBufferuiv := load('glClearBufferuiv');
  glClearBufferfv := load('glClearBufferfv');
  glClearBufferfi := load('glClearBufferfi');
  glGetStringi := load('glGetStringi');
  glIsRenderbuffer := load('glIsRenderbuffer');
  glBindRenderbuffer := load('glBindRenderbuffer');
  glDeleteRenderbuffers := load('glDeleteRenderbuffers');
  glGenRenderbuffers := load('glGenRenderbuffers');
  glRenderbufferStorage := load('glRenderbufferStorage');
  glGetRenderbufferParameteriv := load('glGetRenderbufferParameteriv');
  glIsFramebuffer := load('glIsFramebuffer');
  glBindFramebuffer := load('glBindFramebuffer');
  glDeleteFramebuffers := load('glDeleteFramebuffers');
  glGenFramebuffers := load('glGenFramebuffers');
  glCheckFramebufferStatus := load('glCheckFramebufferStatus');
  glFramebufferTexture1D := load('glFramebufferTexture1D');
  glFramebufferTexture2D := load('glFramebufferTexture2D');
  glFramebufferTexture3D := load('glFramebufferTexture3D');
  glFramebufferRenderbuffer := load('glFramebufferRenderbuffer');
  glGetFramebufferAttachmentParameteriv := load('glGetFramebufferAttachmentParameteriv');
  glGenerateMipmap := load('glGenerateMipmap');
  glBlitFramebuffer := load('glBlitFramebuffer');
  glRenderbufferStorageMultisample := load('glRenderbufferStorageMultisample');
  glFramebufferTextureLayer := load('glFramebufferTextureLayer');
  glMapBufferRange := load('glMapBufferRange');
  glFlushMappedBufferRange := load('glFlushMappedBufferRange');
  glBindVertexArray := load('glBindVertexArray');
  glDeleteVertexArrays := load('glDeleteVertexArrays');
  glGenVertexArrays := load('glGenVertexArrays');
  glIsVertexArray := load('glIsVertexArray');
End;

Procedure findExtensionsGL();
Begin
End;

Procedure findCoreGL(glVersion: string);
{ Thank you @elmindreda
  https://github.com/elmindreda/greg/blob/master/templates/greg.c.in//L176
  https://github.com/glfw/glfw/blob/master/src/context.c//L36 }
Const
  prefixes: Array[0..2] Of string = ('OpenGL ES-CM ', 'OpenGL ES-CL ', 'OpenGL ES ');
Var
  version, p: string;
  major, minor: integer;
Begin
  version := glVersion;
  For p In prefixes Do
    If LeftStr(version, length(p)) = p Then
    Begin
      version := StringReplace(version, p, '', [rfReplaceAll]);
      break;
    End;

  major := Ord(version[1]) - Ord('0');
  minor := Ord(version[3]) - Ord('0');

  glVersionMajor := major;
  glVersionMinor := minor;

  GLAD_GL_VERSION_1_0 := ((major = 1) And (minor >= 0)) Or (major > 1);
  GLAD_GL_VERSION_1_1 := ((major = 1) And (minor >= 1)) Or (major > 1);
  GLAD_GL_VERSION_1_2 := ((major = 1) And (minor >= 2)) Or (major > 1);
  GLAD_GL_VERSION_1_3 := ((major = 1) And (minor >= 3)) Or (major > 1);
  GLAD_GL_VERSION_1_4 := ((major = 1) And (minor >= 4)) Or (major > 1);
  GLAD_GL_VERSION_1_5 := ((major = 1) And (minor >= 5)) Or (major > 1);
  GLAD_GL_VERSION_2_0 := ((major = 2) And (minor >= 0)) Or (major > 2);
  GLAD_GL_VERSION_2_1 := ((major = 2) And (minor >= 1)) Or (major > 2);
  GLAD_GL_VERSION_3_0 := ((major = 3) And (minor >= 0)) Or (major > 3);
End;

Function gladLoadGL(load: TLoadProc): boolean;
Var
  glVersion: PAnsiChar;
Begin
  glGetString := load('glGetString');
  If Not Assigned(glGetString) Then exit(False);
  glVersion := PAnsiChar(glGetString(GL_VERSION));
  If glVersion = nil Then exit(False);

  findCoreGL(glVersion);
  load_GL_VERSION_1_0(load);
  load_GL_VERSION_1_1(load);
  load_GL_VERSION_1_2(load);
  load_GL_VERSION_1_3(load);
  load_GL_VERSION_1_4(load);
  load_GL_VERSION_1_5(load);
  load_GL_VERSION_2_0(load);
  load_GL_VERSION_2_1(load);
  load_GL_VERSION_3_0(load);

  findExtensionsGL();

  Result := (glVersionMajor <> 0) Or (glVersionMinor <> 0);
End;

End.
