view demos/gltypes.d @ 1650:40bd4a0d4870

Update to work with LLVM 2.7. Removed use of dyn_cast, llvm no compiles without exceptions and rtti by default. We do need exceptions for the libconfig stuff, but rtti isn't necessary (anymore). Debug info needs to be rewritten, as in LLVM 2.7 the format has completely changed. To have something to look at while rewriting, the old code has been wrapped inside #ifndef DISABLE_DEBUG_INFO , this means that you have to define this to compile at the moment. Updated tango 0.99.9 patch to include updated EH runtime code, which is needed for LLVM 2.7 as well.
author Tomas Lindquist Olsen
date Wed, 19 May 2010 12:42:32 +0200
parents 0b9b286b67b6
children
line wrap: on
line source

/*
 * Copyright (c) 2004-2006 Derelict Developers
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 *
 * * Neither the names 'Derelict', 'DerelictGL', nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Converted to a static binding by Tomas Lindquist Olsen <tomas@famolsen.dk>
 */
module gltypes;

version(build) pragma(link,"GL");

alias uint      GLenum;
alias ubyte     GLboolean;
alias uint      GLbitfield;
alias void      GLvoid;
alias byte      GLbyte;
alias short     GLshort;
alias int       GLint;
alias ubyte     GLubyte;
alias ushort    GLushort;
alias uint      GLuint;
alias int       GLsizei;
alias float     GLfloat;
alias float     GLclampf;
alias double    GLdouble;
alias double    GLclampd;
alias char      GLchar;
alias ptrdiff_t GLintptr;
alias ptrdiff_t GLsizeiptr;

// Boolean values
enum : GLboolean {
    GL_FALSE   = 0x0,
    GL_TRUE    = 0x1,
}

enum : GLenum {
    // Data types
    GL_BYTE                                = 0x1400,
    GL_UNSIGNED_BYTE                       = 0x1401,
    GL_SHORT                               = 0x1402,
    GL_UNSIGNED_SHORT                      = 0x1403,
    GL_INT                                 = 0x1404,
    GL_UNSIGNED_INT                        = 0x1405,
    GL_FLOAT                               = 0x1406,
    GL_DOUBLE                              = 0x140A,
    GL_2_BYTES                             = 0x1407,
    GL_3_BYTES                             = 0x1408,
    GL_4_BYTES                             = 0x1409,

    // Primitives
    GL_POINTS                              = 0x0000,
    GL_LINES                               = 0x0001,
    GL_LINE_LOOP                           = 0x0002,
    GL_LINE_STRIP                          = 0x0003,
    GL_TRIANGLES                           = 0x0004,
    GL_TRIANGLE_STRIP                      = 0x0005,
    GL_TRIANGLE_FAN                        = 0x0006,
    GL_QUADS                               = 0x0007,
    GL_QUAD_STRIP                          = 0x0008,
    GL_POLYGON                             = 0x0009,

    // Vertex Arrays
    GL_VERTEX_ARRAY                        = 0x8074,
    GL_NORMAL_ARRAY                        = 0x8075,
    GL_COLOR_ARRAY                         = 0x8076,
    GL_INDEX_ARRAY                         = 0x8077,
    GL_TEXTURE_COORD_ARRAY                 = 0x8078,
    GL_EDGE_FLAG_ARRAY                     = 0x8079,
    GL_VERTEX_ARRAY_SIZE                   = 0x807A,
    GL_VERTEX_ARRAY_TYPE                   = 0x807B,
    GL_VERTEX_ARRAY_STRIDE                 = 0x807C,
    GL_NORMAL_ARRAY_TYPE                   = 0x807E,
    GL_NORMAL_ARRAY_STRIDE                 = 0x807F,
    GL_COLOR_ARRAY_SIZE                    = 0x8081,
    GL_COLOR_ARRAY_TYPE                    = 0x8082,
    GL_COLOR_ARRAY_STRIDE                  = 0x8083,
    GL_INDEX_ARRAY_TYPE                    = 0x8085,
    GL_INDEX_ARRAY_STRIDE                  = 0x8086,
    GL_TEXTURE_COORD_ARRAY_SIZE            = 0x8088,
    GL_TEXTURE_COORD_ARRAY_TYPE            = 0x8089,
    GL_TEXTURE_COORD_ARRAY_STRIDE          = 0x808A,
    GL_EDGE_FLAG_ARRAY_STRIDE              = 0x808C,
    GL_VERTEX_ARRAY_POINTER                = 0x808E,
    GL_NORMAL_ARRAY_POINTER                = 0x808F,
    GL_COLOR_ARRAY_POINTER                 = 0x8090,
    GL_INDEX_ARRAY_POINTER                 = 0x8091,
    GL_TEXTURE_COORD_ARRAY_POINTER         = 0x8092,
    GL_EDGE_FLAG_ARRAY_POINTER             = 0x8093,
    GL_V2F                                 = 0x2A20,
    GL_V3F                                 = 0x2A21,
    GL_C4UB_V2F                            = 0x2A22,
    GL_C4UB_V3F                            = 0x2A23,
    GL_C3F_V3F                             = 0x2A24,
    GL_N3F_V3F                             = 0x2A25,
    GL_C4F_N3F_V3F                         = 0x2A26,
    GL_T2F_V3F                             = 0x2A27,
    GL_T4F_V4F                             = 0x2A28,
    GL_T2F_C4UB_V3F                        = 0x2A29,
    GL_T2F_C3F_V3F                         = 0x2A2A,
    GL_T2F_N3F_V3F                         = 0x2A2B,
    GL_T2F_C4F_N3F_V3F                     = 0x2A2C,
    GL_T4F_C4F_N3F_V4F                     = 0x2A2D,

