// This file was autogenerated by GLCSGen on 11/5/2013 3:46:03 PM UTC
// Original copyright from gl.xml:
// 
// Copyright (c) 2013 The Khronos Group Inc.
// 
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and/or associated documentation files (the
// "Materials"), to deal in the Materials without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Materials, and to
// permit persons to whom the Materials are furnished to do so, subject to
// the following conditions:
// 
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Materials.
// 
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
// 
// ------------------------------------------------------------------------
// 
// This file, gl.xml, is the OpenGL and OpenGL API Registry. The older
// ".spec" file format has been retired and will no longer be updated with
// new extensions and API versions. The canonical version of the registry,
// together with documentation, schema, and Python generator scripts used
// to generate C header files for OpenGL and OpenGL ES, can always be found
// in the Khronos Registry at
//         http://www.opengl.org/registry/
//     

using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;

namespace OpenGL
{
    public static class GL32Core
    {
        #region Enums
        public static uint GL_BACK = 0x0405;
        public static uint GL_FRONT = 0x0404;
        public static uint GL_FRONT_AND_BACK = 0x0408;
        public static uint GL_CCW = 0x0901;
        public static uint GL_CW = 0x0900;
        public static uint GL_ALLOW_DRAW_FRG_HINT_PGI = 0x1A210;
        public static uint GL_ALLOW_DRAW_MEM_HINT_PGI = 0x1A211;
        public static uint GL_ALLOW_DRAW_OBJ_HINT_PGI = 0x1A20E;
        public static uint GL_ALLOW_DRAW_WIN_HINT_PGI = 0x1A20F;
        public static uint GL_ALWAYS_FAST_HINT_PGI = 0x1A20C;
        public static uint GL_ALWAYS_SOFT_HINT_PGI = 0x1A20D;
        public static uint GL_BACK_NORMALS_HINT_PGI = 0x1A223;
        public static uint GL_BINNING_CONTROL_HINT_QCOM = 0x8FB0;
        public static uint GL_CLIP_FAR_HINT_PGI = 0x1A221;
        public static uint GL_CLIP_NEAR_HINT_PGI = 0x1A220;
        public static uint GL_CLIP_VOLUME_CLIPPING_HINT_EXT = 0x80F0;
        public static uint GL_CONSERVE_MEMORY_HINT_PGI = 0x1A1FD;
        public static uint GL_CONVOLUTION_HINT_SGIX = 0x8316;
        public static uint GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B;
        public static uint GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B;
        public static uint GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
        public static uint GL_FULL_STIPPLE_HINT_PGI = 0x1A219;
        public static uint GL_GENERATE_MIPMAP_HINT_SGIS = 0x8192;
        public static uint GL_LINE_QUALITY_HINT_SGIX = 0x835B;
        public static uint GL_LINE_SMOOTH_HINT = 0x0C52;
        public static uint GL_MATERIAL_SIDE_HINT_PGI = 0x1A22C;
        public static uint GL_MAX_VERTEX_HINT_PGI = 0x1A22D;
        public static uint GL_MULTISAMPLE_FILTER_HINT_NV = 0x8534;
        public static uint GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI = 0x1A203;
        public static uint GL_NATIVE_GRAPHICS_END_HINT_PGI = 0x1A204;
        public static uint GL_PACK_CMYK_HINT_EXT = 0x800E;
        public static uint GL_PHONG_HINT_WIN = 0x80EB;
        public static uint GL_POLYGON_SMOOTH_HINT = 0x0C53;
        public static uint GL_PREFER_DOUBLEBUFFER_HINT_PGI = 0x1A1F8;
        public static uint GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257;
        public static uint GL_RECLAIM_MEMORY_HINT_PGI = 0x1A1FE;
        public static uint GL_SCALEBIAS_HINT_SGIX = 0x8322;
        public static uint GL_STRICT_DEPTHFUNC_HINT_PGI = 0x1A216;
        public static uint GL_STRICT_LIGHTING_HINT_PGI = 0x1A217;
        public static uint GL_STRICT_SCISSOR_HINT_PGI = 0x1A218;
        public static uint GL_TEXTURE_COMPRESSION_HINT = 0x84EF;
        public static uint GL_TEXTURE_COMPRESSION_HINT_ARB = 0x84EF;
        public static uint GL_TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x812E;
        public static uint GL_TEXTURE_STORAGE_HINT_APPLE = 0x85BC;
        public static uint GL_TRANSFORM_HINT_APPLE = 0x85B1;
        public static uint GL_UNPACK_CMYK_HINT_EXT = 0x800F;
        public static uint GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F;
        public static uint GL_VERTEX_CONSISTENT_HINT_PGI = 0x1A22B;
        public static uint GL_VERTEX_DATA_HINT_PGI = 0x1A22A;
        public static uint GL_VERTEX_PRECLIP_HINT_SGIX = 0x83EF;
        public static uint GL_VERTEX_PRECLIP_SGIX = 0x83EE;
        public static uint GL_WIDE_LINE_HINT_PGI = 0x1A222;
        public static uint GL_DONT_CARE = 0x1100;
        public static uint GL_FASTEST = 0x1101;
        public static uint GL_NICEST = 0x1102;
        public static uint GL_FILL = 0x1B02;
        public static uint GL_LINE = 0x1B01;
        public static uint GL_POINT = 0x1B00;
        public static uint GL_DETAIL_TEXTURE_2D_SGIS = 0x8095;
        public static uint GL_PROXY_TEXTURE_1D = 0x8063;
        public static uint GL_PROXY_TEXTURE_1D_EXT = 0x8063;
        public static uint GL_PROXY_TEXTURE_2D = 0x8064;
        public static uint GL_PROXY_TEXTURE_2D_EXT = 0x8064;
        public static uint GL_PROXY_TEXTURE_3D = 0x8070;
        public static uint GL_PROXY_TEXTURE_3D_EXT = 0x8070;
        public static uint GL_PROXY_TEXTURE_4D_SGIS = 0x8135;
        public static uint GL_TEXTURE_1D = 0x0DE0;
        public static uint GL_TEXTURE_2D = 0x0DE1;
        public static uint GL_TEXTURE_3D = 0x806F;
        public static uint GL_TEXTURE_3D_EXT = 0x806F;
        public static uint GL_TEXTURE_3D_OES = 0x806F;
        public static uint GL_TEXTURE_4D_SGIS = 0x8134;
        public static uint GL_TEXTURE_BASE_LEVEL = 0x813C;
        public static uint GL_TEXTURE_BASE_LEVEL_SGIS = 0x813C;
        public static uint GL_TEXTURE_MAX_LEVEL = 0x813D;
        public static uint GL_TEXTURE_MAX_LEVEL_SGIS = 0x813D;
        public static uint GL_TEXTURE_MAX_LOD = 0x813B;
        public static uint GL_TEXTURE_MAX_LOD_SGIS = 0x813B;
        public static uint GL_TEXTURE_MIN_LOD = 0x813A;
        public static uint GL_TEXTURE_MIN_LOD_SGIS = 0x813A;
        public static uint GL_DETAIL_TEXTURE_LEVEL_SGIS = 0x809A;
        public static uint GL_DETAIL_TEXTURE_MODE_SGIS = 0x809B;
        public static uint GL_DUAL_TEXTURE_SELECT_SGIS = 0x8124;
        public static uint GL_GENERATE_MIPMAP_SGIS = 0x8191;
        public static uint GL_POST_TEXTURE_FILTER_BIAS_SGIX = 0x8179;
        public static uint GL_POST_TEXTURE_FILTER_SCALE_SGIX = 0x817A;
        public static uint GL_QUAD_TEXTURE_SELECT_SGIS = 0x8125;
        public static uint GL_SHADOW_AMBIENT_SGIX = 0x80BF;
        public static uint GL_TEXTURE_BORDER_COLOR = 0x1004;
        public static uint GL_TEXTURE_CLIPMAP_CENTER_SGIX = 0x8171;
        public static uint GL_TEXTURE_CLIPMAP_DEPTH_SGIX = 0x8176;
        public static uint GL_TEXTURE_CLIPMAP_FRAME_SGIX = 0x8172;
        public static uint GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x8175;
        public static uint GL_TEXTURE_CLIPMAP_OFFSET_SGIX = 0x8173;
        public static uint GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8174;
        public static uint GL_TEXTURE_COMPARE_SGIX = 0x819A;
        public static uint GL_TEXTURE_LOD_BIAS_R_SGIX = 0x8190;
        public static uint GL_TEXTURE_LOD_BIAS_S_SGIX = 0x818E;
        public static uint GL_TEXTURE_LOD_BIAS_T_SGIX = 0x818F;
        public static uint GL_TEXTURE_MAG_FILTER = 0x2800;
        public static uint GL_TEXTURE_MAX_CLAMP_R_SGIX = 0x836B;
        public static uint GL_TEXTURE_MAX_CLAMP_S_SGIX = 0x8369;
        public static uint GL_TEXTURE_MAX_CLAMP_T_SGIX = 0x836A;
        public static uint GL_TEXTURE_MIN_FILTER = 0x2801;
        public static uint GL_TEXTURE_PRIORITY_EXT = 0x8066;
        public static uint GL_TEXTURE_WRAP_Q_SGIS = 0x8137;
        public static uint GL_TEXTURE_WRAP_R = 0x8072;
        public static uint GL_TEXTURE_WRAP_R_EXT = 0x8072;
        public static uint GL_TEXTURE_WRAP_R_OES = 0x8072;
        public static uint GL_TEXTURE_WRAP_S = 0x2802;
        public static uint GL_TEXTURE_WRAP_T = 0x2803;
        public static uint GL_ABGR_EXT = 0x8000;
        public static uint GL_ALPHA = 0x1906;
        public static uint GL_BLUE = 0x1905;
        public static uint GL_CMYKA_EXT = 0x800D;
        public static uint GL_CMYK_EXT = 0x800C;
        public static uint GL_DEPTH_COMPONENT = 0x1902;
        public static uint GL_GREEN = 0x1904;
        public static uint GL_RED = 0x1903;
        public static uint GL_RED_EXT = 0x1903;
        public static uint GL_RGB = 0x1907;
        public static uint GL_RGBA = 0x1908;
        public static uint GL_STENCIL_INDEX = 0x1901;
        public static uint GL_UNSIGNED_INT = 0x1405;
        public static uint GL_UNSIGNED_SHORT = 0x1403;
        public static uint GL_YCRCB_422_SGIX = 0x81BB;
        public static uint GL_YCRCB_444_SGIX = 0x81BC;
        public static uint GL_BYTE = 0x1400;
        public static uint GL_FLOAT = 0x1406;
        public static uint GL_INT = 0x1404;
        public static uint GL_SHORT = 0x1402;
        public static uint GL_UNSIGNED_BYTE = 0x1401;
        public static uint GL_UNSIGNED_BYTE_3_3_2 = 0x8032;
        public static uint GL_UNSIGNED_BYTE_3_3_2_EXT = 0x8032;
        public static uint GL_UNSIGNED_INT_10_10_10_2 = 0x8036;
        public static uint GL_UNSIGNED_INT_10_10_10_2_EXT = 0x8036;
        public static uint GL_UNSIGNED_INT_8_8_8_8 = 0x8035;
        public static uint GL_UNSIGNED_INT_8_8_8_8_EXT = 0x8035;
        public static uint GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033;
        public static uint GL_UNSIGNED_SHORT_4_4_4_4_EXT = 0x8033;
        public static uint GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034;
        public static uint GL_UNSIGNED_SHORT_5_5_5_1_EXT = 0x8034;
        public static uint GL_BACK_LEFT = 0x0402;
        public static uint GL_BACK_RIGHT = 0x0403;
        public static uint GL_FRONT_LEFT = 0x0400;
        public static uint GL_FRONT_RIGHT = 0x0401;
        public static uint GL_LEFT = 0x0406;
        public static uint GL_NONE = 0;
        public static uint GL_NONE_OES = 0;
        public static uint GL_RIGHT = 0x0407;
        public static uint GL_COLOR_BUFFER_BIT = 0x00004000;
        public static uint GL_COVERAGE_BUFFER_BIT_NV = 0x00008000;
        public static uint GL_DEPTH_BUFFER_BIT = 0x00000100;
        public static uint GL_STENCIL_BUFFER_BIT = 0x00000400;
        public static uint GL_FALSE = 0;
        public static uint GL_TRUE = 1;
        public static uint GL_ASYNC_DRAW_PIXELS_SGIX = 0x835D;
        public static uint GL_ASYNC_HISTOGRAM_SGIX = 0x832C;
        public static uint GL_ASYNC_READ_PIXELS_SGIX = 0x835E;
        public static uint GL_ASYNC_TEX_IMAGE_SGIX = 0x835C;
        public static uint GL_BLEND = 0x0BE2;
        public static uint GL_CALLIGRAPHIC_FRAGMENT_SGIX = 0x8183;
        public static uint GL_COLOR_LOGIC_OP = 0x0BF2;
        public static uint GL_COLOR_TABLE_SGI = 0x80D0;
        public static uint GL_CONVOLUTION_1D_EXT = 0x8010;
        public static uint GL_CONVOLUTION_2D_EXT = 0x8011;
        public static uint GL_CULL_FACE = 0x0B44;
        public static uint GL_DEPTH_TEST = 0x0B71;
        public static uint GL_DITHER = 0x0BD0;
        public static uint GL_FOG_OFFSET_SGIX = 0x8198;
        public static uint GL_FRAGMENT_COLOR_MATERIAL_SGIX = 0x8401;
        public static uint GL_FRAGMENT_LIGHT0_SGIX = 0x840C;
        public static uint GL_FRAGMENT_LIGHT1_SGIX = 0x840D;
        public static uint GL_FRAGMENT_LIGHT2_SGIX = 0x840E;
        public static uint GL_FRAGMENT_LIGHT3_SGIX = 0x840F;
        public static uint GL_FRAGMENT_LIGHT4_SGIX = 0x8410;
        public static uint GL_FRAGMENT_LIGHT5_SGIX = 0x8411;
        public static uint GL_FRAGMENT_LIGHT6_SGIX = 0x8412;
        public static uint GL_FRAGMENT_LIGHT7_SGIX = 0x8413;
        public static uint GL_FRAGMENT_LIGHTING_SGIX = 0x8400;
        public static uint GL_FRAMEZOOM_SGIX = 0x818B;
        public static uint GL_HISTOGRAM_EXT = 0x8024;
        public static uint GL_INTERLACE_SGIX = 0x8094;
        public static uint GL_IR_INSTRUMENT1_SGIX = 0x817F;
        public static uint GL_LINE_SMOOTH = 0x0B20;
        public static uint GL_MINMAX_EXT = 0x802E;
        public static uint GL_MULTISAMPLE_SGIS = 0x809D;
        public static uint GL_PIXEL_TEXTURE_SGIS = 0x8353;
        public static uint GL_PIXEL_TEX_GEN_SGIX = 0x8139;
        public static uint GL_POLYGON_OFFSET_FILL = 0x8037;
        public static uint GL_POLYGON_OFFSET_LINE = 0x2A02;
        public static uint GL_POLYGON_OFFSET_POINT = 0x2A01;
        public static uint GL_POLYGON_SMOOTH = 0x0B41;
        public static uint GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D2;
        public static uint GL_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D1;
        public static uint GL_REFERENCE_PLANE_SGIX = 0x817D;
        public static uint GL_RESCALE_NORMAL_EXT = 0x803A;
        public static uint GL_SAMPLE_ALPHA_TO_MASK_SGIS = 0x809E;
        public static uint GL_SAMPLE_ALPHA_TO_ONE_SGIS = 0x809F;
        public static uint GL_SAMPLE_MASK_SGIS = 0x80A0;
        public static uint GL_SCISSOR_TEST = 0x0C11;
        public static uint GL_SEPARABLE_2D_EXT = 0x8012;
        public static uint GL_SHARED_TEXTURE_PALETTE_EXT = 0x81FB;
        public static uint GL_SPRITE_SGIX = 0x8148;
        public static uint GL_STENCIL_TEST = 0x0B90;
        public static uint GL_TEXTURE_COLOR_TABLE_SGI = 0x80BC;
        public static uint GL_CONSTANT_ALPHA_EXT = 0x8003;
        public static uint GL_CONSTANT_COLOR_EXT = 0x8001;
        public static uint GL_DST_ALPHA = 0x0304;
        public static uint GL_DST_COLOR = 0x0306;
        public static uint GL_ONE = 1;
        public static uint GL_ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004;
        public static uint GL_ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002;
        public static uint GL_ONE_MINUS_DST_ALPHA = 0x0305;
        public static uint GL_ONE_MINUS_DST_COLOR = 0x0307;
        public static uint GL_ONE_MINUS_SRC_ALPHA = 0x0303;
        public static uint GL_SRC_ALPHA = 0x0302;
        public static uint GL_SRC_ALPHA_SATURATE = 0x0308;
        public static uint GL_ZERO = 0;
        public static uint GL_ONE_MINUS_SRC_COLOR = 0x0301;
        public static uint GL_SRC_COLOR = 0x0300;
        public static uint GL_AND = 0x1501;
        public static uint GL_AND_INVERTED = 0x1504;
        public static uint GL_AND_REVERSE = 0x1502;
        public static uint GL_CLEAR = 0x1500;
        public static uint GL_COPY = 0x1503;
        public static uint GL_COPY_INVERTED = 0x150C;
        public static uint GL_EQUIV = 0x1509;
        public static uint GL_INVERT = 0x150A;
        public static uint GL_NAND = 0x150E;
        public static uint GL_NOOP = 0x1505;
        public static uint GL_NOR = 0x1508;
        public static uint GL_OR = 0x1507;
        public static uint GL_OR_INVERTED = 0x150D;
        public static uint GL_OR_REVERSE = 0x150B;
        public static uint GL_SET = 0x150F;
        public static uint GL_XOR = 0x1506;
        public static uint GL_ALWAYS = 0x0207;
        public static uint GL_EQUAL = 0x0202;
        public static uint GL_GEQUAL = 0x0206;
        public static uint GL_GREATER = 0x0204;
        public static uint GL_LEQUAL = 0x0203;
        public static uint GL_LESS = 0x0201;
        public static uint GL_NEVER = 0x0200;
        public static uint GL_NOTEQUAL = 0x0205;
        public static uint GL_DECR = 0x1E03;
        public static uint GL_INCR = 0x1E02;
        public static uint GL_KEEP = 0x1E00;
        public static uint GL_REPLACE = 0x1E01;
        public static uint GL_PACK_ALIGNMENT = 0x0D05;
        public static uint GL_PACK_IMAGE_DEPTH_SGIS = 0x8131;
        public static uint GL_PACK_IMAGE_HEIGHT = 0x806C;
        public static uint GL_PACK_IMAGE_HEIGHT_EXT = 0x806C;
        public static uint GL_PACK_LSB_FIRST = 0x0D01;
        public static uint GL_PACK_RESAMPLE_OML = 0x8984;
        public static uint GL_PACK_RESAMPLE_SGIX = 0x842C;
        public static uint GL_PACK_ROW_LENGTH = 0x0D02;
        public static uint GL_PACK_SKIP_IMAGES = 0x806B;
        public static uint GL_PACK_SKIP_IMAGES_EXT = 0x806B;
        public static uint GL_PACK_SKIP_PIXELS = 0x0D04;
        public static uint GL_PACK_SKIP_ROWS = 0x0D03;
        public static uint GL_PACK_SKIP_VOLUMES_SGIS = 0x8130;
        public static uint GL_PACK_SUBSAMPLE_RATE_SGIX = 0x85A0;
        public static uint GL_PACK_SWAP_BYTES = 0x0D00;
        public static uint GL_PIXEL_TILE_CACHE_SIZE_SGIX = 0x8145;
        public static uint GL_PIXEL_TILE_GRID_DEPTH_SGIX = 0x8144;
        public static uint GL_PIXEL_TILE_GRID_HEIGHT_SGIX = 0x8143;
        public static uint GL_PIXEL_TILE_GRID_WIDTH_SGIX = 0x8142;
        public static uint GL_PIXEL_TILE_HEIGHT_SGIX = 0x8141;
        public static uint GL_PIXEL_TILE_WIDTH_SGIX = 0x8140;
        public static uint GL_UNPACK_ALIGNMENT = 0x0CF5;
        public static uint GL_UNPACK_IMAGE_DEPTH_SGIS = 0x8133;
        public static uint GL_UNPACK_IMAGE_HEIGHT = 0x806E;
        public static uint GL_UNPACK_IMAGE_HEIGHT_EXT = 0x806E;
        public static uint GL_UNPACK_LSB_FIRST = 0x0CF1;
        public static uint GL_UNPACK_RESAMPLE_OML = 0x8985;
        public static uint GL_UNPACK_RESAMPLE_SGIX = 0x842D;
        public static uint GL_UNPACK_ROW_LENGTH = 0x0CF2;
        public static uint GL_UNPACK_ROW_LENGTH_EXT = 0x0CF2;
        public static uint GL_UNPACK_SKIP_IMAGES = 0x806D;
        public static uint GL_UNPACK_SKIP_IMAGES_EXT = 0x806D;
        public static uint GL_UNPACK_SKIP_PIXELS = 0x0CF4;
        public static uint GL_UNPACK_SKIP_PIXELS_EXT = 0x0CF4;
        public static uint GL_UNPACK_SKIP_ROWS = 0x0CF3;
        public static uint GL_UNPACK_SKIP_ROWS_EXT = 0x0CF3;
        public static uint GL_UNPACK_SKIP_VOLUMES_SGIS = 0x8132;
        public static uint GL_UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1;
        public static uint GL_UNPACK_SWAP_BYTES = 0x0CF0;
        public static uint GL_ALIASED_LINE_WIDTH_RANGE = 0x846E;
        public static uint GL_ALPHA_TEST_FUNC_QCOM = 0x0BC1;
        public static uint GL_ALPHA_TEST_QCOM = 0x0BC0;
        public static uint GL_ALPHA_TEST_REF_QCOM = 0x0BC2;
        public static uint GL_ASYNC_MARKER_SGIX = 0x8329;
        public static uint GL_BLEND_COLOR_EXT = 0x8005;
        public static uint GL_BLEND_DST = 0x0BE0;
        public static uint GL_BLEND_EQUATION_EXT = 0x8009;
        public static uint GL_BLEND_SRC = 0x0BE1;
        public static uint GL_COLOR_ARRAY_COUNT_EXT = 0x8084;
        public static uint GL_COLOR_CLEAR_VALUE = 0x0C22;
        public static uint GL_COLOR_MATRIX_SGI = 0x80B1;
        public static uint GL_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B2;
        public static uint GL_COLOR_WRITEMASK = 0x0C23;
        public static uint GL_CULL_FACE_MODE = 0x0B45;
        public static uint GL_DEFORMATIONS_MASK_SGIX = 0x8196;
        public static uint GL_DEPTH_CLEAR_VALUE = 0x0B73;
        public static uint GL_DEPTH_FUNC = 0x0B74;
        public static uint GL_DEPTH_RANGE = 0x0B70;
        public static uint GL_DEPTH_WRITEMASK = 0x0B72;
        public static uint GL_DETAIL_TEXTURE_2D_BINDING_SGIS = 0x8096;
        public static uint GL_DISTANCE_ATTENUATION_SGIS = 0x8129;
        public static uint GL_DOUBLEBUFFER = 0x0C32;
        public static uint GL_DRAW_BUFFER = 0x0C01;
        public static uint GL_DRAW_BUFFER_EXT = 0x0C01;
        public static uint GL_EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D;
        public static uint GL_FOG_FUNC_POINTS_SGIS = 0x812B;
        public static uint GL_FOG_OFFSET_VALUE_SGIX = 0x8199;
        public static uint GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x8402;
        public static uint GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x8403;
        public static uint GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x840A;
        public static uint GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x8408;
        public static uint GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x840B;
        public static uint GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x8409;
        public static uint GL_FRAMEZOOM_FACTOR_SGIX = 0x818C;
        public static uint GL_FRONT_FACE = 0x0B46;
        public static uint GL_INDEX_ARRAY_COUNT_EXT = 0x8087;
        public static uint GL_INSTRUMENT_MEASUREMENTS_SGIX = 0x8181;
        public static uint GL_LIGHT_ENV_MODE_SGIX = 0x8407;
        public static uint GL_LINE_WIDTH = 0x0B21;
        public static uint GL_LINE_WIDTH_GRANULARITY = 0x0B23;
        public static uint GL_LINE_WIDTH_RANGE = 0x0B22;
        public static uint GL_LOGIC_OP_MODE = 0x0BF0;
        public static uint GL_MAX_3D_TEXTURE_SIZE_EXT = 0x8073;
        public static uint GL_MAX_4D_TEXTURE_SIZE_SGIS = 0x8138;
        public static uint GL_MAX_ACTIVE_LIGHTS_SGIX = 0x8405;
        public static uint GL_MAX_ASYNC_DRAW_PIXELS_SGIX = 0x8360;
        public static uint GL_MAX_ASYNC_HISTOGRAM_SGIX = 0x832D;
        public static uint GL_MAX_ASYNC_READ_PIXELS_SGIX = 0x8361;
        public static uint GL_MAX_ASYNC_TEX_IMAGE_SGIX = 0x835F;
        public static uint GL_MAX_CLIPMAP_DEPTH_SGIX = 0x8177;
        public static uint GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8178;
        public static uint GL_MAX_CLIP_DISTANCES = 0x0D32;
        public static uint GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B3;
        public static uint GL_MAX_FOG_FUNC_POINTS_SGIS = 0x812C;
        public static uint GL_MAX_FRAGMENT_LIGHTS_SGIX = 0x8404;
        public static uint GL_MAX_FRAMEZOOM_FACTOR_SGIX = 0x818D;
        public static uint GL_MAX_TEXTURE_SIZE = 0x0D33;
        public static uint GL_MAX_VIEWPORT_DIMS = 0x0D3A;
        public static uint GL_MODELVIEW0_MATRIX_EXT = 0x0BA6;
        public static uint GL_MODELVIEW0_STACK_DEPTH_EXT = 0x0BA3;
        public static uint GL_NORMAL_ARRAY_COUNT_EXT = 0x8080;
        public static uint GL_PIXEL_TEX_GEN_MODE_SGIX = 0x832B;
        public static uint GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x813E;
        public static uint GL_PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x813F;
        public static uint GL_POINT_FADE_THRESHOLD_SIZE_SGIS = 0x8128;
        public static uint GL_POINT_SIZE = 0x0B11;
        public static uint GL_POINT_SIZE_GRANULARITY = 0x0B13;
        public static uint GL_POINT_SIZE_MAX_SGIS = 0x8127;
        public static uint GL_POINT_SIZE_MIN_SGIS = 0x8126;
        public static uint GL_POINT_SIZE_RANGE = 0x0B12;
        public static uint GL_POLYGON_MODE = 0x0B40;
        public static uint GL_POLYGON_OFFSET_BIAS_EXT = 0x8039;
        public static uint GL_POLYGON_OFFSET_FACTOR = 0x8038;
        public static uint GL_POLYGON_OFFSET_UNITS = 0x2A00;
        public static uint GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x80BB;
        public static uint GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x80B7;
        public static uint GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x80BA;
        public static uint GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x80B6;
        public static uint GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x80B9;
        public static uint GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x80B5;
        public static uint GL_POST_COLOR_MATRIX_RED_BIAS_SGI = 0x80B8;
        public static uint GL_POST_COLOR_MATRIX_RED_SCALE_SGI = 0x80B4;
        public static uint GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x8023;
        public static uint GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x801F;
        public static uint GL_POST_CONVOLUTION_BLUE_BIAS_EXT = 0x8022;
        public static uint GL_POST_CONVOLUTION_BLUE_SCALE_EXT = 0x801E;
        public static uint GL_POST_CONVOLUTION_GREEN_BIAS_EXT = 0x8021;
        public static uint GL_POST_CONVOLUTION_GREEN_SCALE_EXT = 0x801D;
        public static uint GL_POST_CONVOLUTION_RED_BIAS_EXT = 0x8020;
        public static uint GL_POST_CONVOLUTION_RED_SCALE_EXT = 0x801C;
        public static uint GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x817B;
        public static uint GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x817C;
        public static uint GL_READ_BUFFER = 0x0C02;
        public static uint GL_READ_BUFFER_EXT = 0x0C02;
        public static uint GL_READ_BUFFER_NV = 0x0C02;
        public static uint GL_REFERENCE_PLANE_EQUATION_SGIX = 0x817E;
        public static uint GL_SAMPLES_SGIS = 0x80A9;
        public static uint GL_SAMPLE_BUFFERS_SGIS = 0x80A8;
        public static uint GL_SAMPLE_MASK_INVERT_SGIS = 0x80AB;
        public static uint GL_SAMPLE_MASK_VALUE_SGIS = 0x80AA;
        public static uint GL_SAMPLE_PATTERN_SGIS = 0x80AC;
        public static uint GL_SCISSOR_BOX = 0x0C10;
        public static uint GL_SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23;
        public static uint GL_SMOOTH_LINE_WIDTH_RANGE = 0x0B22;
        public static uint GL_SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13;
        public static uint GL_SMOOTH_POINT_SIZE_RANGE = 0x0B12;
        public static uint GL_SPRITE_AXIS_SGIX = 0x814A;
        public static uint GL_SPRITE_MODE_SGIX = 0x8149;
        public static uint GL_SPRITE_TRANSLATION_SGIX = 0x814B;
        public static uint GL_STENCIL_CLEAR_VALUE = 0x0B91;
        public static uint GL_STENCIL_FAIL = 0x0B94;
        public static uint GL_STENCIL_FUNC = 0x0B92;
        public static uint GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95;
        public static uint GL_STENCIL_PASS_DEPTH_PASS = 0x0B96;
        public static uint GL_STENCIL_REF = 0x0B97;
        public static uint GL_STENCIL_VALUE_MASK = 0x0B93;
        public static uint GL_STENCIL_WRITEMASK = 0x0B98;
        public static uint GL_STEREO = 0x0C33;
        public static uint GL_SUBPIXEL_BITS = 0x0D50;
        public static uint GL_TEXTURE_3D_BINDING_EXT = 0x806A;
        public static uint GL_TEXTURE_4D_BINDING_SGIS = 0x814F;
        public static uint GL_TEXTURE_BINDING_1D = 0x8068;
        public static uint GL_TEXTURE_BINDING_2D = 0x8069;
        public static uint GL_TEXTURE_BINDING_3D = 0x806A;
        public static uint GL_TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B;
        public static uint GL_VERTEX_ARRAY_COUNT_EXT = 0x807D;
        public static uint GL_VIEWPORT = 0x0BA2;
        public static uint GL_EXTENSIONS = 0x1F03;
        public static uint GL_RENDERER = 0x1F01;
        public static uint GL_VENDOR = 0x1F00;
        public static uint GL_VERSION = 0x1F02;
        public static uint GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x809C;
        public static uint GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x80B0;
        public static uint GL_TEXTURE_4DSIZE_SGIS = 0x8136;
        public static uint GL_TEXTURE_ALPHA_SIZE = 0x805F;
        public static uint GL_TEXTURE_BLUE_SIZE = 0x805E;
        public static uint GL_TEXTURE_BORDER_COLOR_NV = 0x1004;
        public static uint GL_TEXTURE_COMPARE_OPERATOR_SGIX = 0x819B;
        public static uint GL_TEXTURE_DEPTH_EXT = 0x8071;
        public static uint GL_TEXTURE_FILTER4_SIZE_SGIS = 0x8147;
        public static uint GL_TEXTURE_GEQUAL_R_SGIX = 0x819D;
        public static uint GL_TEXTURE_GREEN_SIZE = 0x805D;
        public static uint GL_TEXTURE_HEIGHT = 0x1001;
        public static uint GL_TEXTURE_INTERNAL_FORMAT = 0x1003;
        public static uint GL_TEXTURE_LEQUAL_R_SGIX = 0x819C;
        public static uint GL_TEXTURE_RED_SIZE = 0x805C;
        public static uint GL_TEXTURE_WIDTH = 0x1000;
        public static uint GL_LINES = 0x0001;
        public static uint GL_LINES_ADJACENCY = 0x000A;
        public static uint GL_LINES_ADJACENCY_ARB = 0x000A;
        public static uint GL_LINES_ADJACENCY_EXT = 0x000A;
        public static uint GL_LINE_LOOP = 0x0002;
        public static uint GL_LINE_STRIP = 0x0003;
        public static uint GL_LINE_STRIP_ADJACENCY = 0x000B;
        public static uint GL_LINE_STRIP_ADJACENCY_ARB = 0x000B;
        public static uint GL_LINE_STRIP_ADJACENCY_EXT = 0x000B;
        public static uint GL_PATCHES = 0x000E;
        public static uint GL_POINTS = 0x0000;
        public static uint GL_TRIANGLES = 0x0004;
        public static uint GL_TRIANGLES_ADJACENCY = 0x000C;
        public static uint GL_TRIANGLES_ADJACENCY_ARB = 0x000C;
        public static uint GL_TRIANGLES_ADJACENCY_EXT = 0x000C;
        public static uint GL_TRIANGLE_FAN = 0x0006;
        public static uint GL_TRIANGLE_STRIP = 0x0005;
        public static uint GL_TRIANGLE_STRIP_ADJACENCY = 0x000D;
        public static uint GL_TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D;
        public static uint GL_TRIANGLE_STRIP_ADJACENCY_EXT = 0x000D;
        public static uint GL_CLIP_DISTANCE0 = 0x3000;
        public static uint GL_CLIP_DISTANCE1 = 0x3001;
        public static uint GL_CLIP_DISTANCE2 = 0x3002;
        public static uint GL_CLIP_DISTANCE3 = 0x3003;
        public static uint GL_CLIP_DISTANCE4 = 0x3004;
        public static uint GL_CLIP_DISTANCE5 = 0x3005;
        public static uint GL_CLIP_DISTANCE6 = 0x3006;
        public static uint GL_CLIP_DISTANCE7 = 0x3007;
        public static uint GL_LIGHT_MODEL_COLOR_CONTROL_EXT = 0x81F8;
        public static uint GL_EYE_LINE_SGIS = 0x81F6;
        public static uint GL_EYE_POINT_SGIS = 0x81F4;
        public static uint GL_OBJECT_LINE_SGIS = 0x81F7;
        public static uint GL_OBJECT_POINT_SGIS = 0x81F5;
        public static uint GL_MULTISAMPLE_BIT_3DFX = 0x20000000;
        public static uint GL_MULTISAMPLE_BIT_ARB = 0x20000000;
        public static uint GL_MULTISAMPLE_BIT_EXT = 0x20000000;
        public static uint GL_GEOMETRY_DEFORMATION_SGIX = 0x8194;
        public static uint GL_TEXTURE_DEFORMATION_SGIX = 0x8195;
        public static uint GL_POST_COLOR_MATRIX_ALPHA_BIAS = 0x80BB;
        public static uint GL_POST_COLOR_MATRIX_ALPHA_SCALE = 0x80B7;
        public static uint GL_POST_COLOR_MATRIX_BLUE_BIAS = 0x80BA;
        public static uint GL_POST_COLOR_MATRIX_BLUE_SCALE = 0x80B6;
        public static uint GL_POST_COLOR_MATRIX_GREEN_BIAS = 0x80B9;
        public static uint GL_POST_COLOR_MATRIX_GREEN_SCALE = 0x80B5;
        public static uint GL_POST_COLOR_MATRIX_RED_BIAS = 0x80B8;
        public static uint GL_POST_COLOR_MATRIX_RED_SCALE = 0x80B4;
        public static uint GL_POST_CONVOLUTION_ALPHA_BIAS = 0x8023;
        public static uint GL_POST_CONVOLUTION_ALPHA_SCALE = 0x801F;
        public static uint GL_POST_CONVOLUTION_BLUE_BIAS = 0x8022;
        public static uint GL_POST_CONVOLUTION_BLUE_SCALE = 0x801E;
        public static uint GL_POST_CONVOLUTION_GREEN_BIAS = 0x8021;
        public static uint GL_POST_CONVOLUTION_GREEN_SCALE = 0x801D;
        public static uint GL_POST_CONVOLUTION_RED_BIAS = 0x8020;
        public static uint GL_POST_CONVOLUTION_RED_SCALE = 0x801C;
        public static uint GL_COLOR = 0x1800;
        public static uint GL_COLOR_EXT = 0x1800;
        public static uint GL_DEPTH = 0x1801;
        public static uint GL_DEPTH_EXT = 0x1801;
        public static uint GL_STENCIL = 0x1802;
        public static uint GL_STENCIL_EXT = 0x1802;
        public static uint GL_MODELVIEW0_EXT = 0x1700;
        public static uint GL_TEXTURE = 0x1702;
        public static uint GL_NO_ERROR = 0;
        public static uint GL_INVALID_ENUM = 0x0500;
        public static uint GL_INVALID_VALUE = 0x0501;
        public static uint GL_INVALID_OPERATION = 0x0502;
        public static uint GL_OUT_OF_MEMORY = 0x0505;
        public static uint GL_DOUBLE = 0x140A;
        public static uint GL_NEAREST = 0x2600;
        public static uint GL_LINEAR = 0x2601;
        public static uint GL_NEAREST_MIPMAP_NEAREST = 0x2700;
        public static uint GL_LINEAR_MIPMAP_NEAREST = 0x2701;
        public static uint GL_NEAREST_MIPMAP_LINEAR = 0x2702;
        public static uint GL_LINEAR_MIPMAP_LINEAR = 0x2703;
        public static uint GL_REPEAT = 0x2901;
        public static uint GL_R3_G3_B2 = 0x2A10;
        public static uint GL_RGB4 = 0x804F;
        public static uint GL_RGB5 = 0x8050;
        public static uint GL_RGB8 = 0x8051;
        public static uint GL_RGB10 = 0x8052;
        public static uint GL_RGB12 = 0x8053;
        public static uint GL_RGB16 = 0x8054;
        public static uint GL_RGBA2 = 0x8055;
        public static uint GL_RGBA4 = 0x8056;
        public static uint GL_RGB5_A1 = 0x8057;
        public static uint GL_RGBA8 = 0x8058;
        public static uint GL_RGB10_A2 = 0x8059;
        public static uint GL_RGBA12 = 0x805A;
        public static uint GL_RGBA16 = 0x805B;
        public static uint GL_TEXTURE_DEPTH = 0x8071;
        public static uint GL_MAX_3D_TEXTURE_SIZE = 0x8073;
        public static uint GL_UNSIGNED_BYTE_2_3_3_REV = 0x8362;
        public static uint GL_UNSIGNED_SHORT_5_6_5 = 0x8363;
        public static uint GL_UNSIGNED_SHORT_5_6_5_REV = 0x8364;
        public static uint GL_UNSIGNED_SHORT_4_4_4_4_REV = 0x8365;
        public static uint GL_UNSIGNED_SHORT_1_5_5_5_REV = 0x8366;
        public static uint GL_UNSIGNED_INT_8_8_8_8_REV = 0x8367;
        public static uint GL_UNSIGNED_INT_2_10_10_10_REV = 0x8368;
        public static uint GL_BGR = 0x80E0;
        public static uint GL_BGRA = 0x80E1;
        public static uint GL_MAX_ELEMENTS_VERTICES = 0x80E8;
        public static uint GL_MAX_ELEMENTS_INDICES = 0x80E9;
        public static uint GL_CLAMP_TO_EDGE = 0x812F;
        public static uint GL_TEXTURE0 = 0x84C0;
        public static uint GL_TEXTURE1 = 0x84C1;
        public static uint GL_TEXTURE2 = 0x84C2;
        public static uint GL_TEXTURE3 = 0x84C3;
        public static uint GL_TEXTURE4 = 0x84C4;
        public static uint GL_TEXTURE5 = 0x84C5;
        public static uint GL_TEXTURE6 = 0x84C6;
        public static uint GL_TEXTURE7 = 0x84C7;
        public static uint GL_TEXTURE8 = 0x84C8;
        public static uint GL_TEXTURE9 = 0x84C9;
        public static uint GL_TEXTURE10 = 0x84CA;
        public static uint GL_TEXTURE11 = 0x84CB;
        public static uint GL_TEXTURE12 = 0x84CC;
        public static uint GL_TEXTURE13 = 0x84CD;
        public static uint GL_TEXTURE14 = 0x84CE;
        public static uint GL_TEXTURE15 = 0x84CF;
        public static uint GL_TEXTURE16 = 0x84D0;
        public static uint GL_TEXTURE17 = 0x84D1;
        public static uint GL_TEXTURE18 = 0x84D2;
        public static uint GL_TEXTURE19 = 0x84D3;
        public static uint GL_TEXTURE20 = 0x84D4;
        public static uint GL_TEXTURE21 = 0x84D5;
        public static uint GL_TEXTURE22 = 0x84D6;
        public static uint GL_TEXTURE23 = 0x84D7;
        public static uint GL_TEXTURE24 = 0x84D8;
        public static uint GL_TEXTURE25 = 0x84D9;
        public static uint GL_TEXTURE26 = 0x84DA;
        public static uint GL_TEXTURE27 = 0x84DB;
        public static uint GL_TEXTURE28 = 0x84DC;
        public static uint GL_TEXTURE29 = 0x84DD;
        public static uint GL_TEXTURE30 = 0x84DE;
        public static uint GL_TEXTURE31 = 0x84DF;
        public static uint GL_ACTIVE_TEXTURE = 0x84E0;
        public static uint GL_MULTISAMPLE = 0x809D;
        public static uint GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
        public static uint GL_SAMPLE_ALPHA_TO_ONE = 0x809F;
        public static uint GL_SAMPLE_COVERAGE = 0x80A0;
        public static uint GL_SAMPLE_BUFFERS = 0x80A8;
        public static uint GL_SAMPLES = 0x80A9;
        public static uint GL_SAMPLE_COVERAGE_VALUE = 0x80AA;
        public static uint GL_SAMPLE_COVERAGE_INVERT = 0x80AB;
        public static uint GL_TEXTURE_CUBE_MAP = 0x8513;
        public static uint GL_TEXTURE_BINDING_CUBE_MAP = 0x8514;
        public static uint GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
        public static uint GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
        public static uint GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
        public static uint GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
        public static uint GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
        public static uint GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
        public static uint GL_PROXY_TEXTURE_CUBE_MAP = 0x851B;
        public static uint GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
        public static uint GL_COMPRESSED_RGB = 0x84ED;
        public static uint GL_COMPRESSED_RGBA = 0x84EE;
        public static uint GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0;
        public static uint GL_TEXTURE_COMPRESSED = 0x86A1;
        public static uint GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2;
        public static uint GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3;
        public static uint GL_CLAMP_TO_BORDER = 0x812D;
        public static uint GL_BLEND_DST_RGB = 0x80C8;
        public static uint GL_BLEND_SRC_RGB = 0x80C9;
        public static uint GL_BLEND_DST_ALPHA = 0x80CA;
        public static uint GL_BLEND_SRC_ALPHA = 0x80CB;
        public static uint GL_POINT_FADE_THRESHOLD_SIZE = 0x8128;
        public static uint GL_DEPTH_COMPONENT16 = 0x81A5;
        public static uint GL_DEPTH_COMPONENT24 = 0x81A6;
        public static uint GL_DEPTH_COMPONENT32 = 0x81A7;
        public static uint GL_MIRRORED_REPEAT = 0x8370;
        public static uint GL_MAX_TEXTURE_LOD_BIAS = 0x84FD;
        public static uint GL_TEXTURE_LOD_BIAS = 0x8501;
        public static uint GL_INCR_WRAP = 0x8507;
        public static uint GL_DECR_WRAP = 0x8508;
        public static uint GL_TEXTURE_DEPTH_SIZE = 0x884A;
        public static uint GL_TEXTURE_COMPARE_MODE = 0x884C;
        public static uint GL_TEXTURE_COMPARE_FUNC = 0x884D;
        public static uint GL_FUNC_ADD = 0x8006;
        public static uint GL_FUNC_SUBTRACT = 0x800A;
        public static uint GL_FUNC_REVERSE_SUBTRACT = 0x800B;
        public static uint GL_MIN = 0x8007;
        public static uint GL_MAX = 0x8008;
        public static uint GL_CONSTANT_COLOR = 0x8001;
        public static uint GL_ONE_MINUS_CONSTANT_COLOR = 0x8002;
        public static uint GL_CONSTANT_ALPHA = 0x8003;
        public static uint GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004;
        public static uint GL_BUFFER_SIZE = 0x8764;
        public static uint GL_BUFFER_USAGE = 0x8765;
        public static uint GL_QUERY_COUNTER_BITS = 0x8864;
        public static uint GL_CURRENT_QUERY = 0x8865;
        public static uint GL_QUERY_RESULT = 0x8866;
        public static uint GL_QUERY_RESULT_AVAILABLE = 0x8867;
        public static uint GL_ARRAY_BUFFER = 0x8892;
        public static uint GL_ELEMENT_ARRAY_BUFFER = 0x8893;
        public static uint GL_ARRAY_BUFFER_BINDING = 0x8894;
        public static uint GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
        public static uint GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
        public static uint GL_READ_ONLY = 0x88B8;
        public static uint GL_WRITE_ONLY = 0x88B9;
        public static uint GL_READ_WRITE = 0x88BA;
        public static uint GL_BUFFER_ACCESS = 0x88BB;
        public static uint GL_BUFFER_MAPPED = 0x88BC;
        public static uint GL_BUFFER_MAP_POINTER = 0x88BD;
        public static uint GL_STREAM_DRAW = 0x88E0;
        public static uint GL_STREAM_READ = 0x88E1;
        public static uint GL_STREAM_COPY = 0x88E2;
        public static uint GL_STATIC_DRAW = 0x88E4;
        public static uint GL_STATIC_READ = 0x88E5;
        public static uint GL_STATIC_COPY = 0x88E6;
        public static uint GL_DYNAMIC_DRAW = 0x88E8;
        public static uint GL_DYNAMIC_READ = 0x88E9;
        public static uint GL_DYNAMIC_COPY = 0x88EA;
        public static uint GL_SAMPLES_PASSED = 0x8914;
        public static uint GL_SRC1_ALPHA = 0x8589;
        public static uint GL_BLEND_EQUATION_RGB = 0x8009;
        public static uint GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
        public static uint GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
        public static uint GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
        public static uint GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
        public static uint GL_CURRENT_VERTEX_ATTRIB = 0x8626;
        public static uint GL_VERTEX_PROGRAM_POINT_SIZE = 0x8642;
        public static uint GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
        public static uint GL_STENCIL_BACK_FUNC = 0x8800;
        public static uint GL_STENCIL_BACK_FAIL = 0x8801;
        public static uint GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
        public static uint GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
        public static uint GL_MAX_DRAW_BUFFERS = 0x8824;
        public static uint GL_DRAW_BUFFER0 = 0x8825;
        public static uint GL_DRAW_BUFFER1 = 0x8826;
        public static uint GL_DRAW_BUFFER2 = 0x8827;
        public static uint GL_DRAW_BUFFER3 = 0x8828;
        public static uint GL_DRAW_BUFFER4 = 0x8829;
        public static uint GL_DRAW_BUFFER5 = 0x882A;
        public static uint GL_DRAW_BUFFER6 = 0x882B;
        public static uint GL_DRAW_BUFFER7 = 0x882C;
        public static uint GL_DRAW_BUFFER8 = 0x882D;
        public static uint GL_DRAW_BUFFER9 = 0x882E;
        public static uint GL_DRAW_BUFFER10 = 0x882F;
        public static uint GL_DRAW_BUFFER11 = 0x8830;
        public static uint GL_DRAW_BUFFER12 = 0x8831;
        public static uint GL_DRAW_BUFFER13 = 0x8832;
        public static uint GL_DRAW_BUFFER14 = 0x8833;
        public static uint GL_DRAW_BUFFER15 = 0x8834;
        public static uint GL_BLEND_EQUATION_ALPHA = 0x883D;
        public static uint GL_MAX_VERTEX_ATTRIBS = 0x8869;
        public static uint GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
        public static uint GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872;
        public static uint GL_FRAGMENT_SHADER = 0x8B30;
        public static uint GL_VERTEX_SHADER = 0x8B31;
        public static uint GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49;
        public static uint GL_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A;
        public static uint GL_MAX_VARYING_FLOATS = 0x8B4B;
        public static uint GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
        public static uint GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
        public static uint GL_SHADER_TYPE = 0x8B4F;
        public static uint GL_FLOAT_VEC2 = 0x8B50;
        public static uint GL_FLOAT_VEC3 = 0x8B51;
        public static uint GL_FLOAT_VEC4 = 0x8B52;
        public static uint GL_INT_VEC2 = 0x8B53;
        public static uint GL_INT_VEC3 = 0x8B54;
        public static uint GL_INT_VEC4 = 0x8B55;
        public static uint GL_BOOL = 0x8B56;
        public static uint GL_BOOL_VEC2 = 0x8B57;
        public static uint GL_BOOL_VEC3 = 0x8B58;
        public static uint GL_BOOL_VEC4 = 0x8B59;
        public static uint GL_FLOAT_MAT2 = 0x8B5A;
        public static uint GL_FLOAT_MAT3 = 0x8B5B;
        public static uint GL_FLOAT_MAT4 = 0x8B5C;
        public static uint GL_SAMPLER_1D = 0x8B5D;
        public static uint GL_SAMPLER_2D = 0x8B5E;
        public static uint GL_SAMPLER_3D = 0x8B5F;
        public static uint GL_SAMPLER_CUBE = 0x8B60;
        public static uint GL_SAMPLER_1D_SHADOW = 0x8B61;
        public static uint GL_SAMPLER_2D_SHADOW = 0x8B62;
        public static uint GL_DELETE_STATUS = 0x8B80;
        public static uint GL_COMPILE_STATUS = 0x8B81;
        public static uint GL_LINK_STATUS = 0x8B82;
        public static uint GL_VALIDATE_STATUS = 0x8B83;
        public static uint GL_INFO_LOG_LENGTH = 0x8B84;
        public static uint GL_ATTACHED_SHADERS = 0x8B85;
        public static uint GL_ACTIVE_UNIFORMS = 0x8B86;
        public static uint GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87;
        public static uint GL_SHADER_SOURCE_LENGTH = 0x8B88;
        public static uint GL_ACTIVE_ATTRIBUTES = 0x8B89;
        public static uint GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A;
        public static uint GL_SHADING_LANGUAGE_VERSION = 0x8B8C;
        public static uint GL_CURRENT_PROGRAM = 0x8B8D;
        public static uint GL_POINT_SPRITE_COORD_ORIGIN = 0x8CA0;
        public static uint GL_LOWER_LEFT = 0x8CA1;
        public static uint GL_UPPER_LEFT = 0x8CA2;
        public static uint GL_STENCIL_BACK_REF = 0x8CA3;
        public static uint GL_STENCIL_BACK_VALUE_MASK = 0x8CA4;
        public static uint GL_STENCIL_BACK_WRITEMASK = 0x8CA5;
        public static uint GL_PIXEL_PACK_BUFFER = 0x88EB;
        public static uint GL_PIXEL_UNPACK_BUFFER = 0x88EC;
        public static uint GL_PIXEL_PACK_BUFFER_BINDING = 0x88ED;
        public static uint GL_PIXEL_UNPACK_BUFFER_BINDING = 0x88EF;
        public static uint GL_FLOAT_MAT2x3 = 0x8B65;
        public static uint GL_FLOAT_MAT2x4 = 0x8B66;
        public static uint GL_FLOAT_MAT3x2 = 0x8B67;
        public static uint GL_FLOAT_MAT3x4 = 0x8B68;
        public static uint GL_FLOAT_MAT4x2 = 0x8B69;
        public static uint GL_FLOAT_MAT4x3 = 0x8B6A;
        public static uint GL_SRGB = 0x8C40;
        public static uint GL_SRGB8 = 0x8C41;
        public static uint GL_SRGB_ALPHA = 0x8C42;
        public static uint GL_SRGB8_ALPHA8 = 0x8C43;
        public static uint GL_COMPRESSED_SRGB = 0x8C48;
        public static uint GL_COMPRESSED_SRGB_ALPHA = 0x8C49;
        public static uint GL_COMPARE_REF_TO_TEXTURE = 0x884E;
        public static uint GL_MAJOR_VERSION = 0x821B;
        public static uint GL_MINOR_VERSION = 0x821C;
        public static uint GL_NUM_EXTENSIONS = 0x821D;
        public static uint GL_CONTEXT_FLAGS = 0x821E;
        public static uint GL_COMPRESSED_RED = 0x8225;
        public static uint GL_COMPRESSED_RG = 0x8226;
        public static uint GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001;
        public static uint GL_RGBA32F = 0x8814;
        public static uint GL_RGB32F = 0x8815;
        public static uint GL_RGBA16F = 0x881A;
        public static uint GL_RGB16F = 0x881B;
        public static uint GL_VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD;
        public static uint GL_MAX_ARRAY_TEXTURE_LAYERS = 0x88FF;
        public static uint GL_MIN_PROGRAM_TEXEL_OFFSET = 0x8904;
        public static uint GL_MAX_PROGRAM_TEXEL_OFFSET = 0x8905;
        public static uint GL_CLAMP_READ_COLOR = 0x891C;
        public static uint GL_FIXED_ONLY = 0x891D;
        public static uint GL_MAX_VARYING_COMPONENTS = 0x8B4B;
        public static uint GL_TEXTURE_1D_ARRAY = 0x8C18;
        public static uint GL_PROXY_TEXTURE_1D_ARRAY = 0x8C19;
        public static uint GL_TEXTURE_2D_ARRAY = 0x8C1A;
        public static uint GL_PROXY_TEXTURE_2D_ARRAY = 0x8C1B;
        public static uint GL_TEXTURE_BINDING_1D_ARRAY = 0x8C1C;
        public static uint GL_TEXTURE_BINDING_2D_ARRAY = 0x8C1D;
        public static uint GL_R11F_G11F_B10F = 0x8C3A;
        public static uint GL_UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B;
        public static uint GL_RGB9_E5 = 0x8C3D;
        public static uint GL_UNSIGNED_INT_5_9_9_9_REV = 0x8C3E;
        public static uint GL_TEXTURE_SHARED_SIZE = 0x8C3F;
        public static uint GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76;
        public static uint GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F;
        public static uint GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80;
        public static uint GL_TRANSFORM_FEEDBACK_VARYINGS = 0x8C83;
        public static uint GL_TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84;
        public static uint GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85;
        public static uint GL_PRIMITIVES_GENERATED = 0x8C87;
        public static uint GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88;
        public static uint GL_RASTERIZER_DISCARD = 0x8C89;
        public static uint GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A;
        public static uint GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B;
        public static uint GL_INTERLEAVED_ATTRIBS = 0x8C8C;
        public static uint GL_SEPARATE_ATTRIBS = 0x8C8D;
        public static uint GL_TRANSFORM_FEEDBACK_BUFFER = 0x8C8E;
        public static uint GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F;
        public static uint GL_RGBA32UI = 0x8D70;
        public static uint GL_RGB32UI = 0x8D71;
        public static uint GL_RGBA16UI = 0x8D76;
        public static uint GL_RGB16UI = 0x8D77;
        public static uint GL_RGBA8UI = 0x8D7C;
        public static uint GL_RGB8UI = 0x8D7D;
        public static uint GL_RGBA32I = 0x8D82;
        public static uint GL_RGB32I = 0x8D83;
        public static uint GL_RGBA16I = 0x8D88;
        public static uint GL_RGB16I = 0x8D89;
        public static uint GL_RGBA8I = 0x8D8E;
        public static uint GL_RGB8I = 0x8D8F;
        public static uint GL_RED_INTEGER = 0x8D94;
        public static uint GL_GREEN_INTEGER = 0x8D95;
        public static uint GL_BLUE_INTEGER = 0x8D96;
        public static uint GL_RGB_INTEGER = 0x8D98;
        public static uint GL_RGBA_INTEGER = 0x8D99;
        public static uint GL_BGR_INTEGER = 0x8D9A;
        public static uint GL_BGRA_INTEGER = 0x8D9B;
        public static uint GL_SAMPLER_1D_ARRAY = 0x8DC0;
        public static uint GL_SAMPLER_2D_ARRAY = 0x8DC1;
        public static uint GL_SAMPLER_1D_ARRAY_SHADOW = 0x8DC3;
        public static uint GL_SAMPLER_2D_ARRAY_SHADOW = 0x8DC4;
        public static uint GL_SAMPLER_CUBE_SHADOW = 0x8DC5;
        public static uint GL_UNSIGNED_INT_VEC2 = 0x8DC6;
        public static uint GL_UNSIGNED_INT_VEC3 = 0x8DC7;
        public static uint GL_UNSIGNED_INT_VEC4 = 0x8DC8;
        public static uint GL_INT_SAMPLER_1D = 0x8DC9;
        public static uint GL_INT_SAMPLER_2D = 0x8DCA;
        public static uint GL_INT_SAMPLER_3D = 0x8DCB;
        public static uint GL_INT_SAMPLER_CUBE = 0x8DCC;
        public static uint GL_INT_SAMPLER_1D_ARRAY = 0x8DCE;
        public static uint GL_INT_SAMPLER_2D_ARRAY = 0x8DCF;
        public static uint GL_UNSIGNED_INT_SAMPLER_1D = 0x8DD1;
        public static uint GL_UNSIGNED_INT_SAMPLER_2D = 0x8DD2;
        public static uint GL_UNSIGNED_INT_SAMPLER_3D = 0x8DD3;
        public static uint GL_UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4;
        public static uint GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6;
        public static uint GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7;
        public static uint GL_QUERY_WAIT = 0x8E13;
        public static uint GL_QUERY_NO_WAIT = 0x8E14;
        public static uint GL_QUERY_BY_REGION_WAIT = 0x8E15;
        public static uint GL_QUERY_BY_REGION_NO_WAIT = 0x8E16;
        public static uint GL_BUFFER_ACCESS_FLAGS = 0x911F;
        public static uint GL_BUFFER_MAP_LENGTH = 0x9120;
        public static uint GL_BUFFER_MAP_OFFSET = 0x9121;
        public static uint GL_DEPTH_COMPONENT32F = 0x8CAC;
        public static uint GL_DEPTH32F_STENCIL8 = 0x8CAD;
        public static uint GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD;
        public static uint GL_INVALID_FRAMEBUFFER_OPERATION = 0x0506;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217;
        public static uint GL_FRAMEBUFFER_DEFAULT = 0x8218;
        public static uint GL_FRAMEBUFFER_UNDEFINED = 0x8219;
        public static uint GL_DEPTH_STENCIL_ATTACHMENT = 0x821A;
        public static uint GL_MAX_RENDERBUFFER_SIZE = 0x84E8;
        public static uint GL_DEPTH_STENCIL = 0x84F9;
        public static uint GL_UNSIGNED_INT_24_8 = 0x84FA;
        public static uint GL_DEPTH24_STENCIL8 = 0x88F0;
        public static uint GL_TEXTURE_STENCIL_SIZE = 0x88F1;
        public static uint GL_TEXTURE_RED_TYPE = 0x8C10;
        public static uint GL_TEXTURE_GREEN_TYPE = 0x8C11;
        public static uint GL_TEXTURE_BLUE_TYPE = 0x8C12;
        public static uint GL_TEXTURE_ALPHA_TYPE = 0x8C13;
        public static uint GL_TEXTURE_DEPTH_TYPE = 0x8C16;
        public static uint GL_UNSIGNED_NORMALIZED = 0x8C17;
        public static uint GL_FRAMEBUFFER_BINDING = 0x8CA6;
        public static uint GL_DRAW_FRAMEBUFFER_BINDING = 0x8CA6;
        public static uint GL_RENDERBUFFER_BINDING = 0x8CA7;
        public static uint GL_READ_FRAMEBUFFER = 0x8CA8;
        public static uint GL_DRAW_FRAMEBUFFER = 0x8CA9;
        public static uint GL_READ_FRAMEBUFFER_BINDING = 0x8CAA;
        public static uint GL_RENDERBUFFER_SAMPLES = 0x8CAB;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4;
        public static uint GL_FRAMEBUFFER_COMPLETE = 0x8CD5;
        public static uint GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
        public static uint GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
        public static uint GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB;
        public static uint GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC;
        public static uint GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
        public static uint GL_MAX_COLOR_ATTACHMENTS = 0x8CDF;
        public static uint GL_COLOR_ATTACHMENT0 = 0x8CE0;
        public static uint GL_COLOR_ATTACHMENT1 = 0x8CE1;
        public static uint GL_COLOR_ATTACHMENT2 = 0x8CE2;
        public static uint GL_COLOR_ATTACHMENT3 = 0x8CE3;
        public static uint GL_COLOR_ATTACHMENT4 = 0x8CE4;
        public static uint GL_COLOR_ATTACHMENT5 = 0x8CE5;
        public static uint GL_COLOR_ATTACHMENT6 = 0x8CE6;
        public static uint GL_COLOR_ATTACHMENT7 = 0x8CE7;
        public static uint GL_COLOR_ATTACHMENT8 = 0x8CE8;
        public static uint GL_COLOR_ATTACHMENT9 = 0x8CE9;
        public static uint GL_COLOR_ATTACHMENT10 = 0x8CEA;
        public static uint GL_COLOR_ATTACHMENT11 = 0x8CEB;
        public static uint GL_COLOR_ATTACHMENT12 = 0x8CEC;
        public static uint GL_COLOR_ATTACHMENT13 = 0x8CED;
        public static uint GL_COLOR_ATTACHMENT14 = 0x8CEE;
        public static uint GL_COLOR_ATTACHMENT15 = 0x8CEF;
        public static uint GL_DEPTH_ATTACHMENT = 0x8D00;
        public static uint GL_STENCIL_ATTACHMENT = 0x8D20;
        public static uint GL_FRAMEBUFFER = 0x8D40;
        public static uint GL_RENDERBUFFER = 0x8D41;
        public static uint GL_RENDERBUFFER_WIDTH = 0x8D42;
        public static uint GL_RENDERBUFFER_HEIGHT = 0x8D43;
        public static uint GL_RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
        public static uint GL_STENCIL_INDEX1 = 0x8D46;
        public static uint GL_STENCIL_INDEX4 = 0x8D47;
        public static uint GL_STENCIL_INDEX8 = 0x8D48;
        public static uint GL_STENCIL_INDEX16 = 0x8D49;
        public static uint GL_RENDERBUFFER_RED_SIZE = 0x8D50;
        public static uint GL_RENDERBUFFER_GREEN_SIZE = 0x8D51;
        public static uint GL_RENDERBUFFER_BLUE_SIZE = 0x8D52;
        public static uint GL_RENDERBUFFER_ALPHA_SIZE = 0x8D53;
        public static uint GL_RENDERBUFFER_DEPTH_SIZE = 0x8D54;
        public static uint GL_RENDERBUFFER_STENCIL_SIZE = 0x8D55;
        public static uint GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56;
        public static uint GL_MAX_SAMPLES = 0x8D57;
        public static uint GL_INDEX = 0x8222;
        public static uint GL_FRAMEBUFFER_SRGB = 0x8DB9;
        public static uint GL_HALF_FLOAT = 0x140B;
        public static uint GL_MAP_READ_BIT = 0x0001;
        public static uint GL_MAP_WRITE_BIT = 0x0002;
        public static uint GL_MAP_INVALIDATE_RANGE_BIT = 0x0004;
        public static uint GL_MAP_INVALIDATE_BUFFER_BIT = 0x0008;
        public static uint GL_MAP_FLUSH_EXPLICIT_BIT = 0x0010;
        public static uint GL_MAP_UNSYNCHRONIZED_BIT = 0x0020;
        public static uint GL_COMPRESSED_RED_RGTC1 = 0x8DBB;
        public static uint GL_COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC;
        public static uint GL_COMPRESSED_RG_RGTC2 = 0x8DBD;
        public static uint GL_COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE;
        public static uint GL_RG = 0x8227;
        public static uint GL_RG_INTEGER = 0x8228;
        public static uint GL_R8 = 0x8229;
        public static uint GL_R16 = 0x822A;
        public static uint GL_RG8 = 0x822B;
        public static uint GL_RG16 = 0x822C;
        public static uint GL_R16F = 0x822D;
        public static uint GL_R32F = 0x822E;
        public static uint GL_RG16F = 0x822F;
        public static uint GL_RG32F = 0x8230;
        public static uint GL_R8I = 0x8231;
        public static uint GL_R8UI = 0x8232;
        public static uint GL_R16I = 0x8233;
        public static uint GL_R16UI = 0x8234;
        public static uint GL_R32I = 0x8235;
        public static uint GL_R32UI = 0x8236;
        public static uint GL_RG8I = 0x8237;
        public static uint GL_RG8UI = 0x8238;
        public static uint GL_RG16I = 0x8239;
        public static uint GL_RG16UI = 0x823A;
        public static uint GL_RG32I = 0x823B;
        public static uint GL_RG32UI = 0x823C;
        public static uint GL_VERTEX_ARRAY_BINDING = 0x85B5;
        public static uint GL_SAMPLER_2D_RECT = 0x8B63;
        public static uint GL_SAMPLER_2D_RECT_SHADOW = 0x8B64;
        public static uint GL_SAMPLER_BUFFER = 0x8DC2;
        public static uint GL_INT_SAMPLER_2D_RECT = 0x8DCD;
        public static uint GL_INT_SAMPLER_BUFFER = 0x8DD0;
        public static uint GL_UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5;
        public static uint GL_UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8;
        public static uint GL_TEXTURE_BUFFER = 0x8C2A;
        public static uint GL_MAX_TEXTURE_BUFFER_SIZE = 0x8C2B;
        public static uint GL_TEXTURE_BINDING_BUFFER = 0x8C2C;
        public static uint GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D;
        public static uint GL_TEXTURE_RECTANGLE = 0x84F5;
        public static uint GL_TEXTURE_BINDING_RECTANGLE = 0x84F6;
        public static uint GL_PROXY_TEXTURE_RECTANGLE = 0x84F7;
        public static uint GL_MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8;
        public static uint GL_R8_SNORM = 0x8F94;
        public static uint GL_RG8_SNORM = 0x8F95;
        public static uint GL_RGB8_SNORM = 0x8F96;
        public static uint GL_RGBA8_SNORM = 0x8F97;
        public static uint GL_R16_SNORM = 0x8F98;
        public static uint GL_RG16_SNORM = 0x8F99;
        public static uint GL_RGB16_SNORM = 0x8F9A;
        public static uint GL_RGBA16_SNORM = 0x8F9B;
        public static uint GL_SIGNED_NORMALIZED = 0x8F9C;
        public static uint GL_PRIMITIVE_RESTART = 0x8F9D;
        public static uint GL_PRIMITIVE_RESTART_INDEX = 0x8F9E;
        public static uint GL_COPY_READ_BUFFER = 0x8F36;
        public static uint GL_COPY_WRITE_BUFFER = 0x8F37;
        public static uint GL_UNIFORM_BUFFER = 0x8A11;
        public static uint GL_UNIFORM_BUFFER_BINDING = 0x8A28;
        public static uint GL_UNIFORM_BUFFER_START = 0x8A29;
        public static uint GL_UNIFORM_BUFFER_SIZE = 0x8A2A;
        public static uint GL_MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B;
        public static uint GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D;
        public static uint GL_MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E;
        public static uint GL_MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F;
        public static uint GL_MAX_UNIFORM_BLOCK_SIZE = 0x8A30;
        public static uint GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31;
        public static uint GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33;
        public static uint GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34;
        public static uint GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35;
        public static uint GL_ACTIVE_UNIFORM_BLOCKS = 0x8A36;
        public static uint GL_UNIFORM_TYPE = 0x8A37;
        public static uint GL_UNIFORM_SIZE = 0x8A38;
        public static uint GL_UNIFORM_NAME_LENGTH = 0x8A39;
        public static uint GL_UNIFORM_BLOCK_INDEX = 0x8A3A;
        public static uint GL_UNIFORM_OFFSET = 0x8A3B;
        public static uint GL_UNIFORM_ARRAY_STRIDE = 0x8A3C;
        public static uint GL_UNIFORM_MATRIX_STRIDE = 0x8A3D;
        public static uint GL_UNIFORM_IS_ROW_MAJOR = 0x8A3E;
        public static uint GL_UNIFORM_BLOCK_BINDING = 0x8A3F;
        public static uint GL_UNIFORM_BLOCK_DATA_SIZE = 0x8A40;
        public static uint GL_UNIFORM_BLOCK_NAME_LENGTH = 0x8A41;
        public static uint GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42;
        public static uint GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43;
        public static uint GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44;
        public static uint GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46;
        public static uint GL_INVALID_INDEX = 0xFFFFFFFF;
        public static uint GL_CONTEXT_CORE_PROFILE_BIT = 0x00000001;
        public static uint GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002;
        public static uint GL_PROGRAM_POINT_SIZE = 0x8642;
        public static uint GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29;
        public static uint GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7;
        public static uint GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8;
        public static uint GL_GEOMETRY_SHADER = 0x8DD9;
        public static uint GL_GEOMETRY_VERTICES_OUT = 0x8916;
        public static uint GL_GEOMETRY_INPUT_TYPE = 0x8917;
        public static uint GL_GEOMETRY_OUTPUT_TYPE = 0x8918;
        public static uint GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF;
        public static uint GL_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0;
        public static uint GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1;
        public static uint GL_MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122;
        public static uint GL_MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123;
        public static uint GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124;
        public static uint GL_MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
        public static uint GL_CONTEXT_PROFILE_MASK = 0x9126;
        public static uint GL_DEPTH_CLAMP = 0x864F;
        public static uint GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C;
        public static uint GL_FIRST_VERTEX_CONVENTION = 0x8E4D;
        public static uint GL_LAST_VERTEX_CONVENTION = 0x8E4E;
        public static uint GL_PROVOKING_VERTEX = 0x8E4F;
        public static uint GL_TEXTURE_CUBE_MAP_SEAMLESS = 0x884F;
        public static uint GL_MAX_SERVER_WAIT_TIMEOUT = 0x9111;
        public static uint GL_OBJECT_TYPE = 0x9112;
        public static uint GL_SYNC_CONDITION = 0x9113;
        public static uint GL_SYNC_STATUS = 0x9114;
        public static uint GL_SYNC_FLAGS = 0x9115;
        public static uint GL_SYNC_FENCE = 0x9116;
        public static uint GL_SYNC_GPU_COMMANDS_COMPLETE = 0x9117;
        public static uint GL_UNSIGNALED = 0x9118;
        public static uint GL_SIGNALED = 0x9119;
        public static uint GL_ALREADY_SIGNALED = 0x911A;
        public static uint GL_TIMEOUT_EXPIRED = 0x911B;
        public static uint GL_CONDITION_SATISFIED = 0x911C;
        public static uint GL_WAIT_FAILED = 0x911D;
        public static ulong GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF;
        public static uint GL_SYNC_FLUSH_COMMANDS_BIT = 0x00000001;
        public static uint GL_SAMPLE_POSITION = 0x8E50;
        public static uint GL_SAMPLE_MASK = 0x8E51;
        public static uint GL_SAMPLE_MASK_VALUE = 0x8E52;
        public static uint GL_MAX_SAMPLE_MASK_WORDS = 0x8E59;
        public static uint GL_TEXTURE_2D_MULTISAMPLE = 0x9100;
        public static uint GL_PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101;
        public static uint GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102;
        public static uint GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103;
        public static uint GL_TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104;
        public static uint GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105;
        public static uint GL_TEXTURE_SAMPLES = 0x9106;
        public static uint GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107;
        public static uint GL_SAMPLER_2D_MULTISAMPLE = 0x9108;
        public static uint GL_INT_SAMPLER_2D_MULTISAMPLE = 0x9109;
        public static uint GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A;
        public static uint GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B;
        public static uint GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C;
        public static uint GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D;
        public static uint GL_MAX_COLOR_TEXTURE_SAMPLES = 0x910E;
        public static uint GL_MAX_DEPTH_TEXTURE_SAMPLES = 0x910F;
        public static uint GL_MAX_INTEGER_SAMPLES = 0x9110;
        #endregion

        #region Commands
        public static void glCullFace(uint mode)
        {
            GLInterop.glCullFacePtr(mode);
        }
        public static void glFrontFace(uint mode)
        {
            GLInterop.glFrontFacePtr(mode);
        }
        public static void glHint(uint target, uint mode)
        {
            GLInterop.glHintPtr(target, mode);
        }
        public static void glLineWidth(float width)
        {
            GLInterop.glLineWidthPtr(width);
        }
        public static void glPointSize(float size)
        {
            GLInterop.glPointSizePtr(size);
        }
        public static void glPolygonMode(uint face, uint mode)
        {
            GLInterop.glPolygonModePtr(face, mode);
        }
        public static void glScissor(int x, int y, int width, int height)
        {
            GLInterop.glScissorPtr(x, y, width, height);
        }
        public static void glTexParameterf(uint target, uint pname, float param)
        {
            GLInterop.glTexParameterfPtr(target, pname, param);
        }
        public static void glTexParameterfv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glTexParameterfvPtr(target, pname, @params);
        }
        public static void glTexParameteri(uint target, uint pname, int param)
        {
            GLInterop.glTexParameteriPtr(target, pname, param);
        }
        public static void glTexParameteriv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glTexParameterivPtr(target, pname, @params);
        }
        public static void glTexImage1D(uint target, int level, int internalformat, int width, int border, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glTexImage1DPtr(target, level, internalformat, width, border, format, type, pixels);
        }
        public static void glTexImage2D(uint target, int level, int internalformat, int width, int height, int border, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glTexImage2DPtr(target, level, internalformat, width, height, border, format, type, pixels);
        }
        public static void glDrawBuffer(uint mode)
        {
            GLInterop.glDrawBufferPtr(mode);
        }
        public static void glClear(uint mask)
        {
            GLInterop.glClearPtr(mask);
        }
        public static void glClearColor(float red, float green, float blue, float alpha)
        {
            GLInterop.glClearColorPtr(red, green, blue, alpha);
        }
        public static void glClearStencil(int s)
        {
            GLInterop.glClearStencilPtr(s);
        }
        public static void glClearDepth(double depth)
        {
            GLInterop.glClearDepthPtr(depth);
        }
        public static void glStencilMask(uint mask)
        {
            GLInterop.glStencilMaskPtr(mask);
        }
        public static void glColorMask(bool red, bool green, bool blue, bool alpha)
        {
            GLInterop.glColorMaskPtr(red, green, blue, alpha);
        }
        public static void glDepthMask(bool flag)
        {
            GLInterop.glDepthMaskPtr(flag);
        }
        public static void glDisable(uint cap)
        {
            GLInterop.glDisablePtr(cap);
        }
        public static void glEnable(uint cap)
        {
            GLInterop.glEnablePtr(cap);
        }
        public static void glFinish()
        {
            GLInterop.glFinishPtr();
        }
        public static void glFlush()
        {
            GLInterop.glFlushPtr();
        }
        public static void glBlendFunc(uint sfactor, uint dfactor)
        {
            GLInterop.glBlendFuncPtr(sfactor, dfactor);
        }
        public static void glLogicOp(uint opcode)
        {
            GLInterop.glLogicOpPtr(opcode);
        }
        public static void glStencilFunc(uint func, int @ref, uint mask)
        {
            GLInterop.glStencilFuncPtr(func, @ref, mask);
        }
        public static void glStencilOp(uint fail, uint zfail, uint zpass)
        {
            GLInterop.glStencilOpPtr(fail, zfail, zpass);
        }
        public static void glDepthFunc(uint func)
        {
            GLInterop.glDepthFuncPtr(func);
        }
        public static void glPixelStoref(uint pname, float param)
        {
            GLInterop.glPixelStorefPtr(pname, param);
        }
        public static void glPixelStorei(uint pname, int param)
        {
            GLInterop.glPixelStoreiPtr(pname, param);
        }
        public static void glReadBuffer(uint mode)
        {
            GLInterop.glReadBufferPtr(mode);
        }
        public static void glReadPixels(int x, int y, int width, int height, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glReadPixelsPtr(x, y, width, height, format, type, pixels);
        }
        public static void glGetBooleanv(uint pname, IntPtr data)
        {
            GLInterop.glGetBooleanvPtr(pname, data);
        }
        public static void glGetDoublev(uint pname, IntPtr data)
        {
            GLInterop.glGetDoublevPtr(pname, data);
        }
        public static uint glGetError()
        {
            return GLInterop.glGetErrorPtr();
        }
        public static void glGetFloatv(uint pname, IntPtr data)
        {
            GLInterop.glGetFloatvPtr(pname, data);
        }
        public static void glGetIntegerv(uint pname, IntPtr data)
        {
            GLInterop.glGetIntegervPtr(pname, data);
        }
        public static IntPtr glGetString(uint name)
        {
            return GLInterop.glGetStringPtr(name);
        }
        public static void glGetTexImage(uint target, int level, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glGetTexImagePtr(target, level, format, type, pixels);
        }
        public static void glGetTexParameterfv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetTexParameterfvPtr(target, pname, @params);
        }
        public static void glGetTexParameteriv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetTexParameterivPtr(target, pname, @params);
        }
        public static void glGetTexLevelParameterfv(uint target, int level, uint pname, IntPtr @params)
        {
            GLInterop.glGetTexLevelParameterfvPtr(target, level, pname, @params);
        }
        public static void glGetTexLevelParameteriv(uint target, int level, uint pname, IntPtr @params)
        {
            GLInterop.glGetTexLevelParameterivPtr(target, level, pname, @params);
        }
        public static bool glIsEnabled(uint cap)
        {
            return GLInterop.glIsEnabledPtr(cap);
        }
        public static void glDepthRange(double near, double far)
        {
            GLInterop.glDepthRangePtr(near, far);
        }
        public static void glViewport(int x, int y, int width, int height)
        {
            GLInterop.glViewportPtr(x, y, width, height);
        }
        public static void glDrawArrays(uint mode, int first, int count)
        {
            GLInterop.glDrawArraysPtr(mode, first, count);
        }
        public static void glDrawElements(uint mode, int count, uint type, IntPtr indices)
        {
            GLInterop.glDrawElementsPtr(mode, count, type, indices);
        }
        public static void glPolygonOffset(float factor, float units)
        {
            GLInterop.glPolygonOffsetPtr(factor, units);
        }
        public static void glCopyTexImage1D(uint target, int level, uint internalformat, int x, int y, int width, int border)
        {
            GLInterop.glCopyTexImage1DPtr(target, level, internalformat, x, y, width, border);
        }
        public static void glCopyTexImage2D(uint target, int level, uint internalformat, int x, int y, int width, int height, int border)
        {
            GLInterop.glCopyTexImage2DPtr(target, level, internalformat, x, y, width, height, border);
        }
        public static void glCopyTexSubImage1D(uint target, int level, int xoffset, int x, int y, int width)
        {
            GLInterop.glCopyTexSubImage1DPtr(target, level, xoffset, x, y, width);
        }
        public static void glCopyTexSubImage2D(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height)
        {
            GLInterop.glCopyTexSubImage2DPtr(target, level, xoffset, yoffset, x, y, width, height);
        }
        public static void glTexSubImage1D(uint target, int level, int xoffset, int width, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glTexSubImage1DPtr(target, level, xoffset, width, format, type, pixels);
        }
        public static void glTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glTexSubImage2DPtr(target, level, xoffset, yoffset, width, height, format, type, pixels);
        }
        public static void glBindTexture(uint target, uint texture)
        {
            GLInterop.glBindTexturePtr(target, texture);
        }
        public static void glDeleteTextures(int n, IntPtr textures)
        {
            GLInterop.glDeleteTexturesPtr(n, textures);
        }
        public static void glGenTextures(int n, IntPtr textures)
        {
            GLInterop.glGenTexturesPtr(n, textures);
        }
        public static bool glIsTexture(uint texture)
        {
            return GLInterop.glIsTexturePtr(texture);
        }
        public static void glDrawRangeElements(uint mode, uint start, uint end, int count, uint type, IntPtr indices)
        {
            GLInterop.glDrawRangeElementsPtr(mode, start, end, count, type, indices);
        }
        public static void glTexImage3D(uint target, int level, int internalformat, int width, int height, int depth, int border, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glTexImage3DPtr(target, level, internalformat, width, height, depth, border, format, type, pixels);
        }
        public static void glTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, IntPtr pixels)
        {
            GLInterop.glTexSubImage3DPtr(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
        }
        public static void glCopyTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height)
        {
            GLInterop.glCopyTexSubImage3DPtr(target, level, xoffset, yoffset, zoffset, x, y, width, height);
        }
        public static void glActiveTexture(uint texture)
        {
            GLInterop.glActiveTexturePtr(texture);
        }
        public static void glSampleCoverage(float value, bool invert)
        {
            GLInterop.glSampleCoveragePtr(value, invert);
        }
        public static void glCompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, IntPtr data)
        {
            GLInterop.glCompressedTexImage3DPtr(target, level, internalformat, width, height, depth, border, imageSize, data);
        }
        public static void glCompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, IntPtr data)
        {
            GLInterop.glCompressedTexImage2DPtr(target, level, internalformat, width, height, border, imageSize, data);
        }
        public static void glCompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, IntPtr data)
        {
            GLInterop.glCompressedTexImage1DPtr(target, level, internalformat, width, border, imageSize, data);
        }
        public static void glCompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, IntPtr data)
        {
            GLInterop.glCompressedTexSubImage3DPtr(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
        }
        public static void glCompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, IntPtr data)
        {
            GLInterop.glCompressedTexSubImage2DPtr(target, level, xoffset, yoffset, width, height, format, imageSize, data);
        }
        public static void glCompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, IntPtr data)
        {
            GLInterop.glCompressedTexSubImage1DPtr(target, level, xoffset, width, format, imageSize, data);
        }
        public static void glGetCompressedTexImage(uint target, int level, IntPtr img)
        {
            GLInterop.glGetCompressedTexImagePtr(target, level, img);
        }
        public static void glBlendFuncSeparate(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha)
        {
            GLInterop.glBlendFuncSeparatePtr(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
        }
        public static void glMultiDrawArrays(uint mode, IntPtr first, IntPtr count, int drawcount)
        {
            GLInterop.glMultiDrawArraysPtr(mode, first, count, drawcount);
        }
        public static void glMultiDrawElements(uint mode, IntPtr count, uint type, IntPtr indices, int drawcount)
        {
            GLInterop.glMultiDrawElementsPtr(mode, count, type, indices, drawcount);
        }
        public static void glPointParameterf(uint pname, float param)
        {
            GLInterop.glPointParameterfPtr(pname, param);
        }
        public static void glPointParameterfv(uint pname, IntPtr @params)
        {
            GLInterop.glPointParameterfvPtr(pname, @params);
        }
        public static void glPointParameteri(uint pname, int param)
        {
            GLInterop.glPointParameteriPtr(pname, param);
        }
        public static void glPointParameteriv(uint pname, IntPtr @params)
        {
            GLInterop.glPointParameterivPtr(pname, @params);
        }
        public static void glBlendColor(float red, float green, float blue, float alpha)
        {
            GLInterop.glBlendColorPtr(red, green, blue, alpha);
        }
        public static void glBlendEquation(uint mode)
        {
            GLInterop.glBlendEquationPtr(mode);
        }
        public static void glGenQueries(int n, IntPtr ids)
        {
            GLInterop.glGenQueriesPtr(n, ids);
        }
        public static void glDeleteQueries(int n, IntPtr ids)
        {
            GLInterop.glDeleteQueriesPtr(n, ids);
        }
        public static bool glIsQuery(uint id)
        {
            return GLInterop.glIsQueryPtr(id);
        }
        public static void glBeginQuery(uint target, uint id)
        {
            GLInterop.glBeginQueryPtr(target, id);
        }
        public static void glEndQuery(uint target)
        {
            GLInterop.glEndQueryPtr(target);
        }
        public static void glGetQueryiv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetQueryivPtr(target, pname, @params);
        }
        public static void glGetQueryObjectiv(uint id, uint pname, IntPtr @params)
        {
            GLInterop.glGetQueryObjectivPtr(id, pname, @params);
        }
        public static void glGetQueryObjectuiv(uint id, uint pname, IntPtr @params)
        {
            GLInterop.glGetQueryObjectuivPtr(id, pname, @params);
        }
        public static void glBindBuffer(uint target, uint buffer)
        {
            GLInterop.glBindBufferPtr(target, buffer);
        }
        public static void glDeleteBuffers(int n, IntPtr buffers)
        {
            GLInterop.glDeleteBuffersPtr(n, buffers);
        }
        public static void glGenBuffers(int n, IntPtr buffers)
        {
            GLInterop.glGenBuffersPtr(n, buffers);
        }
        public static bool glIsBuffer(uint buffer)
        {
            return GLInterop.glIsBufferPtr(buffer);
        }
        public static void glBufferData(uint target, int size, IntPtr data, uint usage)
        {
            GLInterop.glBufferDataPtr(target, size, data, usage);
        }
        public static void glBufferSubData(uint target, IntPtr offset, int size, IntPtr data)
        {
            GLInterop.glBufferSubDataPtr(target, offset, size, data);
        }
        public static void glGetBufferSubData(uint target, IntPtr offset, int size, IntPtr data)
        {
            GLInterop.glGetBufferSubDataPtr(target, offset, size, data);
        }
        public static IntPtr glMapBuffer(uint target, uint access)
        {
            return GLInterop.glMapBufferPtr(target, access);
        }
        public static bool glUnmapBuffer(uint target)
        {
            return GLInterop.glUnmapBufferPtr(target);
        }
        public static void glGetBufferParameteriv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetBufferParameterivPtr(target, pname, @params);
        }
        public static void glGetBufferPointerv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetBufferPointervPtr(target, pname, @params);
        }
        public static void glBlendEquationSeparate(uint modeRGB, uint modeAlpha)
        {
            GLInterop.glBlendEquationSeparatePtr(modeRGB, modeAlpha);
        }
        public static void glDrawBuffers(int n, IntPtr bufs)
        {
            GLInterop.glDrawBuffersPtr(n, bufs);
        }
        public static void glStencilOpSeparate(uint face, uint sfail, uint dpfail, uint dppass)
        {
            GLInterop.glStencilOpSeparatePtr(face, sfail, dpfail, dppass);
        }
        public static void glStencilFuncSeparate(uint face, uint func, int @ref, uint mask)
        {
            GLInterop.glStencilFuncSeparatePtr(face, func, @ref, mask);
        }
        public static void glStencilMaskSeparate(uint face, uint mask)
        {
            GLInterop.glStencilMaskSeparatePtr(face, mask);
        }
        public static void glAttachShader(uint program, uint shader)
        {
            GLInterop.glAttachShaderPtr(program, shader);
        }
        public static void glBindAttribLocation(uint program, uint index, IntPtr name)
        {
            GLInterop.glBindAttribLocationPtr(program, index, name);
        }
        public static void glCompileShader(uint shader)
        {
            GLInterop.glCompileShaderPtr(shader);
        }
        public static uint glCreateProgram()
        {
            return GLInterop.glCreateProgramPtr();
        }
        public static uint glCreateShader(uint type)
        {
            return GLInterop.glCreateShaderPtr(type);
        }
        public static void glDeleteProgram(uint program)
        {
            GLInterop.glDeleteProgramPtr(program);
        }
        public static void glDeleteShader(uint shader)
        {
            GLInterop.glDeleteShaderPtr(shader);
        }
        public static void glDetachShader(uint program, uint shader)
        {
            GLInterop.glDetachShaderPtr(program, shader);
        }
        public static void glDisableVertexAttribArray(uint index)
        {
            GLInterop.glDisableVertexAttribArrayPtr(index);
        }
        public static void glEnableVertexAttribArray(uint index)
        {
            GLInterop.glEnableVertexAttribArrayPtr(index);
        }
        public static void glGetActiveAttrib(uint program, uint index, int bufSize, IntPtr length, IntPtr size, IntPtr type, IntPtr name)
        {
            GLInterop.glGetActiveAttribPtr(program, index, bufSize, length, size, type, name);
        }
        public static void glGetActiveUniform(uint program, uint index, int bufSize, IntPtr length, IntPtr size, IntPtr type, IntPtr name)
        {
            GLInterop.glGetActiveUniformPtr(program, index, bufSize, length, size, type, name);
        }
        public static void glGetAttachedShaders(uint program, int maxCount, IntPtr count, IntPtr shaders)
        {
            GLInterop.glGetAttachedShadersPtr(program, maxCount, count, shaders);
        }
        public static int glGetAttribLocation(uint program, IntPtr name)
        {
            return GLInterop.glGetAttribLocationPtr(program, name);
        }
        public static void glGetProgramiv(uint program, uint pname, IntPtr @params)
        {
            GLInterop.glGetProgramivPtr(program, pname, @params);
        }
        public static void glGetProgramInfoLog(uint program, int bufSize, IntPtr length, IntPtr infoLog)
        {
            GLInterop.glGetProgramInfoLogPtr(program, bufSize, length, infoLog);
        }
        public static void glGetShaderiv(uint shader, uint pname, IntPtr @params)
        {
            GLInterop.glGetShaderivPtr(shader, pname, @params);
        }
        public static void glGetShaderInfoLog(uint shader, int bufSize, IntPtr length, IntPtr infoLog)
        {
            GLInterop.glGetShaderInfoLogPtr(shader, bufSize, length, infoLog);
        }
        public static void glGetShaderSource(uint shader, int bufSize, IntPtr length, IntPtr source)
        {
            GLInterop.glGetShaderSourcePtr(shader, bufSize, length, source);
        }
        public static int glGetUniformLocation(uint program, IntPtr name)
        {
            return GLInterop.glGetUniformLocationPtr(program, name);
        }
        public static void glGetUniformfv(uint program, int location, IntPtr @params)
        {
            GLInterop.glGetUniformfvPtr(program, location, @params);
        }
        public static void glGetUniformiv(uint program, int location, IntPtr @params)
        {
            GLInterop.glGetUniformivPtr(program, location, @params);
        }
        public static void glGetVertexAttribdv(uint index, uint pname, IntPtr @params)
        {
            GLInterop.glGetVertexAttribdvPtr(index, pname, @params);
        }
        public static void glGetVertexAttribfv(uint index, uint pname, IntPtr @params)
        {
            GLInterop.glGetVertexAttribfvPtr(index, pname, @params);
        }
        public static void glGetVertexAttribiv(uint index, uint pname, IntPtr @params)
        {
            GLInterop.glGetVertexAttribivPtr(index, pname, @params);
        }
        public static void glGetVertexAttribPointerv(uint index, uint pname, IntPtr pointer)
        {
            GLInterop.glGetVertexAttribPointervPtr(index, pname, pointer);
        }
        public static bool glIsProgram(uint program)
        {
            return GLInterop.glIsProgramPtr(program);
        }
        public static bool glIsShader(uint shader)
        {
            return GLInterop.glIsShaderPtr(shader);
        }
        public static void glLinkProgram(uint program)
        {
            GLInterop.glLinkProgramPtr(program);
        }
        public static void glShaderSource(uint shader, int count, IntPtr @string, IntPtr length)
        {
            GLInterop.glShaderSourcePtr(shader, count, @string, length);
        }
        public static void glUseProgram(uint program)
        {
            GLInterop.glUseProgramPtr(program);
        }
        public static void glUniform1f(int location, float v0)
        {
            GLInterop.glUniform1fPtr(location, v0);
        }
        public static void glUniform2f(int location, float v0, float v1)
        {
            GLInterop.glUniform2fPtr(location, v0, v1);
        }
        public static void glUniform3f(int location, float v0, float v1, float v2)
        {
            GLInterop.glUniform3fPtr(location, v0, v1, v2);
        }
        public static void glUniform4f(int location, float v0, float v1, float v2, float v3)
        {
            GLInterop.glUniform4fPtr(location, v0, v1, v2, v3);
        }
        public static void glUniform1i(int location, int v0)
        {
            GLInterop.glUniform1iPtr(location, v0);
        }
        public static void glUniform2i(int location, int v0, int v1)
        {
            GLInterop.glUniform2iPtr(location, v0, v1);
        }
        public static void glUniform3i(int location, int v0, int v1, int v2)
        {
            GLInterop.glUniform3iPtr(location, v0, v1, v2);
        }
        public static void glUniform4i(int location, int v0, int v1, int v2, int v3)
        {
            GLInterop.glUniform4iPtr(location, v0, v1, v2, v3);
        }
        public static void glUniform1fv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform1fvPtr(location, count, value);
        }
        public static void glUniform2fv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform2fvPtr(location, count, value);
        }
        public static void glUniform3fv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform3fvPtr(location, count, value);
        }
        public static void glUniform4fv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform4fvPtr(location, count, value);
        }
        public static void glUniform1iv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform1ivPtr(location, count, value);
        }
        public static void glUniform2iv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform2ivPtr(location, count, value);
        }
        public static void glUniform3iv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform3ivPtr(location, count, value);
        }
        public static void glUniform4iv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform4ivPtr(location, count, value);
        }
        public static void glUniformMatrix2fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix2fvPtr(location, count, transpose, value);
        }
        public static void glUniformMatrix3fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix3fvPtr(location, count, transpose, value);
        }
        public static void glUniformMatrix4fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix4fvPtr(location, count, transpose, value);
        }
        public static void glValidateProgram(uint program)
        {
            GLInterop.glValidateProgramPtr(program);
        }
        public static void glVertexAttrib1d(uint index, double x)
        {
            GLInterop.glVertexAttrib1dPtr(index, x);
        }
        public static void glVertexAttrib1dv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib1dvPtr(index, v);
        }
        public static void glVertexAttrib1f(uint index, float x)
        {
            GLInterop.glVertexAttrib1fPtr(index, x);
        }
        public static void glVertexAttrib1fv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib1fvPtr(index, v);
        }
        public static void glVertexAttrib1s(uint index, short x)
        {
            GLInterop.glVertexAttrib1sPtr(index, x);
        }
        public static void glVertexAttrib1sv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib1svPtr(index, v);
        }
        public static void glVertexAttrib2d(uint index, double x, double y)
        {
            GLInterop.glVertexAttrib2dPtr(index, x, y);
        }
        public static void glVertexAttrib2dv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib2dvPtr(index, v);
        }
        public static void glVertexAttrib2f(uint index, float x, float y)
        {
            GLInterop.glVertexAttrib2fPtr(index, x, y);
        }
        public static void glVertexAttrib2fv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib2fvPtr(index, v);
        }
        public static void glVertexAttrib2s(uint index, short x, short y)
        {
            GLInterop.glVertexAttrib2sPtr(index, x, y);
        }
        public static void glVertexAttrib2sv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib2svPtr(index, v);
        }
        public static void glVertexAttrib3d(uint index, double x, double y, double z)
        {
            GLInterop.glVertexAttrib3dPtr(index, x, y, z);
        }
        public static void glVertexAttrib3dv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib3dvPtr(index, v);
        }
        public static void glVertexAttrib3f(uint index, float x, float y, float z)
        {
            GLInterop.glVertexAttrib3fPtr(index, x, y, z);
        }
        public static void glVertexAttrib3fv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib3fvPtr(index, v);
        }
        public static void glVertexAttrib3s(uint index, short x, short y, short z)
        {
            GLInterop.glVertexAttrib3sPtr(index, x, y, z);
        }
        public static void glVertexAttrib3sv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib3svPtr(index, v);
        }
        public static void glVertexAttrib4Nbv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4NbvPtr(index, v);
        }
        public static void glVertexAttrib4Niv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4NivPtr(index, v);
        }
        public static void glVertexAttrib4Nsv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4NsvPtr(index, v);
        }
        public static void glVertexAttrib4Nub(uint index, byte x, byte y, byte z, byte w)
        {
            GLInterop.glVertexAttrib4NubPtr(index, x, y, z, w);
        }
        public static void glVertexAttrib4Nubv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4NubvPtr(index, v);
        }
        public static void glVertexAttrib4Nuiv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4NuivPtr(index, v);
        }
        public static void glVertexAttrib4Nusv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4NusvPtr(index, v);
        }
        public static void glVertexAttrib4bv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4bvPtr(index, v);
        }
        public static void glVertexAttrib4d(uint index, double x, double y, double z, double w)
        {
            GLInterop.glVertexAttrib4dPtr(index, x, y, z, w);
        }
        public static void glVertexAttrib4dv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4dvPtr(index, v);
        }
        public static void glVertexAttrib4f(uint index, float x, float y, float z, float w)
        {
            GLInterop.glVertexAttrib4fPtr(index, x, y, z, w);
        }
        public static void glVertexAttrib4fv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4fvPtr(index, v);
        }
        public static void glVertexAttrib4iv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4ivPtr(index, v);
        }
        public static void glVertexAttrib4s(uint index, short x, short y, short z, short w)
        {
            GLInterop.glVertexAttrib4sPtr(index, x, y, z, w);
        }
        public static void glVertexAttrib4sv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4svPtr(index, v);
        }
        public static void glVertexAttrib4ubv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4ubvPtr(index, v);
        }
        public static void glVertexAttrib4uiv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4uivPtr(index, v);
        }
        public static void glVertexAttrib4usv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttrib4usvPtr(index, v);
        }
        public static void glVertexAttribPointer(uint index, int size, uint type, bool normalized, int stride, IntPtr pointer)
        {
            GLInterop.glVertexAttribPointerPtr(index, size, type, normalized, stride, pointer);
        }
        public static void glUniformMatrix2x3fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix2x3fvPtr(location, count, transpose, value);
        }
        public static void glUniformMatrix3x2fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix3x2fvPtr(location, count, transpose, value);
        }
        public static void glUniformMatrix2x4fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix2x4fvPtr(location, count, transpose, value);
        }
        public static void glUniformMatrix4x2fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix4x2fvPtr(location, count, transpose, value);
        }
        public static void glUniformMatrix3x4fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix3x4fvPtr(location, count, transpose, value);
        }
        public static void glUniformMatrix4x3fv(int location, int count, bool transpose, IntPtr value)
        {
            GLInterop.glUniformMatrix4x3fvPtr(location, count, transpose, value);
        }
        public static void glColorMaski(uint index, bool r, bool g, bool b, bool a)
        {
            GLInterop.glColorMaskiPtr(index, r, g, b, a);
        }
        public static void glGetBooleani_v(uint target, uint index, IntPtr data)
        {
            GLInterop.glGetBooleani_vPtr(target, index, data);
        }
        public static void glGetIntegeri_v(uint target, uint index, IntPtr data)
        {
            GLInterop.glGetIntegeri_vPtr(target, index, data);
        }
        public static void glEnablei(uint target, uint index)
        {
            GLInterop.glEnableiPtr(target, index);
        }
        public static void glDisablei(uint target, uint index)
        {
            GLInterop.glDisableiPtr(target, index);
        }
        public static bool glIsEnabledi(uint target, uint index)
        {
            return GLInterop.glIsEnablediPtr(target, index);
        }
        public static void glBeginTransformFeedback(uint primitiveMode)
        {
            GLInterop.glBeginTransformFeedbackPtr(primitiveMode);
        }
        public static void glEndTransformFeedback()
        {
            GLInterop.glEndTransformFeedbackPtr();
        }
        public static void glBindBufferRange(uint target, uint index, uint buffer, IntPtr offset, int size)
        {
            GLInterop.glBindBufferRangePtr(target, index, buffer, offset, size);
        }
        public static void glBindBufferBase(uint target, uint index, uint buffer)
        {
            GLInterop.glBindBufferBasePtr(target, index, buffer);
        }
        public static void glTransformFeedbackVaryings(uint program, int count, IntPtr varyings, uint bufferMode)
        {
            GLInterop.glTransformFeedbackVaryingsPtr(program, count, varyings, bufferMode);
        }
        public static void glGetTransformFeedbackVarying(uint program, uint index, int bufSize, IntPtr length, IntPtr size, IntPtr type, IntPtr name)
        {
            GLInterop.glGetTransformFeedbackVaryingPtr(program, index, bufSize, length, size, type, name);
        }
        public static void glClampColor(uint target, uint clamp)
        {
            GLInterop.glClampColorPtr(target, clamp);
        }
        public static void glBeginConditionalRender(uint id, uint mode)
        {
            GLInterop.glBeginConditionalRenderPtr(id, mode);
        }
        public static void glEndConditionalRender()
        {
            GLInterop.glEndConditionalRenderPtr();
        }
        public static void glVertexAttribIPointer(uint index, int size, uint type, int stride, IntPtr pointer)
        {
            GLInterop.glVertexAttribIPointerPtr(index, size, type, stride, pointer);
        }
        public static void glGetVertexAttribIiv(uint index, uint pname, IntPtr @params)
        {
            GLInterop.glGetVertexAttribIivPtr(index, pname, @params);
        }
        public static void glGetVertexAttribIuiv(uint index, uint pname, IntPtr @params)
        {
            GLInterop.glGetVertexAttribIuivPtr(index, pname, @params);
        }
        public static void glVertexAttribI1i(uint index, int x)
        {
            GLInterop.glVertexAttribI1iPtr(index, x);
        }
        public static void glVertexAttribI2i(uint index, int x, int y)
        {
            GLInterop.glVertexAttribI2iPtr(index, x, y);
        }
        public static void glVertexAttribI3i(uint index, int x, int y, int z)
        {
            GLInterop.glVertexAttribI3iPtr(index, x, y, z);
        }
        public static void glVertexAttribI4i(uint index, int x, int y, int z, int w)
        {
            GLInterop.glVertexAttribI4iPtr(index, x, y, z, w);
        }
        public static void glVertexAttribI1ui(uint index, uint x)
        {
            GLInterop.glVertexAttribI1uiPtr(index, x);
        }
        public static void glVertexAttribI2ui(uint index, uint x, uint y)
        {
            GLInterop.glVertexAttribI2uiPtr(index, x, y);
        }
        public static void glVertexAttribI3ui(uint index, uint x, uint y, uint z)
        {
            GLInterop.glVertexAttribI3uiPtr(index, x, y, z);
        }
        public static void glVertexAttribI4ui(uint index, uint x, uint y, uint z, uint w)
        {
            GLInterop.glVertexAttribI4uiPtr(index, x, y, z, w);
        }
        public static void glVertexAttribI1iv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI1ivPtr(index, v);
        }
        public static void glVertexAttribI2iv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI2ivPtr(index, v);
        }
        public static void glVertexAttribI3iv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI3ivPtr(index, v);
        }
        public static void glVertexAttribI4iv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI4ivPtr(index, v);
        }
        public static void glVertexAttribI1uiv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI1uivPtr(index, v);
        }
        public static void glVertexAttribI2uiv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI2uivPtr(index, v);
        }
        public static void glVertexAttribI3uiv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI3uivPtr(index, v);
        }
        public static void glVertexAttribI4uiv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI4uivPtr(index, v);
        }
        public static void glVertexAttribI4bv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI4bvPtr(index, v);
        }
        public static void glVertexAttribI4sv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI4svPtr(index, v);
        }
        public static void glVertexAttribI4ubv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI4ubvPtr(index, v);
        }
        public static void glVertexAttribI4usv(uint index, IntPtr v)
        {
            GLInterop.glVertexAttribI4usvPtr(index, v);
        }
        public static void glGetUniformuiv(uint program, int location, IntPtr @params)
        {
            GLInterop.glGetUniformuivPtr(program, location, @params);
        }
        public static void glBindFragDataLocation(uint program, uint color, IntPtr name)
        {
            GLInterop.glBindFragDataLocationPtr(program, color, name);
        }
        public static int glGetFragDataLocation(uint program, IntPtr name)
        {
            return GLInterop.glGetFragDataLocationPtr(program, name);
        }
        public static void glUniform1ui(int location, uint v0)
        {
            GLInterop.glUniform1uiPtr(location, v0);
        }
        public static void glUniform2ui(int location, uint v0, uint v1)
        {
            GLInterop.glUniform2uiPtr(location, v0, v1);
        }
        public static void glUniform3ui(int location, uint v0, uint v1, uint v2)
        {
            GLInterop.glUniform3uiPtr(location, v0, v1, v2);
        }
        public static void glUniform4ui(int location, uint v0, uint v1, uint v2, uint v3)
        {
            GLInterop.glUniform4uiPtr(location, v0, v1, v2, v3);
        }
        public static void glUniform1uiv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform1uivPtr(location, count, value);
        }
        public static void glUniform2uiv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform2uivPtr(location, count, value);
        }
        public static void glUniform3uiv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform3uivPtr(location, count, value);
        }
        public static void glUniform4uiv(int location, int count, IntPtr value)
        {
            GLInterop.glUniform4uivPtr(location, count, value);
        }
        public static void glTexParameterIiv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glTexParameterIivPtr(target, pname, @params);
        }
        public static void glTexParameterIuiv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glTexParameterIuivPtr(target, pname, @params);
        }
        public static void glGetTexParameterIiv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetTexParameterIivPtr(target, pname, @params);
        }
        public static void glGetTexParameterIuiv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetTexParameterIuivPtr(target, pname, @params);
        }
        public static void glClearBufferiv(uint buffer, int drawbuffer, IntPtr value)
        {
            GLInterop.glClearBufferivPtr(buffer, drawbuffer, value);
        }
        public static void glClearBufferuiv(uint buffer, int drawbuffer, IntPtr value)
        {
            GLInterop.glClearBufferuivPtr(buffer, drawbuffer, value);
        }
        public static void glClearBufferfv(uint buffer, int drawbuffer, IntPtr value)
        {
            GLInterop.glClearBufferfvPtr(buffer, drawbuffer, value);
        }
        public static void glClearBufferfi(uint buffer, int drawbuffer, float depth, int stencil)
        {
            GLInterop.glClearBufferfiPtr(buffer, drawbuffer, depth, stencil);
        }
        public static IntPtr glGetStringi(uint name, uint index)
        {
            return GLInterop.glGetStringiPtr(name, index);
        }
        public static bool glIsRenderbuffer(uint renderbuffer)
        {
            return GLInterop.glIsRenderbufferPtr(renderbuffer);
        }
        public static void glBindRenderbuffer(uint target, uint renderbuffer)
        {
            GLInterop.glBindRenderbufferPtr(target, renderbuffer);
        }
        public static void glDeleteRenderbuffers(int n, IntPtr renderbuffers)
        {
            GLInterop.glDeleteRenderbuffersPtr(n, renderbuffers);
        }
        public static void glGenRenderbuffers(int n, IntPtr renderbuffers)
        {
            GLInterop.glGenRenderbuffersPtr(n, renderbuffers);
        }
        public static void glRenderbufferStorage(uint target, uint internalformat, int width, int height)
        {
            GLInterop.glRenderbufferStoragePtr(target, internalformat, width, height);
        }
        public static void glGetRenderbufferParameteriv(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetRenderbufferParameterivPtr(target, pname, @params);
        }
        public static bool glIsFramebuffer(uint framebuffer)
        {
            return GLInterop.glIsFramebufferPtr(framebuffer);
        }
        public static void glBindFramebuffer(uint target, uint framebuffer)
        {
            GLInterop.glBindFramebufferPtr(target, framebuffer);
        }
        public static void glDeleteFramebuffers(int n, IntPtr framebuffers)
        {
            GLInterop.glDeleteFramebuffersPtr(n, framebuffers);
        }
        public static void glGenFramebuffers(int n, IntPtr framebuffers)
        {
            GLInterop.glGenFramebuffersPtr(n, framebuffers);
        }
        public static uint glCheckFramebufferStatus(uint target)
        {
            return GLInterop.glCheckFramebufferStatusPtr(target);
        }
        public static void glFramebufferTexture1D(uint target, uint attachment, uint textarget, uint texture, int level)
        {
            GLInterop.glFramebufferTexture1DPtr(target, attachment, textarget, texture, level);
        }
        public static void glFramebufferTexture2D(uint target, uint attachment, uint textarget, uint texture, int level)
        {
            GLInterop.glFramebufferTexture2DPtr(target, attachment, textarget, texture, level);
        }
        public static void glFramebufferTexture3D(uint target, uint attachment, uint textarget, uint texture, int level, int zoffset)
        {
            GLInterop.glFramebufferTexture3DPtr(target, attachment, textarget, texture, level, zoffset);
        }
        public static void glFramebufferRenderbuffer(uint target, uint attachment, uint renderbuffertarget, uint renderbuffer)
        {
            GLInterop.glFramebufferRenderbufferPtr(target, attachment, renderbuffertarget, renderbuffer);
        }
        public static void glGetFramebufferAttachmentParameteriv(uint target, uint attachment, uint pname, IntPtr @params)
        {
            GLInterop.glGetFramebufferAttachmentParameterivPtr(target, attachment, pname, @params);
        }
        public static void glGenerateMipmap(uint target)
        {
            GLInterop.glGenerateMipmapPtr(target);
        }
        public static void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter)
        {
            GLInterop.glBlitFramebufferPtr(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
        }
        public static void glRenderbufferStorageMultisample(uint target, int samples, uint internalformat, int width, int height)
        {
            GLInterop.glRenderbufferStorageMultisamplePtr(target, samples, internalformat, width, height);
        }
        public static void glFramebufferTextureLayer(uint target, uint attachment, uint texture, int level, int layer)
        {
            GLInterop.glFramebufferTextureLayerPtr(target, attachment, texture, level, layer);
        }
        public static IntPtr glMapBufferRange(uint target, IntPtr offset, int length, uint access)
        {
            return GLInterop.glMapBufferRangePtr(target, offset, length, access);
        }
        public static void glFlushMappedBufferRange(uint target, IntPtr offset, int length)
        {
            GLInterop.glFlushMappedBufferRangePtr(target, offset, length);
        }
        public static void glBindVertexArray(uint array)
        {
            GLInterop.glBindVertexArrayPtr(array);
        }
        public static void glDeleteVertexArrays(int n, IntPtr arrays)
        {
            GLInterop.glDeleteVertexArraysPtr(n, arrays);
        }
        public static void glGenVertexArrays(int n, IntPtr arrays)
        {
            GLInterop.glGenVertexArraysPtr(n, arrays);
        }
        public static bool glIsVertexArray(uint array)
        {
            return GLInterop.glIsVertexArrayPtr(array);
        }
        public static void glDrawArraysInstanced(uint mode, int first, int count, int instancecount)
        {
            GLInterop.glDrawArraysInstancedPtr(mode, first, count, instancecount);
        }
        public static void glDrawElementsInstanced(uint mode, int count, uint type, IntPtr indices, int instancecount)
        {
            GLInterop.glDrawElementsInstancedPtr(mode, count, type, indices, instancecount);
        }
        public static void glTexBuffer(uint target, uint internalformat, uint buffer)
        {
            GLInterop.glTexBufferPtr(target, internalformat, buffer);
        }
        public static void glPrimitiveRestartIndex(uint index)
        {
            GLInterop.glPrimitiveRestartIndexPtr(index);
        }
        public static void glCopyBufferSubData(uint readTarget, uint writeTarget, IntPtr readOffset, IntPtr writeOffset, int size)
        {
            GLInterop.glCopyBufferSubDataPtr(readTarget, writeTarget, readOffset, writeOffset, size);
        }
        public static void glGetUniformIndices(uint program, int uniformCount, IntPtr uniformNames, IntPtr uniformIndices)
        {
            GLInterop.glGetUniformIndicesPtr(program, uniformCount, uniformNames, uniformIndices);
        }
        public static void glGetActiveUniformsiv(uint program, int uniformCount, IntPtr uniformIndices, uint pname, IntPtr @params)
        {
            GLInterop.glGetActiveUniformsivPtr(program, uniformCount, uniformIndices, pname, @params);
        }
        public static void glGetActiveUniformName(uint program, uint uniformIndex, int bufSize, IntPtr length, IntPtr uniformName)
        {
            GLInterop.glGetActiveUniformNamePtr(program, uniformIndex, bufSize, length, uniformName);
        }
        public static uint glGetUniformBlockIndex(uint program, IntPtr uniformBlockName)
        {
            return GLInterop.glGetUniformBlockIndexPtr(program, uniformBlockName);
        }
        public static void glGetActiveUniformBlockiv(uint program, uint uniformBlockIndex, uint pname, IntPtr @params)
        {
            GLInterop.glGetActiveUniformBlockivPtr(program, uniformBlockIndex, pname, @params);
        }
        public static void glGetActiveUniformBlockName(uint program, uint uniformBlockIndex, int bufSize, IntPtr length, IntPtr uniformBlockName)
        {
            GLInterop.glGetActiveUniformBlockNamePtr(program, uniformBlockIndex, bufSize, length, uniformBlockName);
        }
        public static void glUniformBlockBinding(uint program, uint uniformBlockIndex, uint uniformBlockBinding)
        {
            GLInterop.glUniformBlockBindingPtr(program, uniformBlockIndex, uniformBlockBinding);
        }
        public static void glDrawElementsBaseVertex(uint mode, int count, uint type, IntPtr indices, int basevertex)
        {
            GLInterop.glDrawElementsBaseVertexPtr(mode, count, type, indices, basevertex);
        }
        public static void glDrawRangeElementsBaseVertex(uint mode, uint start, uint end, int count, uint type, IntPtr indices, int basevertex)
        {
            GLInterop.glDrawRangeElementsBaseVertexPtr(mode, start, end, count, type, indices, basevertex);
        }
        public static void glDrawElementsInstancedBaseVertex(uint mode, int count, uint type, IntPtr indices, int instancecount, int basevertex)
        {
            GLInterop.glDrawElementsInstancedBaseVertexPtr(mode, count, type, indices, instancecount, basevertex);
        }
        public static void glMultiDrawElementsBaseVertex(uint mode, IntPtr count, uint type, IntPtr indices, int drawcount, IntPtr basevertex)
        {
            GLInterop.glMultiDrawElementsBaseVertexPtr(mode, count, type, indices, drawcount, basevertex);
        }
        public static void glProvokingVertex(uint mode)
        {
            GLInterop.glProvokingVertexPtr(mode);
        }
        public static IntPtr glFenceSync(uint condition, uint flags)
        {
            return GLInterop.glFenceSyncPtr(condition, flags);
        }
        public static bool glIsSync(IntPtr sync)
        {
            return GLInterop.glIsSyncPtr(sync);
        }
        public static void glDeleteSync(IntPtr sync)
        {
            GLInterop.glDeleteSyncPtr(sync);
        }
        public static uint glClientWaitSync(IntPtr sync, uint flags, ulong timeout)
        {
            return GLInterop.glClientWaitSyncPtr(sync, flags, timeout);
        }
        public static void glWaitSync(IntPtr sync, uint flags, ulong timeout)
        {
            GLInterop.glWaitSyncPtr(sync, flags, timeout);
        }
        public static void glGetInteger64v(uint pname, IntPtr data)
        {
            GLInterop.glGetInteger64vPtr(pname, data);
        }
        public static void glGetSynciv(IntPtr sync, uint pname, int bufSize, IntPtr length, IntPtr values)
        {
            GLInterop.glGetSyncivPtr(sync, pname, bufSize, length, values);
        }
        public static void glGetInteger64i_v(uint target, uint index, IntPtr data)
        {
            GLInterop.glGetInteger64i_vPtr(target, index, data);
        }
        public static void glGetBufferParameteri64v(uint target, uint pname, IntPtr @params)
        {
            GLInterop.glGetBufferParameteri64vPtr(target, pname, @params);
        }
        public static void glFramebufferTexture(uint target, uint attachment, uint texture, int level)
        {
            GLInterop.glFramebufferTexturePtr(target, attachment, texture, level);
        }
        public static void glTexImage2DMultisample(uint target, int samples, uint internalformat, int width, int height, bool fixedsamplelocations)
        {
            GLInterop.glTexImage2DMultisamplePtr(target, samples, internalformat, width, height, fixedsamplelocations);
        }
        public static void glTexImage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, bool fixedsamplelocations)
        {
            GLInterop.glTexImage3DMultisamplePtr(target, samples, internalformat, width, height, depth, fixedsamplelocations);
        }
        public static void glGetMultisamplefv(uint pname, uint index, IntPtr val)
        {
            GLInterop.glGetMultisamplefvPtr(pname, index, val);
        }
        public static void glSampleMaski(uint index, uint mask)
        {
            GLInterop.glSampleMaskiPtr(index, mask);
        }
        #endregion

        #region Interop
        public static Func<string, IntPtr> GetProcAddress = null;

        public static void LoadAllFunctions()
        {
            try { GLInterop.glCullFacePtr = (GLInterop.glCullFaceFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCullFace"), typeof(GLInterop.glCullFaceFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCullFace'."); }
            try { GLInterop.glFrontFacePtr = (GLInterop.glFrontFaceFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFrontFace"), typeof(GLInterop.glFrontFaceFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFrontFace'."); }
            try { GLInterop.glHintPtr = (GLInterop.glHintFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glHint"), typeof(GLInterop.glHintFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glHint'."); }
            try { GLInterop.glLineWidthPtr = (GLInterop.glLineWidthFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glLineWidth"), typeof(GLInterop.glLineWidthFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glLineWidth'."); }
            try { GLInterop.glPointSizePtr = (GLInterop.glPointSizeFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPointSize"), typeof(GLInterop.glPointSizeFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPointSize'."); }
            try { GLInterop.glPolygonModePtr = (GLInterop.glPolygonModeFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPolygonMode"), typeof(GLInterop.glPolygonModeFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPolygonMode'."); }
            try { GLInterop.glScissorPtr = (GLInterop.glScissorFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glScissor"), typeof(GLInterop.glScissorFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glScissor'."); }
            try { GLInterop.glTexParameterfPtr = (GLInterop.glTexParameterfFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexParameterf"), typeof(GLInterop.glTexParameterfFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexParameterf'."); }
            try { GLInterop.glTexParameterfvPtr = (GLInterop.glTexParameterfvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexParameterfv"), typeof(GLInterop.glTexParameterfvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexParameterfv'."); }
            try { GLInterop.glTexParameteriPtr = (GLInterop.glTexParameteriFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexParameteri"), typeof(GLInterop.glTexParameteriFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexParameteri'."); }
            try { GLInterop.glTexParameterivPtr = (GLInterop.glTexParameterivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexParameteriv"), typeof(GLInterop.glTexParameterivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexParameteriv'."); }
            try { GLInterop.glTexImage1DPtr = (GLInterop.glTexImage1DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexImage1D"), typeof(GLInterop.glTexImage1DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexImage1D'."); }
            try { GLInterop.glTexImage2DPtr = (GLInterop.glTexImage2DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexImage2D"), typeof(GLInterop.glTexImage2DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexImage2D'."); }
            try { GLInterop.glDrawBufferPtr = (GLInterop.glDrawBufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawBuffer"), typeof(GLInterop.glDrawBufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawBuffer'."); }
            try { GLInterop.glClearPtr = (GLInterop.glClearFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClear"), typeof(GLInterop.glClearFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClear'."); }
            try { GLInterop.glClearColorPtr = (GLInterop.glClearColorFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClearColor"), typeof(GLInterop.glClearColorFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClearColor'."); }
            try { GLInterop.glClearStencilPtr = (GLInterop.glClearStencilFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClearStencil"), typeof(GLInterop.glClearStencilFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClearStencil'."); }
            try { GLInterop.glClearDepthPtr = (GLInterop.glClearDepthFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClearDepth"), typeof(GLInterop.glClearDepthFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClearDepth'."); }
            try { GLInterop.glStencilMaskPtr = (GLInterop.glStencilMaskFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glStencilMask"), typeof(GLInterop.glStencilMaskFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glStencilMask'."); }
            try { GLInterop.glColorMaskPtr = (GLInterop.glColorMaskFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glColorMask"), typeof(GLInterop.glColorMaskFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glColorMask'."); }
            try { GLInterop.glDepthMaskPtr = (GLInterop.glDepthMaskFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDepthMask"), typeof(GLInterop.glDepthMaskFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDepthMask'."); }
            try { GLInterop.glDisablePtr = (GLInterop.glDisableFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDisable"), typeof(GLInterop.glDisableFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDisable'."); }
            try { GLInterop.glEnablePtr = (GLInterop.glEnableFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glEnable"), typeof(GLInterop.glEnableFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glEnable'."); }
            try { GLInterop.glFinishPtr = (GLInterop.glFinishFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFinish"), typeof(GLInterop.glFinishFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFinish'."); }
            try { GLInterop.glFlushPtr = (GLInterop.glFlushFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFlush"), typeof(GLInterop.glFlushFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFlush'."); }
            try { GLInterop.glBlendFuncPtr = (GLInterop.glBlendFuncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBlendFunc"), typeof(GLInterop.glBlendFuncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBlendFunc'."); }
            try { GLInterop.glLogicOpPtr = (GLInterop.glLogicOpFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glLogicOp"), typeof(GLInterop.glLogicOpFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glLogicOp'."); }
            try { GLInterop.glStencilFuncPtr = (GLInterop.glStencilFuncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glStencilFunc"), typeof(GLInterop.glStencilFuncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glStencilFunc'."); }
            try { GLInterop.glStencilOpPtr = (GLInterop.glStencilOpFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glStencilOp"), typeof(GLInterop.glStencilOpFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glStencilOp'."); }
            try { GLInterop.glDepthFuncPtr = (GLInterop.glDepthFuncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDepthFunc"), typeof(GLInterop.glDepthFuncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDepthFunc'."); }
            try { GLInterop.glPixelStorefPtr = (GLInterop.glPixelStorefFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPixelStoref"), typeof(GLInterop.glPixelStorefFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPixelStoref'."); }
            try { GLInterop.glPixelStoreiPtr = (GLInterop.glPixelStoreiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPixelStorei"), typeof(GLInterop.glPixelStoreiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPixelStorei'."); }
            try { GLInterop.glReadBufferPtr = (GLInterop.glReadBufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glReadBuffer"), typeof(GLInterop.glReadBufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glReadBuffer'."); }
            try { GLInterop.glReadPixelsPtr = (GLInterop.glReadPixelsFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glReadPixels"), typeof(GLInterop.glReadPixelsFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glReadPixels'."); }
            try { GLInterop.glGetBooleanvPtr = (GLInterop.glGetBooleanvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetBooleanv"), typeof(GLInterop.glGetBooleanvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetBooleanv'."); }
            try { GLInterop.glGetDoublevPtr = (GLInterop.glGetDoublevFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetDoublev"), typeof(GLInterop.glGetDoublevFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetDoublev'."); }
            try { GLInterop.glGetErrorPtr = (GLInterop.glGetErrorFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetError"), typeof(GLInterop.glGetErrorFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetError'."); }
            try { GLInterop.glGetFloatvPtr = (GLInterop.glGetFloatvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetFloatv"), typeof(GLInterop.glGetFloatvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetFloatv'."); }
            try { GLInterop.glGetIntegervPtr = (GLInterop.glGetIntegervFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetIntegerv"), typeof(GLInterop.glGetIntegervFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetIntegerv'."); }
            try { GLInterop.glGetStringPtr = (GLInterop.glGetStringFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetString"), typeof(GLInterop.glGetStringFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetString'."); }
            try { GLInterop.glGetTexImagePtr = (GLInterop.glGetTexImageFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTexImage"), typeof(GLInterop.glGetTexImageFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTexImage'."); }
            try { GLInterop.glGetTexParameterfvPtr = (GLInterop.glGetTexParameterfvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTexParameterfv"), typeof(GLInterop.glGetTexParameterfvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTexParameterfv'."); }
            try { GLInterop.glGetTexParameterivPtr = (GLInterop.glGetTexParameterivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTexParameteriv"), typeof(GLInterop.glGetTexParameterivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTexParameteriv'."); }
            try { GLInterop.glGetTexLevelParameterfvPtr = (GLInterop.glGetTexLevelParameterfvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTexLevelParameterfv"), typeof(GLInterop.glGetTexLevelParameterfvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTexLevelParameterfv'."); }
            try { GLInterop.glGetTexLevelParameterivPtr = (GLInterop.glGetTexLevelParameterivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTexLevelParameteriv"), typeof(GLInterop.glGetTexLevelParameterivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTexLevelParameteriv'."); }
            try { GLInterop.glIsEnabledPtr = (GLInterop.glIsEnabledFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsEnabled"), typeof(GLInterop.glIsEnabledFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsEnabled'."); }
            try { GLInterop.glDepthRangePtr = (GLInterop.glDepthRangeFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDepthRange"), typeof(GLInterop.glDepthRangeFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDepthRange'."); }
            try { GLInterop.glViewportPtr = (GLInterop.glViewportFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glViewport"), typeof(GLInterop.glViewportFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glViewport'."); }
            try { GLInterop.glDrawArraysPtr = (GLInterop.glDrawArraysFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawArrays"), typeof(GLInterop.glDrawArraysFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawArrays'."); }
            try { GLInterop.glDrawElementsPtr = (GLInterop.glDrawElementsFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawElements"), typeof(GLInterop.glDrawElementsFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawElements'."); }
            try { GLInterop.glPolygonOffsetPtr = (GLInterop.glPolygonOffsetFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPolygonOffset"), typeof(GLInterop.glPolygonOffsetFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPolygonOffset'."); }
            try { GLInterop.glCopyTexImage1DPtr = (GLInterop.glCopyTexImage1DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCopyTexImage1D"), typeof(GLInterop.glCopyTexImage1DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCopyTexImage1D'."); }
            try { GLInterop.glCopyTexImage2DPtr = (GLInterop.glCopyTexImage2DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCopyTexImage2D"), typeof(GLInterop.glCopyTexImage2DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCopyTexImage2D'."); }
            try { GLInterop.glCopyTexSubImage1DPtr = (GLInterop.glCopyTexSubImage1DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCopyTexSubImage1D"), typeof(GLInterop.glCopyTexSubImage1DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCopyTexSubImage1D'."); }
            try { GLInterop.glCopyTexSubImage2DPtr = (GLInterop.glCopyTexSubImage2DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCopyTexSubImage2D"), typeof(GLInterop.glCopyTexSubImage2DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCopyTexSubImage2D'."); }
            try { GLInterop.glTexSubImage1DPtr = (GLInterop.glTexSubImage1DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexSubImage1D"), typeof(GLInterop.glTexSubImage1DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexSubImage1D'."); }
            try { GLInterop.glTexSubImage2DPtr = (GLInterop.glTexSubImage2DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexSubImage2D"), typeof(GLInterop.glTexSubImage2DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexSubImage2D'."); }
            try { GLInterop.glBindTexturePtr = (GLInterop.glBindTextureFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindTexture"), typeof(GLInterop.glBindTextureFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindTexture'."); }
            try { GLInterop.glDeleteTexturesPtr = (GLInterop.glDeleteTexturesFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteTextures"), typeof(GLInterop.glDeleteTexturesFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteTextures'."); }
            try { GLInterop.glGenTexturesPtr = (GLInterop.glGenTexturesFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGenTextures"), typeof(GLInterop.glGenTexturesFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGenTextures'."); }
            try { GLInterop.glIsTexturePtr = (GLInterop.glIsTextureFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsTexture"), typeof(GLInterop.glIsTextureFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsTexture'."); }
            try { GLInterop.glDrawRangeElementsPtr = (GLInterop.glDrawRangeElementsFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawRangeElements"), typeof(GLInterop.glDrawRangeElementsFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawRangeElements'."); }
            try { GLInterop.glTexImage3DPtr = (GLInterop.glTexImage3DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexImage3D"), typeof(GLInterop.glTexImage3DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexImage3D'."); }
            try { GLInterop.glTexSubImage3DPtr = (GLInterop.glTexSubImage3DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexSubImage3D"), typeof(GLInterop.glTexSubImage3DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexSubImage3D'."); }
            try { GLInterop.glCopyTexSubImage3DPtr = (GLInterop.glCopyTexSubImage3DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCopyTexSubImage3D"), typeof(GLInterop.glCopyTexSubImage3DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCopyTexSubImage3D'."); }
            try { GLInterop.glActiveTexturePtr = (GLInterop.glActiveTextureFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glActiveTexture"), typeof(GLInterop.glActiveTextureFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glActiveTexture'."); }
            try { GLInterop.glSampleCoveragePtr = (GLInterop.glSampleCoverageFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glSampleCoverage"), typeof(GLInterop.glSampleCoverageFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glSampleCoverage'."); }
            try { GLInterop.glCompressedTexImage3DPtr = (GLInterop.glCompressedTexImage3DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCompressedTexImage3D"), typeof(GLInterop.glCompressedTexImage3DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCompressedTexImage3D'."); }
            try { GLInterop.glCompressedTexImage2DPtr = (GLInterop.glCompressedTexImage2DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCompressedTexImage2D"), typeof(GLInterop.glCompressedTexImage2DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCompressedTexImage2D'."); }
            try { GLInterop.glCompressedTexImage1DPtr = (GLInterop.glCompressedTexImage1DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCompressedTexImage1D"), typeof(GLInterop.glCompressedTexImage1DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCompressedTexImage1D'."); }
            try { GLInterop.glCompressedTexSubImage3DPtr = (GLInterop.glCompressedTexSubImage3DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCompressedTexSubImage3D"), typeof(GLInterop.glCompressedTexSubImage3DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCompressedTexSubImage3D'."); }
            try { GLInterop.glCompressedTexSubImage2DPtr = (GLInterop.glCompressedTexSubImage2DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCompressedTexSubImage2D"), typeof(GLInterop.glCompressedTexSubImage2DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCompressedTexSubImage2D'."); }
            try { GLInterop.glCompressedTexSubImage1DPtr = (GLInterop.glCompressedTexSubImage1DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCompressedTexSubImage1D"), typeof(GLInterop.glCompressedTexSubImage1DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCompressedTexSubImage1D'."); }
            try { GLInterop.glGetCompressedTexImagePtr = (GLInterop.glGetCompressedTexImageFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetCompressedTexImage"), typeof(GLInterop.glGetCompressedTexImageFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetCompressedTexImage'."); }
            try { GLInterop.glBlendFuncSeparatePtr = (GLInterop.glBlendFuncSeparateFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBlendFuncSeparate"), typeof(GLInterop.glBlendFuncSeparateFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBlendFuncSeparate'."); }
            try { GLInterop.glMultiDrawArraysPtr = (GLInterop.glMultiDrawArraysFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glMultiDrawArrays"), typeof(GLInterop.glMultiDrawArraysFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glMultiDrawArrays'."); }
            try { GLInterop.glMultiDrawElementsPtr = (GLInterop.glMultiDrawElementsFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glMultiDrawElements"), typeof(GLInterop.glMultiDrawElementsFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glMultiDrawElements'."); }
            try { GLInterop.glPointParameterfPtr = (GLInterop.glPointParameterfFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPointParameterf"), typeof(GLInterop.glPointParameterfFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPointParameterf'."); }
            try { GLInterop.glPointParameterfvPtr = (GLInterop.glPointParameterfvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPointParameterfv"), typeof(GLInterop.glPointParameterfvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPointParameterfv'."); }
            try { GLInterop.glPointParameteriPtr = (GLInterop.glPointParameteriFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPointParameteri"), typeof(GLInterop.glPointParameteriFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPointParameteri'."); }
            try { GLInterop.glPointParameterivPtr = (GLInterop.glPointParameterivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPointParameteriv"), typeof(GLInterop.glPointParameterivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPointParameteriv'."); }
            try { GLInterop.glBlendColorPtr = (GLInterop.glBlendColorFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBlendColor"), typeof(GLInterop.glBlendColorFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBlendColor'."); }
            try { GLInterop.glBlendEquationPtr = (GLInterop.glBlendEquationFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBlendEquation"), typeof(GLInterop.glBlendEquationFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBlendEquation'."); }
            try { GLInterop.glGenQueriesPtr = (GLInterop.glGenQueriesFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGenQueries"), typeof(GLInterop.glGenQueriesFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGenQueries'."); }
            try { GLInterop.glDeleteQueriesPtr = (GLInterop.glDeleteQueriesFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteQueries"), typeof(GLInterop.glDeleteQueriesFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteQueries'."); }
            try { GLInterop.glIsQueryPtr = (GLInterop.glIsQueryFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsQuery"), typeof(GLInterop.glIsQueryFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsQuery'."); }
            try { GLInterop.glBeginQueryPtr = (GLInterop.glBeginQueryFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBeginQuery"), typeof(GLInterop.glBeginQueryFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBeginQuery'."); }
            try { GLInterop.glEndQueryPtr = (GLInterop.glEndQueryFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glEndQuery"), typeof(GLInterop.glEndQueryFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glEndQuery'."); }
            try { GLInterop.glGetQueryivPtr = (GLInterop.glGetQueryivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetQueryiv"), typeof(GLInterop.glGetQueryivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetQueryiv'."); }
            try { GLInterop.glGetQueryObjectivPtr = (GLInterop.glGetQueryObjectivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetQueryObjectiv"), typeof(GLInterop.glGetQueryObjectivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetQueryObjectiv'."); }
            try { GLInterop.glGetQueryObjectuivPtr = (GLInterop.glGetQueryObjectuivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetQueryObjectuiv"), typeof(GLInterop.glGetQueryObjectuivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetQueryObjectuiv'."); }
            try { GLInterop.glBindBufferPtr = (GLInterop.glBindBufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindBuffer"), typeof(GLInterop.glBindBufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindBuffer'."); }
            try { GLInterop.glDeleteBuffersPtr = (GLInterop.glDeleteBuffersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteBuffers"), typeof(GLInterop.glDeleteBuffersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteBuffers'."); }
            try { GLInterop.glGenBuffersPtr = (GLInterop.glGenBuffersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGenBuffers"), typeof(GLInterop.glGenBuffersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGenBuffers'."); }
            try { GLInterop.glIsBufferPtr = (GLInterop.glIsBufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsBuffer"), typeof(GLInterop.glIsBufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsBuffer'."); }
            try { GLInterop.glBufferDataPtr = (GLInterop.glBufferDataFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBufferData"), typeof(GLInterop.glBufferDataFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBufferData'."); }
            try { GLInterop.glBufferSubDataPtr = (GLInterop.glBufferSubDataFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBufferSubData"), typeof(GLInterop.glBufferSubDataFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBufferSubData'."); }
            try { GLInterop.glGetBufferSubDataPtr = (GLInterop.glGetBufferSubDataFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetBufferSubData"), typeof(GLInterop.glGetBufferSubDataFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetBufferSubData'."); }
            try { GLInterop.glMapBufferPtr = (GLInterop.glMapBufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glMapBuffer"), typeof(GLInterop.glMapBufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glMapBuffer'."); }
            try { GLInterop.glUnmapBufferPtr = (GLInterop.glUnmapBufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUnmapBuffer"), typeof(GLInterop.glUnmapBufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUnmapBuffer'."); }
            try { GLInterop.glGetBufferParameterivPtr = (GLInterop.glGetBufferParameterivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetBufferParameteriv"), typeof(GLInterop.glGetBufferParameterivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetBufferParameteriv'."); }
            try { GLInterop.glGetBufferPointervPtr = (GLInterop.glGetBufferPointervFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetBufferPointerv"), typeof(GLInterop.glGetBufferPointervFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetBufferPointerv'."); }
            try { GLInterop.glBlendEquationSeparatePtr = (GLInterop.glBlendEquationSeparateFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBlendEquationSeparate"), typeof(GLInterop.glBlendEquationSeparateFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBlendEquationSeparate'."); }
            try { GLInterop.glDrawBuffersPtr = (GLInterop.glDrawBuffersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawBuffers"), typeof(GLInterop.glDrawBuffersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawBuffers'."); }
            try { GLInterop.glStencilOpSeparatePtr = (GLInterop.glStencilOpSeparateFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glStencilOpSeparate"), typeof(GLInterop.glStencilOpSeparateFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glStencilOpSeparate'."); }
            try { GLInterop.glStencilFuncSeparatePtr = (GLInterop.glStencilFuncSeparateFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glStencilFuncSeparate"), typeof(GLInterop.glStencilFuncSeparateFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glStencilFuncSeparate'."); }
            try { GLInterop.glStencilMaskSeparatePtr = (GLInterop.glStencilMaskSeparateFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glStencilMaskSeparate"), typeof(GLInterop.glStencilMaskSeparateFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glStencilMaskSeparate'."); }
            try { GLInterop.glAttachShaderPtr = (GLInterop.glAttachShaderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glAttachShader"), typeof(GLInterop.glAttachShaderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glAttachShader'."); }
            try { GLInterop.glBindAttribLocationPtr = (GLInterop.glBindAttribLocationFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindAttribLocation"), typeof(GLInterop.glBindAttribLocationFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindAttribLocation'."); }
            try { GLInterop.glCompileShaderPtr = (GLInterop.glCompileShaderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCompileShader"), typeof(GLInterop.glCompileShaderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCompileShader'."); }
            try { GLInterop.glCreateProgramPtr = (GLInterop.glCreateProgramFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCreateProgram"), typeof(GLInterop.glCreateProgramFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCreateProgram'."); }
            try { GLInterop.glCreateShaderPtr = (GLInterop.glCreateShaderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCreateShader"), typeof(GLInterop.glCreateShaderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCreateShader'."); }
            try { GLInterop.glDeleteProgramPtr = (GLInterop.glDeleteProgramFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteProgram"), typeof(GLInterop.glDeleteProgramFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteProgram'."); }
            try { GLInterop.glDeleteShaderPtr = (GLInterop.glDeleteShaderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteShader"), typeof(GLInterop.glDeleteShaderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteShader'."); }
            try { GLInterop.glDetachShaderPtr = (GLInterop.glDetachShaderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDetachShader"), typeof(GLInterop.glDetachShaderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDetachShader'."); }
            try { GLInterop.glDisableVertexAttribArrayPtr = (GLInterop.glDisableVertexAttribArrayFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDisableVertexAttribArray"), typeof(GLInterop.glDisableVertexAttribArrayFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDisableVertexAttribArray'."); }
            try { GLInterop.glEnableVertexAttribArrayPtr = (GLInterop.glEnableVertexAttribArrayFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glEnableVertexAttribArray"), typeof(GLInterop.glEnableVertexAttribArrayFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glEnableVertexAttribArray'."); }
            try { GLInterop.glGetActiveAttribPtr = (GLInterop.glGetActiveAttribFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetActiveAttrib"), typeof(GLInterop.glGetActiveAttribFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetActiveAttrib'."); }
            try { GLInterop.glGetActiveUniformPtr = (GLInterop.glGetActiveUniformFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetActiveUniform"), typeof(GLInterop.glGetActiveUniformFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetActiveUniform'."); }
            try { GLInterop.glGetAttachedShadersPtr = (GLInterop.glGetAttachedShadersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetAttachedShaders"), typeof(GLInterop.glGetAttachedShadersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetAttachedShaders'."); }
            try { GLInterop.glGetAttribLocationPtr = (GLInterop.glGetAttribLocationFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetAttribLocation"), typeof(GLInterop.glGetAttribLocationFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetAttribLocation'."); }
            try { GLInterop.glGetProgramivPtr = (GLInterop.glGetProgramivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetProgramiv"), typeof(GLInterop.glGetProgramivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetProgramiv'."); }
            try { GLInterop.glGetProgramInfoLogPtr = (GLInterop.glGetProgramInfoLogFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetProgramInfoLog"), typeof(GLInterop.glGetProgramInfoLogFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetProgramInfoLog'."); }
            try { GLInterop.glGetShaderivPtr = (GLInterop.glGetShaderivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetShaderiv"), typeof(GLInterop.glGetShaderivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetShaderiv'."); }
            try { GLInterop.glGetShaderInfoLogPtr = (GLInterop.glGetShaderInfoLogFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetShaderInfoLog"), typeof(GLInterop.glGetShaderInfoLogFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetShaderInfoLog'."); }
            try { GLInterop.glGetShaderSourcePtr = (GLInterop.glGetShaderSourceFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetShaderSource"), typeof(GLInterop.glGetShaderSourceFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetShaderSource'."); }
            try { GLInterop.glGetUniformLocationPtr = (GLInterop.glGetUniformLocationFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetUniformLocation"), typeof(GLInterop.glGetUniformLocationFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetUniformLocation'."); }
            try { GLInterop.glGetUniformfvPtr = (GLInterop.glGetUniformfvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetUniformfv"), typeof(GLInterop.glGetUniformfvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetUniformfv'."); }
            try { GLInterop.glGetUniformivPtr = (GLInterop.glGetUniformivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetUniformiv"), typeof(GLInterop.glGetUniformivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetUniformiv'."); }
            try { GLInterop.glGetVertexAttribdvPtr = (GLInterop.glGetVertexAttribdvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetVertexAttribdv"), typeof(GLInterop.glGetVertexAttribdvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetVertexAttribdv'."); }
            try { GLInterop.glGetVertexAttribfvPtr = (GLInterop.glGetVertexAttribfvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetVertexAttribfv"), typeof(GLInterop.glGetVertexAttribfvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetVertexAttribfv'."); }
            try { GLInterop.glGetVertexAttribivPtr = (GLInterop.glGetVertexAttribivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetVertexAttribiv"), typeof(GLInterop.glGetVertexAttribivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetVertexAttribiv'."); }
            try { GLInterop.glGetVertexAttribPointervPtr = (GLInterop.glGetVertexAttribPointervFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetVertexAttribPointerv"), typeof(GLInterop.glGetVertexAttribPointervFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetVertexAttribPointerv'."); }
            try { GLInterop.glIsProgramPtr = (GLInterop.glIsProgramFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsProgram"), typeof(GLInterop.glIsProgramFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsProgram'."); }
            try { GLInterop.glIsShaderPtr = (GLInterop.glIsShaderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsShader"), typeof(GLInterop.glIsShaderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsShader'."); }
            try { GLInterop.glLinkProgramPtr = (GLInterop.glLinkProgramFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glLinkProgram"), typeof(GLInterop.glLinkProgramFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glLinkProgram'."); }
            try { GLInterop.glShaderSourcePtr = (GLInterop.glShaderSourceFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glShaderSource"), typeof(GLInterop.glShaderSourceFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glShaderSource'."); }
            try { GLInterop.glUseProgramPtr = (GLInterop.glUseProgramFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUseProgram"), typeof(GLInterop.glUseProgramFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUseProgram'."); }
            try { GLInterop.glUniform1fPtr = (GLInterop.glUniform1fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform1f"), typeof(GLInterop.glUniform1fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform1f'."); }
            try { GLInterop.glUniform2fPtr = (GLInterop.glUniform2fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform2f"), typeof(GLInterop.glUniform2fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform2f'."); }
            try { GLInterop.glUniform3fPtr = (GLInterop.glUniform3fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform3f"), typeof(GLInterop.glUniform3fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform3f'."); }
            try { GLInterop.glUniform4fPtr = (GLInterop.glUniform4fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform4f"), typeof(GLInterop.glUniform4fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform4f'."); }
            try { GLInterop.glUniform1iPtr = (GLInterop.glUniform1iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform1i"), typeof(GLInterop.glUniform1iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform1i'."); }
            try { GLInterop.glUniform2iPtr = (GLInterop.glUniform2iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform2i"), typeof(GLInterop.glUniform2iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform2i'."); }
            try { GLInterop.glUniform3iPtr = (GLInterop.glUniform3iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform3i"), typeof(GLInterop.glUniform3iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform3i'."); }
            try { GLInterop.glUniform4iPtr = (GLInterop.glUniform4iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform4i"), typeof(GLInterop.glUniform4iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform4i'."); }
            try { GLInterop.glUniform1fvPtr = (GLInterop.glUniform1fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform1fv"), typeof(GLInterop.glUniform1fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform1fv'."); }
            try { GLInterop.glUniform2fvPtr = (GLInterop.glUniform2fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform2fv"), typeof(GLInterop.glUniform2fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform2fv'."); }
            try { GLInterop.glUniform3fvPtr = (GLInterop.glUniform3fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform3fv"), typeof(GLInterop.glUniform3fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform3fv'."); }
            try { GLInterop.glUniform4fvPtr = (GLInterop.glUniform4fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform4fv"), typeof(GLInterop.glUniform4fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform4fv'."); }
            try { GLInterop.glUniform1ivPtr = (GLInterop.glUniform1ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform1iv"), typeof(GLInterop.glUniform1ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform1iv'."); }
            try { GLInterop.glUniform2ivPtr = (GLInterop.glUniform2ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform2iv"), typeof(GLInterop.glUniform2ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform2iv'."); }
            try { GLInterop.glUniform3ivPtr = (GLInterop.glUniform3ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform3iv"), typeof(GLInterop.glUniform3ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform3iv'."); }
            try { GLInterop.glUniform4ivPtr = (GLInterop.glUniform4ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform4iv"), typeof(GLInterop.glUniform4ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform4iv'."); }
            try { GLInterop.glUniformMatrix2fvPtr = (GLInterop.glUniformMatrix2fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix2fv"), typeof(GLInterop.glUniformMatrix2fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix2fv'."); }
            try { GLInterop.glUniformMatrix3fvPtr = (GLInterop.glUniformMatrix3fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix3fv"), typeof(GLInterop.glUniformMatrix3fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix3fv'."); }
            try { GLInterop.glUniformMatrix4fvPtr = (GLInterop.glUniformMatrix4fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix4fv"), typeof(GLInterop.glUniformMatrix4fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix4fv'."); }
            try { GLInterop.glValidateProgramPtr = (GLInterop.glValidateProgramFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glValidateProgram"), typeof(GLInterop.glValidateProgramFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glValidateProgram'."); }
            try { GLInterop.glVertexAttrib1dPtr = (GLInterop.glVertexAttrib1dFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib1d"), typeof(GLInterop.glVertexAttrib1dFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib1d'."); }
            try { GLInterop.glVertexAttrib1dvPtr = (GLInterop.glVertexAttrib1dvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib1dv"), typeof(GLInterop.glVertexAttrib1dvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib1dv'."); }
            try { GLInterop.glVertexAttrib1fPtr = (GLInterop.glVertexAttrib1fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib1f"), typeof(GLInterop.glVertexAttrib1fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib1f'."); }
            try { GLInterop.glVertexAttrib1fvPtr = (GLInterop.glVertexAttrib1fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib1fv"), typeof(GLInterop.glVertexAttrib1fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib1fv'."); }
            try { GLInterop.glVertexAttrib1sPtr = (GLInterop.glVertexAttrib1sFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib1s"), typeof(GLInterop.glVertexAttrib1sFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib1s'."); }
            try { GLInterop.glVertexAttrib1svPtr = (GLInterop.glVertexAttrib1svFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib1sv"), typeof(GLInterop.glVertexAttrib1svFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib1sv'."); }
            try { GLInterop.glVertexAttrib2dPtr = (GLInterop.glVertexAttrib2dFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib2d"), typeof(GLInterop.glVertexAttrib2dFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib2d'."); }
            try { GLInterop.glVertexAttrib2dvPtr = (GLInterop.glVertexAttrib2dvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib2dv"), typeof(GLInterop.glVertexAttrib2dvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib2dv'."); }
            try { GLInterop.glVertexAttrib2fPtr = (GLInterop.glVertexAttrib2fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib2f"), typeof(GLInterop.glVertexAttrib2fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib2f'."); }
            try { GLInterop.glVertexAttrib2fvPtr = (GLInterop.glVertexAttrib2fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib2fv"), typeof(GLInterop.glVertexAttrib2fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib2fv'."); }
            try { GLInterop.glVertexAttrib2sPtr = (GLInterop.glVertexAttrib2sFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib2s"), typeof(GLInterop.glVertexAttrib2sFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib2s'."); }
            try { GLInterop.glVertexAttrib2svPtr = (GLInterop.glVertexAttrib2svFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib2sv"), typeof(GLInterop.glVertexAttrib2svFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib2sv'."); }
            try { GLInterop.glVertexAttrib3dPtr = (GLInterop.glVertexAttrib3dFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib3d"), typeof(GLInterop.glVertexAttrib3dFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib3d'."); }
            try { GLInterop.glVertexAttrib3dvPtr = (GLInterop.glVertexAttrib3dvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib3dv"), typeof(GLInterop.glVertexAttrib3dvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib3dv'."); }
            try { GLInterop.glVertexAttrib3fPtr = (GLInterop.glVertexAttrib3fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib3f"), typeof(GLInterop.glVertexAttrib3fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib3f'."); }
            try { GLInterop.glVertexAttrib3fvPtr = (GLInterop.glVertexAttrib3fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib3fv"), typeof(GLInterop.glVertexAttrib3fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib3fv'."); }
            try { GLInterop.glVertexAttrib3sPtr = (GLInterop.glVertexAttrib3sFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib3s"), typeof(GLInterop.glVertexAttrib3sFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib3s'."); }
            try { GLInterop.glVertexAttrib3svPtr = (GLInterop.glVertexAttrib3svFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib3sv"), typeof(GLInterop.glVertexAttrib3svFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib3sv'."); }
            try { GLInterop.glVertexAttrib4NbvPtr = (GLInterop.glVertexAttrib4NbvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4Nbv"), typeof(GLInterop.glVertexAttrib4NbvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4Nbv'."); }
            try { GLInterop.glVertexAttrib4NivPtr = (GLInterop.glVertexAttrib4NivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4Niv"), typeof(GLInterop.glVertexAttrib4NivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4Niv'."); }
            try { GLInterop.glVertexAttrib4NsvPtr = (GLInterop.glVertexAttrib4NsvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4Nsv"), typeof(GLInterop.glVertexAttrib4NsvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4Nsv'."); }
            try { GLInterop.glVertexAttrib4NubPtr = (GLInterop.glVertexAttrib4NubFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4Nub"), typeof(GLInterop.glVertexAttrib4NubFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4Nub'."); }
            try { GLInterop.glVertexAttrib4NubvPtr = (GLInterop.glVertexAttrib4NubvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4Nubv"), typeof(GLInterop.glVertexAttrib4NubvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4Nubv'."); }
            try { GLInterop.glVertexAttrib4NuivPtr = (GLInterop.glVertexAttrib4NuivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4Nuiv"), typeof(GLInterop.glVertexAttrib4NuivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4Nuiv'."); }
            try { GLInterop.glVertexAttrib4NusvPtr = (GLInterop.glVertexAttrib4NusvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4Nusv"), typeof(GLInterop.glVertexAttrib4NusvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4Nusv'."); }
            try { GLInterop.glVertexAttrib4bvPtr = (GLInterop.glVertexAttrib4bvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4bv"), typeof(GLInterop.glVertexAttrib4bvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4bv'."); }
            try { GLInterop.glVertexAttrib4dPtr = (GLInterop.glVertexAttrib4dFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4d"), typeof(GLInterop.glVertexAttrib4dFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4d'."); }
            try { GLInterop.glVertexAttrib4dvPtr = (GLInterop.glVertexAttrib4dvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4dv"), typeof(GLInterop.glVertexAttrib4dvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4dv'."); }
            try { GLInterop.glVertexAttrib4fPtr = (GLInterop.glVertexAttrib4fFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4f"), typeof(GLInterop.glVertexAttrib4fFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4f'."); }
            try { GLInterop.glVertexAttrib4fvPtr = (GLInterop.glVertexAttrib4fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4fv"), typeof(GLInterop.glVertexAttrib4fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4fv'."); }
            try { GLInterop.glVertexAttrib4ivPtr = (GLInterop.glVertexAttrib4ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4iv"), typeof(GLInterop.glVertexAttrib4ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4iv'."); }
            try { GLInterop.glVertexAttrib4sPtr = (GLInterop.glVertexAttrib4sFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4s"), typeof(GLInterop.glVertexAttrib4sFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4s'."); }
            try { GLInterop.glVertexAttrib4svPtr = (GLInterop.glVertexAttrib4svFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4sv"), typeof(GLInterop.glVertexAttrib4svFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4sv'."); }
            try { GLInterop.glVertexAttrib4ubvPtr = (GLInterop.glVertexAttrib4ubvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4ubv"), typeof(GLInterop.glVertexAttrib4ubvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4ubv'."); }
            try { GLInterop.glVertexAttrib4uivPtr = (GLInterop.glVertexAttrib4uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4uiv"), typeof(GLInterop.glVertexAttrib4uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4uiv'."); }
            try { GLInterop.glVertexAttrib4usvPtr = (GLInterop.glVertexAttrib4usvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttrib4usv"), typeof(GLInterop.glVertexAttrib4usvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttrib4usv'."); }
            try { GLInterop.glVertexAttribPointerPtr = (GLInterop.glVertexAttribPointerFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribPointer"), typeof(GLInterop.glVertexAttribPointerFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribPointer'."); }
            try { GLInterop.glUniformMatrix2x3fvPtr = (GLInterop.glUniformMatrix2x3fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix2x3fv"), typeof(GLInterop.glUniformMatrix2x3fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix2x3fv'."); }
            try { GLInterop.glUniformMatrix3x2fvPtr = (GLInterop.glUniformMatrix3x2fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix3x2fv"), typeof(GLInterop.glUniformMatrix3x2fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix3x2fv'."); }
            try { GLInterop.glUniformMatrix2x4fvPtr = (GLInterop.glUniformMatrix2x4fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix2x4fv"), typeof(GLInterop.glUniformMatrix2x4fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix2x4fv'."); }
            try { GLInterop.glUniformMatrix4x2fvPtr = (GLInterop.glUniformMatrix4x2fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix4x2fv"), typeof(GLInterop.glUniformMatrix4x2fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix4x2fv'."); }
            try { GLInterop.glUniformMatrix3x4fvPtr = (GLInterop.glUniformMatrix3x4fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix3x4fv"), typeof(GLInterop.glUniformMatrix3x4fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix3x4fv'."); }
            try { GLInterop.glUniformMatrix4x3fvPtr = (GLInterop.glUniformMatrix4x3fvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformMatrix4x3fv"), typeof(GLInterop.glUniformMatrix4x3fvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformMatrix4x3fv'."); }
            try { GLInterop.glColorMaskiPtr = (GLInterop.glColorMaskiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glColorMaski"), typeof(GLInterop.glColorMaskiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glColorMaski'."); }
            try { GLInterop.glGetBooleani_vPtr = (GLInterop.glGetBooleani_vFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetBooleani_v"), typeof(GLInterop.glGetBooleani_vFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetBooleani_v'."); }
            try { GLInterop.glGetIntegeri_vPtr = (GLInterop.glGetIntegeri_vFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetIntegeri_v"), typeof(GLInterop.glGetIntegeri_vFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetIntegeri_v'."); }
            try { GLInterop.glEnableiPtr = (GLInterop.glEnableiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glEnablei"), typeof(GLInterop.glEnableiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glEnablei'."); }
            try { GLInterop.glDisableiPtr = (GLInterop.glDisableiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDisablei"), typeof(GLInterop.glDisableiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDisablei'."); }
            try { GLInterop.glIsEnablediPtr = (GLInterop.glIsEnablediFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsEnabledi"), typeof(GLInterop.glIsEnablediFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsEnabledi'."); }
            try { GLInterop.glBeginTransformFeedbackPtr = (GLInterop.glBeginTransformFeedbackFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBeginTransformFeedback"), typeof(GLInterop.glBeginTransformFeedbackFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBeginTransformFeedback'."); }
            try { GLInterop.glEndTransformFeedbackPtr = (GLInterop.glEndTransformFeedbackFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glEndTransformFeedback"), typeof(GLInterop.glEndTransformFeedbackFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glEndTransformFeedback'."); }
            try { GLInterop.glBindBufferRangePtr = (GLInterop.glBindBufferRangeFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindBufferRange"), typeof(GLInterop.glBindBufferRangeFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindBufferRange'."); }
            try { GLInterop.glBindBufferBasePtr = (GLInterop.glBindBufferBaseFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindBufferBase"), typeof(GLInterop.glBindBufferBaseFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindBufferBase'."); }
            try { GLInterop.glTransformFeedbackVaryingsPtr = (GLInterop.glTransformFeedbackVaryingsFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTransformFeedbackVaryings"), typeof(GLInterop.glTransformFeedbackVaryingsFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTransformFeedbackVaryings'."); }
            try { GLInterop.glGetTransformFeedbackVaryingPtr = (GLInterop.glGetTransformFeedbackVaryingFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTransformFeedbackVarying"), typeof(GLInterop.glGetTransformFeedbackVaryingFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTransformFeedbackVarying'."); }
            try { GLInterop.glClampColorPtr = (GLInterop.glClampColorFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClampColor"), typeof(GLInterop.glClampColorFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClampColor'."); }
            try { GLInterop.glBeginConditionalRenderPtr = (GLInterop.glBeginConditionalRenderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBeginConditionalRender"), typeof(GLInterop.glBeginConditionalRenderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBeginConditionalRender'."); }
            try { GLInterop.glEndConditionalRenderPtr = (GLInterop.glEndConditionalRenderFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glEndConditionalRender"), typeof(GLInterop.glEndConditionalRenderFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glEndConditionalRender'."); }
            try { GLInterop.glVertexAttribIPointerPtr = (GLInterop.glVertexAttribIPointerFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribIPointer"), typeof(GLInterop.glVertexAttribIPointerFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribIPointer'."); }
            try { GLInterop.glGetVertexAttribIivPtr = (GLInterop.glGetVertexAttribIivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetVertexAttribIiv"), typeof(GLInterop.glGetVertexAttribIivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetVertexAttribIiv'."); }
            try { GLInterop.glGetVertexAttribIuivPtr = (GLInterop.glGetVertexAttribIuivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetVertexAttribIuiv"), typeof(GLInterop.glGetVertexAttribIuivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetVertexAttribIuiv'."); }
            try { GLInterop.glVertexAttribI1iPtr = (GLInterop.glVertexAttribI1iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI1i"), typeof(GLInterop.glVertexAttribI1iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI1i'."); }
            try { GLInterop.glVertexAttribI2iPtr = (GLInterop.glVertexAttribI2iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI2i"), typeof(GLInterop.glVertexAttribI2iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI2i'."); }
            try { GLInterop.glVertexAttribI3iPtr = (GLInterop.glVertexAttribI3iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI3i"), typeof(GLInterop.glVertexAttribI3iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI3i'."); }
            try { GLInterop.glVertexAttribI4iPtr = (GLInterop.glVertexAttribI4iFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4i"), typeof(GLInterop.glVertexAttribI4iFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4i'."); }
            try { GLInterop.glVertexAttribI1uiPtr = (GLInterop.glVertexAttribI1uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI1ui"), typeof(GLInterop.glVertexAttribI1uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI1ui'."); }
            try { GLInterop.glVertexAttribI2uiPtr = (GLInterop.glVertexAttribI2uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI2ui"), typeof(GLInterop.glVertexAttribI2uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI2ui'."); }
            try { GLInterop.glVertexAttribI3uiPtr = (GLInterop.glVertexAttribI3uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI3ui"), typeof(GLInterop.glVertexAttribI3uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI3ui'."); }
            try { GLInterop.glVertexAttribI4uiPtr = (GLInterop.glVertexAttribI4uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4ui"), typeof(GLInterop.glVertexAttribI4uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4ui'."); }
            try { GLInterop.glVertexAttribI1ivPtr = (GLInterop.glVertexAttribI1ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI1iv"), typeof(GLInterop.glVertexAttribI1ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI1iv'."); }
            try { GLInterop.glVertexAttribI2ivPtr = (GLInterop.glVertexAttribI2ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI2iv"), typeof(GLInterop.glVertexAttribI2ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI2iv'."); }
            try { GLInterop.glVertexAttribI3ivPtr = (GLInterop.glVertexAttribI3ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI3iv"), typeof(GLInterop.glVertexAttribI3ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI3iv'."); }
            try { GLInterop.glVertexAttribI4ivPtr = (GLInterop.glVertexAttribI4ivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4iv"), typeof(GLInterop.glVertexAttribI4ivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4iv'."); }
            try { GLInterop.glVertexAttribI1uivPtr = (GLInterop.glVertexAttribI1uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI1uiv"), typeof(GLInterop.glVertexAttribI1uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI1uiv'."); }
            try { GLInterop.glVertexAttribI2uivPtr = (GLInterop.glVertexAttribI2uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI2uiv"), typeof(GLInterop.glVertexAttribI2uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI2uiv'."); }
            try { GLInterop.glVertexAttribI3uivPtr = (GLInterop.glVertexAttribI3uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI3uiv"), typeof(GLInterop.glVertexAttribI3uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI3uiv'."); }
            try { GLInterop.glVertexAttribI4uivPtr = (GLInterop.glVertexAttribI4uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4uiv"), typeof(GLInterop.glVertexAttribI4uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4uiv'."); }
            try { GLInterop.glVertexAttribI4bvPtr = (GLInterop.glVertexAttribI4bvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4bv"), typeof(GLInterop.glVertexAttribI4bvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4bv'."); }
            try { GLInterop.glVertexAttribI4svPtr = (GLInterop.glVertexAttribI4svFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4sv"), typeof(GLInterop.glVertexAttribI4svFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4sv'."); }
            try { GLInterop.glVertexAttribI4ubvPtr = (GLInterop.glVertexAttribI4ubvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4ubv"), typeof(GLInterop.glVertexAttribI4ubvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4ubv'."); }
            try { GLInterop.glVertexAttribI4usvPtr = (GLInterop.glVertexAttribI4usvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glVertexAttribI4usv"), typeof(GLInterop.glVertexAttribI4usvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glVertexAttribI4usv'."); }
            try { GLInterop.glGetUniformuivPtr = (GLInterop.glGetUniformuivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetUniformuiv"), typeof(GLInterop.glGetUniformuivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetUniformuiv'."); }
            try { GLInterop.glBindFragDataLocationPtr = (GLInterop.glBindFragDataLocationFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindFragDataLocation"), typeof(GLInterop.glBindFragDataLocationFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindFragDataLocation'."); }
            try { GLInterop.glGetFragDataLocationPtr = (GLInterop.glGetFragDataLocationFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetFragDataLocation"), typeof(GLInterop.glGetFragDataLocationFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetFragDataLocation'."); }
            try { GLInterop.glUniform1uiPtr = (GLInterop.glUniform1uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform1ui"), typeof(GLInterop.glUniform1uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform1ui'."); }
            try { GLInterop.glUniform2uiPtr = (GLInterop.glUniform2uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform2ui"), typeof(GLInterop.glUniform2uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform2ui'."); }
            try { GLInterop.glUniform3uiPtr = (GLInterop.glUniform3uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform3ui"), typeof(GLInterop.glUniform3uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform3ui'."); }
            try { GLInterop.glUniform4uiPtr = (GLInterop.glUniform4uiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform4ui"), typeof(GLInterop.glUniform4uiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform4ui'."); }
            try { GLInterop.glUniform1uivPtr = (GLInterop.glUniform1uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform1uiv"), typeof(GLInterop.glUniform1uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform1uiv'."); }
            try { GLInterop.glUniform2uivPtr = (GLInterop.glUniform2uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform2uiv"), typeof(GLInterop.glUniform2uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform2uiv'."); }
            try { GLInterop.glUniform3uivPtr = (GLInterop.glUniform3uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform3uiv"), typeof(GLInterop.glUniform3uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform3uiv'."); }
            try { GLInterop.glUniform4uivPtr = (GLInterop.glUniform4uivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniform4uiv"), typeof(GLInterop.glUniform4uivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniform4uiv'."); }
            try { GLInterop.glTexParameterIivPtr = (GLInterop.glTexParameterIivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexParameterIiv"), typeof(GLInterop.glTexParameterIivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexParameterIiv'."); }
            try { GLInterop.glTexParameterIuivPtr = (GLInterop.glTexParameterIuivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexParameterIuiv"), typeof(GLInterop.glTexParameterIuivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexParameterIuiv'."); }
            try { GLInterop.glGetTexParameterIivPtr = (GLInterop.glGetTexParameterIivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTexParameterIiv"), typeof(GLInterop.glGetTexParameterIivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTexParameterIiv'."); }
            try { GLInterop.glGetTexParameterIuivPtr = (GLInterop.glGetTexParameterIuivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetTexParameterIuiv"), typeof(GLInterop.glGetTexParameterIuivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetTexParameterIuiv'."); }
            try { GLInterop.glClearBufferivPtr = (GLInterop.glClearBufferivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClearBufferiv"), typeof(GLInterop.glClearBufferivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClearBufferiv'."); }
            try { GLInterop.glClearBufferuivPtr = (GLInterop.glClearBufferuivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClearBufferuiv"), typeof(GLInterop.glClearBufferuivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClearBufferuiv'."); }
            try { GLInterop.glClearBufferfvPtr = (GLInterop.glClearBufferfvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClearBufferfv"), typeof(GLInterop.glClearBufferfvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClearBufferfv'."); }
            try { GLInterop.glClearBufferfiPtr = (GLInterop.glClearBufferfiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClearBufferfi"), typeof(GLInterop.glClearBufferfiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClearBufferfi'."); }
            try { GLInterop.glGetStringiPtr = (GLInterop.glGetStringiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetStringi"), typeof(GLInterop.glGetStringiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetStringi'."); }
            try { GLInterop.glIsRenderbufferPtr = (GLInterop.glIsRenderbufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsRenderbuffer"), typeof(GLInterop.glIsRenderbufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsRenderbuffer'."); }
            try { GLInterop.glBindRenderbufferPtr = (GLInterop.glBindRenderbufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindRenderbuffer"), typeof(GLInterop.glBindRenderbufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindRenderbuffer'."); }
            try { GLInterop.glDeleteRenderbuffersPtr = (GLInterop.glDeleteRenderbuffersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteRenderbuffers"), typeof(GLInterop.glDeleteRenderbuffersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteRenderbuffers'."); }
            try { GLInterop.glGenRenderbuffersPtr = (GLInterop.glGenRenderbuffersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGenRenderbuffers"), typeof(GLInterop.glGenRenderbuffersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGenRenderbuffers'."); }
            try { GLInterop.glRenderbufferStoragePtr = (GLInterop.glRenderbufferStorageFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glRenderbufferStorage"), typeof(GLInterop.glRenderbufferStorageFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glRenderbufferStorage'."); }
            try { GLInterop.glGetRenderbufferParameterivPtr = (GLInterop.glGetRenderbufferParameterivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetRenderbufferParameteriv"), typeof(GLInterop.glGetRenderbufferParameterivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetRenderbufferParameteriv'."); }
            try { GLInterop.glIsFramebufferPtr = (GLInterop.glIsFramebufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsFramebuffer"), typeof(GLInterop.glIsFramebufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsFramebuffer'."); }
            try { GLInterop.glBindFramebufferPtr = (GLInterop.glBindFramebufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindFramebuffer"), typeof(GLInterop.glBindFramebufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindFramebuffer'."); }
            try { GLInterop.glDeleteFramebuffersPtr = (GLInterop.glDeleteFramebuffersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteFramebuffers"), typeof(GLInterop.glDeleteFramebuffersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteFramebuffers'."); }
            try { GLInterop.glGenFramebuffersPtr = (GLInterop.glGenFramebuffersFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGenFramebuffers"), typeof(GLInterop.glGenFramebuffersFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGenFramebuffers'."); }
            try { GLInterop.glCheckFramebufferStatusPtr = (GLInterop.glCheckFramebufferStatusFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCheckFramebufferStatus"), typeof(GLInterop.glCheckFramebufferStatusFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCheckFramebufferStatus'."); }
            try { GLInterop.glFramebufferTexture1DPtr = (GLInterop.glFramebufferTexture1DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFramebufferTexture1D"), typeof(GLInterop.glFramebufferTexture1DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFramebufferTexture1D'."); }
            try { GLInterop.glFramebufferTexture2DPtr = (GLInterop.glFramebufferTexture2DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFramebufferTexture2D"), typeof(GLInterop.glFramebufferTexture2DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFramebufferTexture2D'."); }
            try { GLInterop.glFramebufferTexture3DPtr = (GLInterop.glFramebufferTexture3DFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFramebufferTexture3D"), typeof(GLInterop.glFramebufferTexture3DFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFramebufferTexture3D'."); }
            try { GLInterop.glFramebufferRenderbufferPtr = (GLInterop.glFramebufferRenderbufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFramebufferRenderbuffer"), typeof(GLInterop.glFramebufferRenderbufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFramebufferRenderbuffer'."); }
            try { GLInterop.glGetFramebufferAttachmentParameterivPtr = (GLInterop.glGetFramebufferAttachmentParameterivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetFramebufferAttachmentParameteriv"), typeof(GLInterop.glGetFramebufferAttachmentParameterivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetFramebufferAttachmentParameteriv'."); }
            try { GLInterop.glGenerateMipmapPtr = (GLInterop.glGenerateMipmapFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGenerateMipmap"), typeof(GLInterop.glGenerateMipmapFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGenerateMipmap'."); }
            try { GLInterop.glBlitFramebufferPtr = (GLInterop.glBlitFramebufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBlitFramebuffer"), typeof(GLInterop.glBlitFramebufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBlitFramebuffer'."); }
            try { GLInterop.glRenderbufferStorageMultisamplePtr = (GLInterop.glRenderbufferStorageMultisampleFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glRenderbufferStorageMultisample"), typeof(GLInterop.glRenderbufferStorageMultisampleFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glRenderbufferStorageMultisample'."); }
            try { GLInterop.glFramebufferTextureLayerPtr = (GLInterop.glFramebufferTextureLayerFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFramebufferTextureLayer"), typeof(GLInterop.glFramebufferTextureLayerFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFramebufferTextureLayer'."); }
            try { GLInterop.glMapBufferRangePtr = (GLInterop.glMapBufferRangeFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glMapBufferRange"), typeof(GLInterop.glMapBufferRangeFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glMapBufferRange'."); }
            try { GLInterop.glFlushMappedBufferRangePtr = (GLInterop.glFlushMappedBufferRangeFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFlushMappedBufferRange"), typeof(GLInterop.glFlushMappedBufferRangeFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFlushMappedBufferRange'."); }
            try { GLInterop.glBindVertexArrayPtr = (GLInterop.glBindVertexArrayFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glBindVertexArray"), typeof(GLInterop.glBindVertexArrayFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glBindVertexArray'."); }
            try { GLInterop.glDeleteVertexArraysPtr = (GLInterop.glDeleteVertexArraysFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteVertexArrays"), typeof(GLInterop.glDeleteVertexArraysFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteVertexArrays'."); }
            try { GLInterop.glGenVertexArraysPtr = (GLInterop.glGenVertexArraysFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGenVertexArrays"), typeof(GLInterop.glGenVertexArraysFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGenVertexArrays'."); }
            try { GLInterop.glIsVertexArrayPtr = (GLInterop.glIsVertexArrayFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsVertexArray"), typeof(GLInterop.glIsVertexArrayFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsVertexArray'."); }
            try { GLInterop.glDrawArraysInstancedPtr = (GLInterop.glDrawArraysInstancedFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawArraysInstanced"), typeof(GLInterop.glDrawArraysInstancedFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawArraysInstanced'."); }
            try { GLInterop.glDrawElementsInstancedPtr = (GLInterop.glDrawElementsInstancedFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawElementsInstanced"), typeof(GLInterop.glDrawElementsInstancedFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawElementsInstanced'."); }
            try { GLInterop.glTexBufferPtr = (GLInterop.glTexBufferFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexBuffer"), typeof(GLInterop.glTexBufferFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexBuffer'."); }
            try { GLInterop.glPrimitiveRestartIndexPtr = (GLInterop.glPrimitiveRestartIndexFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glPrimitiveRestartIndex"), typeof(GLInterop.glPrimitiveRestartIndexFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glPrimitiveRestartIndex'."); }
            try { GLInterop.glCopyBufferSubDataPtr = (GLInterop.glCopyBufferSubDataFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glCopyBufferSubData"), typeof(GLInterop.glCopyBufferSubDataFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glCopyBufferSubData'."); }
            try { GLInterop.glGetUniformIndicesPtr = (GLInterop.glGetUniformIndicesFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetUniformIndices"), typeof(GLInterop.glGetUniformIndicesFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetUniformIndices'."); }
            try { GLInterop.glGetActiveUniformsivPtr = (GLInterop.glGetActiveUniformsivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetActiveUniformsiv"), typeof(GLInterop.glGetActiveUniformsivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetActiveUniformsiv'."); }
            try { GLInterop.glGetActiveUniformNamePtr = (GLInterop.glGetActiveUniformNameFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetActiveUniformName"), typeof(GLInterop.glGetActiveUniformNameFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetActiveUniformName'."); }
            try { GLInterop.glGetUniformBlockIndexPtr = (GLInterop.glGetUniformBlockIndexFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetUniformBlockIndex"), typeof(GLInterop.glGetUniformBlockIndexFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetUniformBlockIndex'."); }
            try { GLInterop.glGetActiveUniformBlockivPtr = (GLInterop.glGetActiveUniformBlockivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetActiveUniformBlockiv"), typeof(GLInterop.glGetActiveUniformBlockivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetActiveUniformBlockiv'."); }
            try { GLInterop.glGetActiveUniformBlockNamePtr = (GLInterop.glGetActiveUniformBlockNameFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetActiveUniformBlockName"), typeof(GLInterop.glGetActiveUniformBlockNameFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetActiveUniformBlockName'."); }
            try { GLInterop.glUniformBlockBindingPtr = (GLInterop.glUniformBlockBindingFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glUniformBlockBinding"), typeof(GLInterop.glUniformBlockBindingFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glUniformBlockBinding'."); }
            try { GLInterop.glDrawElementsBaseVertexPtr = (GLInterop.glDrawElementsBaseVertexFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawElementsBaseVertex"), typeof(GLInterop.glDrawElementsBaseVertexFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawElementsBaseVertex'."); }
            try { GLInterop.glDrawRangeElementsBaseVertexPtr = (GLInterop.glDrawRangeElementsBaseVertexFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawRangeElementsBaseVertex"), typeof(GLInterop.glDrawRangeElementsBaseVertexFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawRangeElementsBaseVertex'."); }
            try { GLInterop.glDrawElementsInstancedBaseVertexPtr = (GLInterop.glDrawElementsInstancedBaseVertexFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDrawElementsInstancedBaseVertex"), typeof(GLInterop.glDrawElementsInstancedBaseVertexFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDrawElementsInstancedBaseVertex'."); }
            try { GLInterop.glMultiDrawElementsBaseVertexPtr = (GLInterop.glMultiDrawElementsBaseVertexFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glMultiDrawElementsBaseVertex"), typeof(GLInterop.glMultiDrawElementsBaseVertexFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glMultiDrawElementsBaseVertex'."); }
            try { GLInterop.glProvokingVertexPtr = (GLInterop.glProvokingVertexFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glProvokingVertex"), typeof(GLInterop.glProvokingVertexFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glProvokingVertex'."); }
            try { GLInterop.glFenceSyncPtr = (GLInterop.glFenceSyncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFenceSync"), typeof(GLInterop.glFenceSyncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFenceSync'."); }
            try { GLInterop.glIsSyncPtr = (GLInterop.glIsSyncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glIsSync"), typeof(GLInterop.glIsSyncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glIsSync'."); }
            try { GLInterop.glDeleteSyncPtr = (GLInterop.glDeleteSyncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glDeleteSync"), typeof(GLInterop.glDeleteSyncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glDeleteSync'."); }
            try { GLInterop.glClientWaitSyncPtr = (GLInterop.glClientWaitSyncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glClientWaitSync"), typeof(GLInterop.glClientWaitSyncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glClientWaitSync'."); }
            try { GLInterop.glWaitSyncPtr = (GLInterop.glWaitSyncFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glWaitSync"), typeof(GLInterop.glWaitSyncFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glWaitSync'."); }
            try { GLInterop.glGetInteger64vPtr = (GLInterop.glGetInteger64vFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetInteger64v"), typeof(GLInterop.glGetInteger64vFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetInteger64v'."); }
            try { GLInterop.glGetSyncivPtr = (GLInterop.glGetSyncivFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetSynciv"), typeof(GLInterop.glGetSyncivFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetSynciv'."); }
            try { GLInterop.glGetInteger64i_vPtr = (GLInterop.glGetInteger64i_vFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetInteger64i_v"), typeof(GLInterop.glGetInteger64i_vFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetInteger64i_v'."); }
            try { GLInterop.glGetBufferParameteri64vPtr = (GLInterop.glGetBufferParameteri64vFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetBufferParameteri64v"), typeof(GLInterop.glGetBufferParameteri64vFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetBufferParameteri64v'."); }
            try { GLInterop.glFramebufferTexturePtr = (GLInterop.glFramebufferTextureFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glFramebufferTexture"), typeof(GLInterop.glFramebufferTextureFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glFramebufferTexture'."); }
            try { GLInterop.glTexImage2DMultisamplePtr = (GLInterop.glTexImage2DMultisampleFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexImage2DMultisample"), typeof(GLInterop.glTexImage2DMultisampleFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexImage2DMultisample'."); }
            try { GLInterop.glTexImage3DMultisamplePtr = (GLInterop.glTexImage3DMultisampleFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glTexImage3DMultisample"), typeof(GLInterop.glTexImage3DMultisampleFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glTexImage3DMultisample'."); }
            try { GLInterop.glGetMultisamplefvPtr = (GLInterop.glGetMultisamplefvFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glGetMultisamplefv"), typeof(GLInterop.glGetMultisamplefvFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glGetMultisamplefv'."); }
            try { GLInterop.glSampleMaskiPtr = (GLInterop.glSampleMaskiFunc)Marshal.GetDelegateForFunctionPointer(GetProcAddress("glSampleMaski"), typeof(GLInterop.glSampleMaskiFunc)); }
            catch { throw new InvalidOperationException("Failed to get function pointer for 'glSampleMaski'."); }
        }

        public static void LoadFunction(string name)
        {
            try
            {
                var memberInfo = typeof(GLInterop).GetField(name + "Ptr", BindingFlags.Public | BindingFlags.Static);
                Debug.Assert(memberInfo != null, string.Format("Failed to find function delegate. Ensure '{0}' is a valid OpenGL function.", name));
                var procAddr = GetProcAddress(name);
                Debug.Assert(procAddr != IntPtr.Zero, string.Format("Failed to find function address. Ensure '{0}' is a valid OpenGL function.", name));
                var funcPtr = Marshal.GetDelegateForFunctionPointer(procAddr, memberInfo.FieldType);
                Debug.Assert(funcPtr != null, string.Format("Failed to convert function address to delegate for '{0}'.", name));
                memberInfo.SetValue(null, funcPtr);
            }
            catch
            {
                throw new InvalidOperationException(string.Format("Failed to load function '{0}'.", name));
            }
        }
        #endregion
    }
}
