Mercurial > projects > ldc
view demos/gltypes.d @ 1117:4c20fcc4252b
Fun with parameter attributes: For several of the "synthetic" parameters added
to D functions, we can apply noalias and nocapture. They are sret parameters,
'nest' pointers passed to nested functions, and _argptr:
Nocapture:
- Sret and nest are nocapture because they don't represent D-level variables,
and thus the callee can't (validly) obtain a pointer to them, let alone keep
it around after it returns.
- _argptr is nocapture because although the callee has access to it as a
pointer, that pointer is invalidated when it returns.
All three are noalias because they're function-local variables
- Sret and _argptr are noalias because they're freshly alloca'd memory only
used for a single function call that's not allowed to keep an aliasing
pointer to it around (since the parameter is nocapture).
- 'Nest' is noalias because the callee only ever has access to one such pointer
per parent function, and every parent function has a different one.
This commit also ensures attributes set on sret, _arguments and _argptr are
propagated to calls to such functions.
It also adds one exception to the general rule that attributes on function types
should propagate to calls: the type of a delegate's function pointer has a
'nest' parameter, but this can either be a true 'nest' (for delegates to nested
functions) or a 'this' (for delegates to member functions). Since 'this' is
neither noalias nor nocapture, and there's generally no way to tell which one it
is, we remove these attributes at the call site if the callee is a delegate.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Sat, 14 Mar 2009 22:15:31 +0100 |
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, }