    // Matrix Mode
    GL_MATRIX_MODE                         = 0x0BA0,
    GL_MODELVIEW                           = 0x1700,
    GL_PROJECTION                          = 0x1701,
    GL_TEXTURE                             = 0x1702,

    // Points
    GL_POINT_SMOOTH                        = 0x0B10,
    GL_POINT_SIZE                          = 0x0B11,
    GL_POINT_SIZE_GRANULARITY              = 0x0B13,
    GL_POINT_SIZE_RANGE                    = 0x0B12,

    // Lines
    GL_LINE_SMOOTH                         = 0x0B20,
    GL_LINE_STIPPLE                        = 0x0B24,
    GL_LINE_STIPPLE_PATTERN                = 0x0B25,
    GL_LINE_STIPPLE_REPEAT                 = 0x0B26,
    GL_LINE_WIDTH                          = 0x0B21,
    GL_LINE_WIDTH_GRANULARITY              = 0x0B23,
    GL_LINE_WIDTH_RANGE                    = 0x0B22,

    // Polygons
    GL_POINT                               = 0x1B00,
    GL_LINE                                = 0x1B01,
    GL_FILL                                = 0x1B02,
    GL_CW                                  = 0x0900,
    GL_CCW                                 = 0x0901,
    GL_FRONT                               = 0x0404,
    GL_BACK                                = 0x0405,
    GL_POLYGON_MODE                        = 0x0B40,
    GL_POLYGON_SMOOTH                      = 0x0B41,
    GL_POLYGON_STIPPLE                     = 0x0B42,
    GL_EDGE_FLAG                           = 0x0B43,
    GL_CULL_FACE                           = 0x0B44,
    GL_CULL_FACE_MODE                      = 0x0B45,
    GL_FRONT_FACE                          = 0x0B46,
    GL_POLYGON_OFFSET_FACTOR               = 0x8038,
    GL_POLYGON_OFFSET_UNITS                = 0x2A00,
    GL_POLYGON_OFFSET_POINT                = 0x2A01,
    GL_POLYGON_OFFSET_LINE                 = 0x2A02,
    GL_POLYGON_OFFSET_FILL                 = 0x8037,

    // Display Lists
    GL_COMPILE                             = 0x1300,
    GL_COMPILE_AND_EXECUTE                 = 0x1301,
    GL_LIST_BASE                           = 0x0B32,
    GL_LIST_INDEX                          = 0x0B33,
    GL_LIST_MODE                           = 0x0B30,

    // Depth buffer
    GL_NEVER                               = 0x0200,
    GL_LESS                                = 0x0201,
    GL_EQUAL                               = 0x0202,
    GL_LEQUAL                              = 0x0203,
    GL_GREATER                             = 0x0204,
    GL_NOTEQUAL                            = 0x0205,
    GL_GEQUAL                              = 0x0206,
    GL_ALWAYS                              = 0x0207,
    GL_DEPTH_TEST                          = 0x0B71,
    GL_DEPTH_BITS                          = 0x0D56,
    GL_DEPTH_CLEAR_VALUE                   = 0x0B73,
    GL_DEPTH_FUNC                          = 0x0B74,
    GL_DEPTH_RANGE                         = 0x0B70,
    GL_DEPTH_WRITEMASK                     = 0x0B72,
    GL_DEPTH_COMPONENT                     = 0x1902,

    // Lighting
    GL_LIGHTING                            = 0x0B50,
    GL_LIGHT0                              = 0x4000,
    GL_LIGHT1                              = 0x4001,
    GL_LIGHT2                              = 0x4002,
    GL_LIGHT3                              = 0x4003,
    GL_LIGHT4                              = 0x4004,
    GL_LIGHT5                              = 0x4005,
    GL_LIGHT6                              = 0x4006,
    GL_LIGHT7                              = 0x4007,
    GL_SPOT_EXPONENT                       = 0x1205,
    GL_SPOT_CUTOFF                         = 0x1206,
    GL_CONSTANT_ATTENUATION                = 0x1207,
    GL_LINEAR_ATTENUATION                  = 0x1208,
    GL_QUADRATIC_ATTENUATION               = 0x1209,
    GL_AMBIENT                             = 0x1200,
    GL_DIFFUSE                             = 0x1201,
    GL_SPECULAR                            = 0x1202,
    GL_SHININESS                           = 0x1601,
    GL_EMISSION                            = 0x1600,
    GL_POSITION                            = 0x1203,
    GL_SPOT_DIRECTION                      = 0x1204,
    GL_AMBIENT_AND_DIFFUSE                 = 0x1602,
    GL_COLOR_INDEXES                       = 0x1603,
    GL_LIGHT_MODEL_TWO_SIDE                = 0x0B52,
    GL_LIGHT_MODEL_LOCAL_VIEWER            = 0x0B51,
    GL_LIGHT_MODEL_AMBIENT                 = 0x0B53,
    GL_FRONT_AND_BACK                      = 0x0408,
    GL_SHADE_MODEL                         = 0x0B54,
    GL_FLAT                                = 0x1D00,
    GL_SMOOTH                              = 0x1D01,
    GL_COLOR_MATERIAL                      = 0x0B57,
    GL_COLOR_MATERIAL_FACE                 = 0x0B55,
    GL_COLOR_MATERIAL_PARAMETER            = 0x0B56,
    GL_NORMALIZE                           = 0x0BA1,

    // User clipping planes
    GL_CLIP_PLANE0                         = 0x3000,
    GL_CLIP_PLANE1                         = 0x3001,
    GL_CLIP_PLANE2                         = 0x3002,
    GL_CLIP_PLANE3                         = 0x3003,
    GL_CLIP_PLANE4                         = 0x3004,
    GL_CLIP_PLANE5                         = 0x3005,

    // Accumulation buffer
    GL_ACCUM_RED_BITS                      = 0x0D58,
    GL_ACCUM_GREEN_BITS                    = 0x0D59,
    GL_ACCUM_BLUE_BITS                     = 0x0D5A,
    GL_ACCUM_ALPHA_BITS                    = 0x0D5B,
    GL_ACCUM_CLEAR_VALUE                   = 0x0B80,
    GL_ACCUM                               = 0x0100,
    GL_ADD                                 = 0x0104,
    GL_LOAD                                = 0x0101,
    GL_MULT                                = 0x0103,
    GL_RETURN                              = 0x0102,

    // Alpha testing
    GL_ALPHA_TEST                          = 0x0BC0,
    GL_ALPHA_TEST_REF                      = 0x0BC2,
    GL_ALPHA_TEST_FUNC                     = 0x0BC1,

    // Blending
    GL_BLEND                               = 0x0BE2,
    GL_BLEND_SRC                           = 0x0BE1,
    GL_BLEND_DST                           = 0x0BE0,
    GL_ZERO                                = 0x0,
    GL_ONE                                 = 0x1,
    GL_SRC_COLOR                           = 0x0300,
    GL_ONE_MINUS_SRC_COLOR                 = 0x0301,
    GL_SRC_ALPHA                           = 0x0302,
    GL_ONE_MINUS_SRC_ALPHA                 = 0x0303,
    GL_DST_ALPHA                           = 0x0304,
    GL_ONE_MINUS_DST_ALPHA                 = 0x0305,
    GL_DST_COLOR                           = 0x0306,
    GL_ONE_MINUS_DST_COLOR                 = 0x0307,
    GL_SRC_ALPHA_SATURATE                  = 0x0308,
    GL_CONSTANT_COLOR                      = 0x8001,
    GL_ONE_MINUS_CONSTANT_COLOR            = 0x8002,
    GL_CONSTANT_ALPHA                      = 0x8003,
    GL_ONE_MINUS_CONSTANT_ALPHA            = 0x8004,

    // Render Mode
    GL_FEEDBACK                            = 0x1C01,
    GL_RENDER                              = 0x1C00,
    GL_SELECT                              = 0x1C02,

    // Feedback
    GL_2D                                  = 0x0600,
    GL_3D                                  = 0x0601,
    GL_3D_COLOR                            = 0x0602,
    GL_3D_COLOR_TEXTURE                    = 0x0603,
    GL_4D_COLOR_TEXTURE                    = 0x0604,
    GL_POINT_TOKEN                         = 0x0701,
    GL_LINE_TOKEN                          = 0x0702,
    GL_LINE_RESET_TOKEN                    = 0x0707,
    GL_POLYGON_TOKEN                       = 0x0703,
    GL_BITMAP_TOKEN                        = 0x0704,
    GL_DRAW_PIXEL_TOKEN                    = 0x0705,
    GL_COPY_PIXEL_TOKEN                    = 0x0706,
    GL_PASS_THROUGH_TOKEN                  = 0x0700,
    GL_FEEDBACK_BUFFER_POINTER             = 0x0DF0,
    GL_FEEDBACK_BUFFER_SIZE                = 0x0DF1,
    GL_FEEDBACK_BUFFER_TYPE                = 0x0DF2,

    // Selection
    GL_SELECTION_BUFFER_POINTER            = 0x0DF3,
    GL_SELECTION_BUFFER_SIZE               = 0x0DF4,

    // Fog
    GL_FOG                                 = 0x0B60,
    GL_FOG_MODE                            = 0x0B65,
    GL_FOG_DENSITY                         = 0x0B62,
    GL_FOG_COLOR                           = 0x0B66,
    GL_FOG_INDEX                           = 0x0B61,
    GL_FOG_START                           = 0x0B63,
    GL_FOG_END                             = 0x0B64,
    GL_LINEAR                              = 0x2601,
    GL_EXP                                 = 0x0800,
    GL_EXP2                                = 0x0801,

    // Logic Ops
    GL_LOGIC_OP                            = 0x0BF1,
    GL_INDEX_LOGIC_OP                      = 0x0BF1,
    GL_COLOR_LOGIC_OP                      = 0x0BF2,
    GL_LOGIC_OP_MODE                       = 0x0BF0,
    GL_CLEAR                               = 0x1500,
    GL_SET                                 = 0x150F,
    GL_COPY                                = 0x1503,
    GL_COPY_INVERTED                       = 0x150C,
    GL_NOOP                                = 0x1505,
    GL_INVERT                              = 0x150A,
    GL_AND                                 = 0x1501,
    GL_NAND                                = 0x150E,
    GL_OR                                  = 0x1507,
    GL_NOR                                 = 0x1508,
    GL_XOR                                 = 0x1506,
    GL_EQUIV                               = 0x1509,
    GL_AND_REVERSE                         = 0x1502,
    GL_AND_INVERTED                        = 0x1504,
    GL_OR_REVERSE                          = 0x150B,
    GL_OR_INVERTED                         = 0x150D,

    // Stencil
    GL_STENCIL_TEST                        = 0x0B90,
    GL_STENCIL_WRITEMASK                   = 0x0B98,
    GL_STENCIL_BITS                        = 0x0D57,
    GL_STENCIL_FUNC                        = 0x0B92,
    GL_STENCIL_VALUE_MASK                  = 0x0B93,
    GL_STENCIL_REF                         = 0x0B97,
    GL_STENCIL_FAIL                        = 0x0B94,
    GL_STENCIL_PASS_DEPTH_PASS             = 0x0B96,
    GL_STENCIL_PASS_DEPTH_FAIL             = 0x0B95,
    GL_STENCIL_CLEAR_VALUE                 = 0x0B91,
    GL_STENCIL_INDEX                       = 0x1901,
    GL_KEEP                                = 0x1E00,
    GL_REPLACE                             = 0x1E01,
    GL_INCR                                = 0x1E02,
    GL_DECR                                = 0x1E03,

    // Buffers, Pixel Drawing/Reading
    GL_NONE                                = 0x0,
    GL_LEFT                                = 0x0406,
    GL_RIGHT                               = 0x0407,
    GL_FRONT_LEFT                          = 0x0400,
    GL_FRONT_RIGHT                         = 0x0401,
    GL_BACK_LEFT                           = 0x0402,
    GL_BACK_RIGHT                          = 0x0403,
    GL_AUX0                                = 0x0409,
    GL_AUX1                                = 0x040A,
    GL_AUX2                                = 0x040B,
    GL_AUX3                                = 0x040C,
    GL_COLOR_INDEX                         = 0x1900,
    GL_RED                                 = 0x1903,
    GL_GREEN                               = 0x1904,
    GL_BLUE                                = 0x1905,
    GL_ALPHA                               = 0x1906,
    GL_LUMINANCE                           = 0x1909,
    GL_LUMINANCE_ALPHA                     = 0x190A,
    GL_ALPHA_BITS                          = 0x0D55,
    GL_RED_BITS                            = 0x0D52,
    GL_GREEN_BITS                          = 0x0D53,
    GL_BLUE_BITS                           = 0x0D54,
    GL_INDEX_BITS                          = 0x0D51,
    GL_SUBPIXEL_BITS                       = 0x0D50,
    GL_AUX_BUFFERS                         = 0x0C00,
    GL_READ_BUFFER                         = 0x0C02,
    GL_DRAW_BUFFER                         = 0x0C01,
    GL_DOUBLEBUFFER                        = 0x0C32,
    GL_STEREO                              = 0x0C33,
    GL_BITMAP                              = 0x1A00,
    GL_COLOR                               = 0x1800,
    GL_DEPTH                               = 0x1801,
    GL_STENCIL                             = 0x1802,
    GL_DITHER                              = 0x0BD0,
    GL_RGB                                 = 0x1907,
    GL_RGBA                                = 0x1908,

    // Implementation limits
    GL_MAX_LIST_NESTING                    = 0x0B31,
    GL_MAX_ATTRIB_STACK_DEPTH              = 0x0D35,
    GL_MAX_MODELVIEW_STACK_DEPTH           = 0x0D36,
    GL_MAX_NAME_STACK_DEPTH                = 0x0D37,
    GL_MAX_PROJECTION_STACK_DEPTH          = 0x0D38,
    GL_MAX_TEXTURE_STACK_DEPTH             = 0x0D39,
    GL_MAX_EVAL_ORDER                      = 0x0D30,
    GL_MAX_LIGHTS                          = 0x0D31,
    GL_MAX_CLIP_PLANES                     = 0x0D32,
    GL_MAX_TEXTURE_SIZE                    = 0x0D33,
    GL_MAX_PIXEL_MAP_TABLE                 = 0x0D34,
    GL_MAX_VIEWPORT_DIMS                   = 0x0D3A,
    GL_MAX_CLIENT_ATTRIB_STACK_DEPTH       = 0x0D3B,

    // Gets
    GL_ATTRIB_STACK_DEPTH                  = 0x0BB0,
    GL_CLIENT_ATTRIB_STACK_DEPTH           = 0x0BB1,
    GL_COLOR_CLEAR_VALUE                   = 0x0C22,
    GL_COLOR_WRITEMASK                     = 0x0C23,
    GL_CURRENT_INDEX                       = 0x0B01,
    GL_CURRENT_COLOR                       = 0x0B00,
    GL_CURRENT_NORMAL                      = 0x0B02,
    GL_CURRENT_RASTER_COLOR                = 0x0B04,
    GL_CURRENT_RASTER_DISTANCE             = 0x0B09,
    GL_CURRENT_RASTER_INDEX                = 0x0B05,
    GL_CURRENT_RASTER_POSITION             = 0x0B07,
    GL_CURRENT_RASTER_TEXTURE_COORDS       = 0x0B06,
    GL_CURRENT_RASTER_POSITION_VALID       = 0x0B08,
    GL_CURRENT_TEXTURE_COORDS              = 0x0B03,
    GL_INDEX_CLEAR_VALUE                   = 0x0C20,
    GL_INDEX_MODE                          = 0x0C30,
    GL_INDEX_WRITEMASK                     = 0x0C21,
    GL_MODELVIEW_MATRIX                    = 0x0BA6,
    GL_MODELVIEW_STACK_DEPTH               = 0x0BA3,
    GL_NAME_STACK_DEPTH                    = 0x0D70,
    GL_PROJECTION_MATRIX                   = 0x0BA7,
    GL_PROJECTION_STACK_DEPTH              = 0x0BA4,
    GL_RENDER_MODE                         = 0x0C40,
    GL_RGBA_MODE                           = 0x0C31,
    GL_TEXTURE_MATRIX                      = 0x0BA8,
    GL_TEXTURE_STACK_DEPTH                 = 0x0BA5,
    GL_VIEWPORT                            = 0x0BA2,

    // Evaluators
    GL_AUTO_NORMAL                         = 0x0D80,
    GL_MAP1_COLOR_4                        = 0x0D90,
    GL_MAP1_GRID_DOMAIN                    = 0x0DD0,
    GL_MAP1_GRID_SEGMENTS                  = 0x0DD1,
    GL_MAP1_INDEX                          = 0x0D91,
    GL_MAP1_NORMAL                         = 0x0D92,
    GL_MAP1_TEXTURE_COORD_1                = 0x0D93,
    GL_MAP1_TEXTURE_COORD_2                = 0x0D94,
    GL_MAP1_TEXTURE_COORD_3                = 0x0D95,
    GL_MAP1_TEXTURE_COORD_4                = 0x0D96,
    GL_MAP1_VERTEX_3                       = 0x0D97,
    GL_MAP1_VERTEX_4                       = 0x0D98,
    GL_MAP2_COLOR_4                        = 0x0DB0,
    GL_MAP2_GRID_DOMAIN                    = 0x0DD2,
    GL_MAP2_GRID_SEGMENTS                  = 0x0DD3,
    GL_MAP2_INDEX                          = 0x0DB1,
    GL_MAP2_NORMAL                         = 0x0DB2,
    GL_MAP2_TEXTURE_COORD_1                = 0x0DB3,
    GL_MAP2_TEXTURE_COORD_2                = 0x0DB4,
    GL_MAP2_TEXTURE_COORD_3                = 0x0DB5,
    GL_MAP2_TEXTURE_COORD_4                = 0x0DB6,
    GL_MAP2_VERTEX_3                       = 0x0DB7,
    GL_MAP2_VERTEX_4                       = 0x0DB8,
    GL_COEFF                               = 0x0A00,
    GL_DOMAIN                              = 0x0A02,
    GL_ORDER                               = 0x0A01,

    // Hints
    GL_FOG_HINT                            = 0x0C54,
    GL_LINE_SMOOTH_HINT                    = 0x0C52,
    GL_PERSPECTIVE_CORRECTION_HINT         = 0x0C50,
    GL_POINT_SMOOTH_HINT                   = 0x0C51,
    GL_POLYGON_SMOOTH_HINT                 = 0x0C53,
    GL_DONT_CARE                           = 0x1100,
    GL_FASTEST                             = 0x1101,
    GL_NICEST                              = 0x1102,

    // Scissor box
    GL_SCISSOR_TEST                        = 0x0C11,
    GL_SCISSOR_BOX                         = 0x0C10,

    // Pixel Mode / Transfer
    GL_MAP_COLOR                           = 0x0D10,
    GL_MAP_STENCIL                         = 0x0D11,
    GL_INDEX_SHIFT                         = 0x0D12,
    GL_INDEX_OFFSET                        = 0x0D13,
    GL_RED_SCALE                           = 0x0D14,
    GL_RED_BIAS                            = 0x0D15,
    GL_GREEN_SCALE                         = 0x0D18,
    GL_GREEN_BIAS                          = 0x0D19,
    GL_BLUE_SCALE                          = 0x0D1A,
    GL_BLUE_BIAS                           = 0x0D1B,
    GL_ALPHA_SCALE                         = 0x0D1C,
    GL_ALPHA_BIAS                          = 0x0D1D,
    GL_DEPTH_SCALE                         = 0x0D1E,
    GL_DEPTH_BIAS                          = 0x0D1F,
    GL_PIXEL_MAP_S_TO_S_SIZE               = 0x0CB1,
    GL_PIXEL_MAP_I_TO_I_SIZE               = 0x0CB0,
    GL_PIXEL_MAP_I_TO_R_SIZE               = 0x0CB2,
    GL_PIXEL_MAP_I_TO_G_SIZE               = 0x0CB3,
    GL_PIXEL_MAP_I_TO_B_SIZE               = 0x0CB4,
    GL_PIXEL_MAP_I_TO_A_SIZE               = 0x0CB5,
    GL_PIXEL_MAP_R_TO_R_SIZE               = 0x0CB6,
    GL_PIXEL_MAP_G_TO_G_SIZE               = 0x0CB7,
    GL_PIXEL_MAP_B_TO_B_SIZE               = 0x0CB8,
    GL_PIXEL_MAP_A_TO_A_SIZE               = 0x0CB9,
    GL_PIXEL_MAP_S_TO_S                    = 0x0C71,
    GL_PIXEL_MAP_I_TO_I                    = 0x0C70,
    GL_PIXEL_MAP_I_TO_R                    = 0x0C72,
    GL_PIXEL_MAP_I_TO_G                    = 0x0C73,
    GL_PIXEL_MAP_I_TO_B                    = 0x0C74,
    GL_PIXEL_MAP_I_TO_A                    = 0x0C75,
    GL_PIXEL_MAP_R_TO_R                    = 0x0C76,
    GL_PIXEL_MAP_G_TO_G                    = 0x0C77,
    GL_PIXEL_MAP_B_TO_B                    = 0x0C78,
    GL_PIXEL_MAP_A_TO_A                    = 0x0C79,
    GL_PACK_ALIGNMENT                      = 0x0D05,
    GL_PACK_LSB_FIRST                      = 0x0D01,
    GL_PACK_ROW_LENGTH                     = 0x0D02,
    GL_PACK_SKIP_PIXELS                    = 0x0D04,
    GL_PACK_SKIP_ROWS                      = 0x0D03,
    GL_PACK_SWAP_BYTES                     = 0x0D00,
    GL_UNPACK_ALIGNMENT                    = 0x0CF5,
    GL_UNPACK_LSB_FIRST                    = 0x0CF1,
    GL_UNPACK_ROW_LENGTH                   = 0x0CF2,
    GL_UNPACK_SKIP_PIXELS                  = 0x0CF4,
    GL_UNPACK_SKIP_ROWS                    = 0x0CF3,
    GL_UNPACK_SWAP_BYTES                   = 0x0CF0,
    GL_ZOOM_X                              = 0x0D16,
    GL_ZOOM_Y                              = 0x0D17,

    // Texture mapping
    GL_TEXTURE_ENV                         = 0x2300,
    GL_TEXTURE_ENV_MODE                    = 0x2200,
    GL_TEXTURE_1D                          = 0x0DE0,
    GL_TEXTURE_2D                          = 0x0DE1,
    GL_TEXTURE_WRAP_S                      = 0x2802,
    GL_TEXTURE_WRAP_T                      = 0x2803,
    GL_TEXTURE_MAG_FILTER                  = 0x2800,
    GL_TEXTURE_MIN_FILTER                  = 0x2801,
    GL_TEXTURE_ENV_COLOR                   = 0x2201,
    GL_TEXTURE_GEN_S                       = 0x0C60,
    GL_TEXTURE_GEN_T                       = 0x0C61,
    GL_TEXTURE_GEN_MODE                    = 0x2500,
    GL_TEXTURE_BORDER_COLOR                = 0x1004,
    GL_TEXTURE_WIDTH                       = 0x1000,
    GL_TEXTURE_HEIGHT                      = 0x1001,
    GL_TEXTURE_BORDER                      = 0x1005,
    GL_TEXTURE_COMPONENTS                  = 0x1003,
    GL_TEXTURE_RED_SIZE                    = 0x805C,
    GL_TEXTURE_GREEN_SIZE                  = 0x805D,
    GL_TEXTURE_BLUE_SIZE                   = 0x805E,
    GL_TEXTURE_ALPHA_SIZE                  = 0x805F,
    GL_TEXTURE_LUMINANCE_SIZE              = 0x8060,
    GL_TEXTURE_INTENSITY_SIZE              = 0x8061,
    GL_NEAREST_MIPMAP_NEAREST              = 0x2700,
    GL_NEAREST_MIPMAP_LINEAR               = 0x2702,
    GL_LINEAR_MIPMAP_NEAREST               = 0x2701,
    GL_LINEAR_MIPMAP_LINEAR                = 0x2703,
    GL_OBJECT_LINEAR                       = 0x2401,
    GL_OBJECT_PLANE                        = 0x2501,
    GL_EYE_LINEAR                          = 0x2400,
    GL_EYE_PLANE                           = 0x2502,
    GL_SPHERE_MAP                          = 0x2402,
    GL_DECAL                               = 0x2101,
    GL_MODULATE                            = 0x2100,
    GL_NEAREST                             = 0x2600,
    GL_REPEAT                              = 0x2901,
    GL_CLAMP                               = 0x2900,
    GL_S                                   = 0x2000,
    GL_T                                   = 0x2001,
    GL_R                                   = 0x2002,
    GL_Q                                   = 0x2003,
    GL_TEXTURE_GEN_R                       = 0x0C62,
    GL_TEXTURE_GEN_Q                       = 0x0C63,

    // Utility
    GL_VENDOR                              = 0x1F00,
    GL_RENDERER                            = 0x1F01,
    GL_VERSION                             = 0x1F02,
    GL_EXTENSIONS                          = 0x1F03,

    // Errors
    GL_NO_ERROR                            = 0x0,
    GL_INVALID_VALUE                       = 0x0501,
    GL_INVALID_ENUM                        = 0x0500,
    GL_INVALID_OPERATION                   = 0x0502,
    GL_STACK_OVERFLOW                      = 0x0503,
    GL_STACK_UNDERFLOW                     = 0x0504,
    GL_OUT_OF_MEMORY                       = 0x0505,
}

// glPush/PopAttrib bits
enum : GLuint {
    GL_CURRENT_BIT                         = 0x00000001,
    GL_POINT_BIT                           = 0x00000002,
    GL_LINE_BIT                            = 0x00000004,
    GL_POLYGON_BIT                         = 0x00000008,
    GL_POLYGON_STIPPLE_BIT                 = 0x00000010,
    GL_PIXEL_MODE_BIT                      = 0x00000020,
    GL_LIGHTING_BIT                        = 0x00000040,
    GL_FOG_BIT                             = 0x00000080,
    GL_DEPTH_BUFFER_BIT                    = 0x00000100,
    GL_ACCUM_BUFFER_BIT                    = 0x00000200,
    GL_STENCIL_BUFFER_BIT                  = 0x00000400,
    GL_VIEWPORT_BIT                        = 0x00000800,
    GL_TRANSFORM_BIT                       = 0x00001000,
    GL_ENABLE_BIT                          = 0x00002000,
    GL_COLOR_BUFFER_BIT                    = 0x00004000,
    GL_HINT_BIT                            = 0x00008000,
    GL_EVAL_BIT                            = 0x00010000,
    GL_LIST_BIT                            = 0x00020000,
    GL_TEXTURE_BIT                         = 0x00040000,
    GL_SCISSOR_BIT                         = 0x00080000,
    GL_ALL_ATTRIB_BITS                     = 0x000FFFFF,
}

// gl 1.1
enum : GLenum {
    GL_PROXY_TEXTURE_1D                    = 0x8063,
    GL_PROXY_TEXTURE_2D                    = 0x8064,
    GL_TEXTURE_PRIORITY                    = 0x8066,
    GL_TEXTURE_RESIDENT                    = 0x8067,
    GL_TEXTURE_BINDING_1D                  = 0x8068,
    GL_TEXTURE_BINDING_2D                  = 0x8069,
    GL_TEXTURE_INTERNAL_FORMAT             = 0x1003,
    GL_ALPHA4                              = 0x803B,
    GL_ALPHA8                              = 0x803C,
    GL_ALPHA12                             = 0x803D,
    GL_ALPHA16                             = 0x803E,
    GL_LUMINANCE4                          = 0x803F,
    GL_LUMINANCE8                          = 0x8040,
    GL_LUMINANCE12                         = 0x8041,
    GL_LUMINANCE16                         = 0x8042,
    GL_LUMINANCE4_ALPHA4                   = 0x8043,
    GL_LUMINANCE6_ALPHA2                   = 0x8044,
    GL_LUMINANCE8_ALPHA8                   = 0x8045,
    GL_LUMINANCE12_ALPHA4                  = 0x8046,
    GL_LUMINANCE12_ALPHA12                 = 0x8047,
    GL_LUMINANCE16_ALPHA16                 = 0x8048,
    GL_INTENSITY                           = 0x8049,
    GL_INTENSITY4                          = 0x804A,
    GL_INTENSITY8                          = 0x804B,
    GL_INTENSITY12                         = 0x804C,
    GL_INTENSITY16                         = 0x804D,
    GL_R3_G3_B2                            = 0x2A10,
    GL_RGB4                                = 0x804F,
    GL_RGB5                                = 0x8050,
    GL_RGB8                                = 0x8051,
    GL_RGB10                               = 0x8052,
    GL_RGB12                               = 0x8053,
    GL_RGB16                               = 0x8054,
    GL_RGBA2                               = 0x8055,
    GL_RGBA4                               = 0x8056,
    GL_RGB5_A1                             = 0x8057,
    GL_RGBA8                               = 0x8058,
    GL_RGB10_A2                            = 0x8059,
    GL_RGBA12                              = 0x805A,
    GL_RGBA16                              = 0x805B,
}

enum : GLuint {
    GL_CLIENT_PIXEL_STORE_BIT              = 0x00000001,
    GL_CLIENT_VERTEX_ARRAY_BIT             = 0x00000002,
    GL_ALL_CLIENT_ATTRIB_BITS              = 0xFFFFFFFF,
    GL_CLIENT_ALL_ATTRIB_BITS              = 0xFFFFFFFF,
}