/*
 * Copyright (c) 2011-2024 Ross Cunniff
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * 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 Software.
 *
 * THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
/*
 * OADL OGL ES 1.1 header file.  The original gl.h from which this
 * was derived is licensed as follows:
 *
 *   This document is licensed under the SGI Free Software B License Version
 *   2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
 */

namespace gl1 {

/* OpenGL ES core versions */
const VERSION_ES_CM_1_0 = 1;
const VERSION_ES_CL_1_0 = 1;
const VERSION_ES_CM_1_1 = 1;
const VERSION_ES_CL_1_1 = 1;

/* ClearBufferMask */
const DEPTH_BUFFER_BIT = 0x00000100;
const STENCIL_BUFFER_BIT = 0x00000400;
const COLOR_BUFFER_BIT = 0x00004000;

/* Boolean */
const FALSE = 0;
const TRUE = 1;

/* BeginMode */
const POINTS = 0x0000;
const LINES = 0x0001;
const LINE_LOOP = 0x0002;
const LINE_STRIP = 0x0003;
const TRIANGLES = 0x0004;
const TRIANGLE_STRIP = 0x0005;
const TRIANGLE_FAN = 0x0006;

/* AlphaFunction */
const NEVER = 0x0200;
const LESS = 0x0201;
const EQUAL = 0x0202;
const LEQUAL = 0x0203;
const GREATER = 0x0204;
const NOTEQUAL = 0x0205;
const GEQUAL = 0x0206;
const ALWAYS = 0x0207;

/* BlendingFactorDest */
const ZERO = 0;
const ONE = 1;
const SRC_COLOR = 0x0300;
const ONE_MINUS_SRC_COLOR = 0x0301;
const SRC_ALPHA = 0x0302;
const ONE_MINUS_SRC_ALPHA = 0x0303;
const DST_ALPHA = 0x0304;
const ONE_MINUS_DST_ALPHA = 0x0305;

/* BlendingFactorSrc */
/*      ZERO */
/*      ONE */
const DST_COLOR = 0x0306;
const ONE_MINUS_DST_COLOR = 0x0307;
const SRC_ALPHA_SATURATE = 0x0308;
/*      SRC_ALPHA */
/*      ONE_MINUS_SRC_ALPHA */
/*      DST_ALPHA */
/*      ONE_MINUS_DST_ALPHA */

/* ClipPlaneName */
const CLIP_PLANE0 = 0x3000;
const CLIP_PLANE1 = 0x3001;
const CLIP_PLANE2 = 0x3002;
const CLIP_PLANE3 = 0x3003;
const CLIP_PLANE4 = 0x3004;
const CLIP_PLANE5 = 0x3005;

/* ColorMaterialFace */
/*      FRONT_AND_BACK */

/* ColorMaterialParameter */
/*      AMBIENT_AND_DIFFUSE */

/* ColorPointerType */
/*      UNSIGNED_BYTE */
/*      FLOAT */
/*      FIXED */

/* CullFaceMode */
const FRONT = 0x0404;
const BACK = 0x0405;
const FRONT_AND_BACK = 0x0408;

/* DepthFunction */
/*      NEVER */
/*      LESS */
/*      EQUAL */
/*      LEQUAL */
/*      GREATER */
/*      NOTEQUAL */
/*      GEQUAL */
/*      ALWAYS */

/* EnableCap */
const FOG = 0x0B60;
const LIGHTING = 0x0B50;
const TEXTURE_2D = 0x0DE1;
const CULL_FACE = 0x0B44;
const ALPHA_TEST = 0x0BC0;
const BLEND = 0x0BE2;
const COLOR_LOGIC_OP = 0x0BF2;
const DITHER = 0x0BD0;
const STENCIL_TEST = 0x0B90;
const DEPTH_TEST = 0x0B71;
/*      LIGHT0 */
/*      LIGHT1 */
/*      LIGHT2 */
/*      LIGHT3 */
/*      LIGHT4 */
/*      LIGHT5 */
/*      LIGHT6 */
/*      LIGHT7 */
const POINT_SMOOTH = 0x0B10;
const LINE_SMOOTH = 0x0B20;
const SCISSOR_TEST = 0x0C11;
const COLOR_MATERIAL = 0x0B57;
const NORMALIZE = 0x0BA1;
const RESCALE_NORMAL = 0x803A;
const POLYGON_OFFSET_FILL = 0x8037;
const VERTEX_ARRAY = 0x8074;
const NORMAL_ARRAY = 0x8075;
const COLOR_ARRAY = 0x8076;
const TEXTURE_COORD_ARRAY = 0x8078;
const MULTISAMPLE = 0x809D;
const SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
const SAMPLE_ALPHA_TO_ONE = 0x809F;
const SAMPLE_COVERAGE = 0x80A0;

/* ErrorCode */
const NO_ERROR = 0;
const INVALID_ENUM = 0x0500;
const INVALID_VALUE = 0x0501;
const INVALID_OPERATION = 0x0502;
const STACK_OVERFLOW = 0x0503;
const STACK_UNDERFLOW = 0x0504;
const OUT_OF_MEMORY = 0x0505;

/* FogMode */
/*      LINEAR */
const EXP = 0x0800;
const EXP2 = 0x0801;

/* FogParameter */
const FOG_DENSITY = 0x0B62;
const FOG_START = 0x0B63;
const FOG_END = 0x0B64;
const FOG_MODE = 0x0B65;
const FOG_COLOR = 0x0B66;

/* FrontFaceDirection */
const CW = 0x0900;
const CCW = 0x0901;

/* GetPName */
const CURRENT_COLOR = 0x0B00;
const CURRENT_NORMAL = 0x0B02;
const CURRENT_TEXTURE_COORDS = 0x0B03;
const POINT_SIZE = 0x0B11;
const POINT_SIZE_MIN = 0x8126;
const POINT_SIZE_MAX = 0x8127;
const POINT_FADE_THRESHOLD_SIZE = 0x8128;
const POINT_DISTANCE_ATTENUATION = 0x8129;
const SMOOTH_POINT_SIZE_RANGE = 0x0B12;
const LINE_WIDTH = 0x0B21;
const SMOOTH_LINE_WIDTH_RANGE = 0x0B22;
const ALIASED_POINT_SIZE_RANGE = 0x846D;
const ALIASED_LINE_WIDTH_RANGE = 0x846E;
const CULL_FACE_MODE = 0x0B45;
const FRONT_FACE = 0x0B46;
const SHADE_MODEL = 0x0B54;
const DEPTH_RANGE = 0x0B70;
const DEPTH_WRITEMASK = 0x0B72;
const DEPTH_CLEAR_VALUE = 0x0B73;
const DEPTH_FUNC = 0x0B74;
const STENCIL_CLEAR_VALUE = 0x0B91;
const STENCIL_FUNC = 0x0B92;
const STENCIL_VALUE_MASK = 0x0B93;
const STENCIL_FAIL = 0x0B94;
const STENCIL_PASS_DEPTH_FAIL = 0x0B95;
const STENCIL_PASS_DEPTH_PASS = 0x0B96;
const STENCIL_REF = 0x0B97;
const STENCIL_WRITEMASK = 0x0B98;
const MATRIX_MODE = 0x0BA0;
const VIEWPORT = 0x0BA2;
const MODELVIEW_STACK_DEPTH = 0x0BA3;
const PROJECTION_STACK_DEPTH = 0x0BA4;
const TEXTURE_STACK_DEPTH = 0x0BA5;
const MODELVIEW_MATRIX = 0x0BA6;
const PROJECTION_MATRIX = 0x0BA7;
const TEXTURE_MATRIX = 0x0BA8;
const ALPHA_TEST_FUNC = 0x0BC1;
const ALPHA_TEST_REF = 0x0BC2;
const BLEND_DST = 0x0BE0;
const BLEND_SRC = 0x0BE1;
const LOGIC_OP_MODE = 0x0BF0;
const SCISSOR_BOX = 0x0C10;
const SCISSOR_TEST = 0x0C11;
const COLOR_CLEAR_VALUE = 0x0C22;
const COLOR_WRITEMASK = 0x0C23;
const UNPACK_ALIGNMENT = 0x0CF5;
const PACK_ALIGNMENT = 0x0D05;
const MAX_LIGHTS = 0x0D31;
const MAX_CLIP_PLANES = 0x0D32;
const MAX_TEXTURE_SIZE = 0x0D33;
const MAX_MODELVIEW_STACK_DEPTH = 0x0D36;
const MAX_PROJECTION_STACK_DEPTH = 0x0D38;
const MAX_TEXTURE_STACK_DEPTH = 0x0D39;
const MAX_VIEWPORT_DIMS = 0x0D3A;
const MAX_TEXTURE_UNITS = 0x84E2;
const SUBPIXEL_BITS = 0x0D50;
const RED_BITS = 0x0D52;
const GREEN_BITS = 0x0D53;
const BLUE_BITS = 0x0D54;
const ALPHA_BITS = 0x0D55;
const DEPTH_BITS = 0x0D56;
const STENCIL_BITS = 0x0D57;
const POLYGON_OFFSET_UNITS = 0x2A00;
const POLYGON_OFFSET_FILL = 0x8037;
const POLYGON_OFFSET_FACTOR = 0x8038;
const TEXTURE_BINDING_2D = 0x8069;
const VERTEX_ARRAY_SIZE = 0x807A;
const VERTEX_ARRAY_TYPE = 0x807B;
const VERTEX_ARRAY_STRIDE = 0x807C;
const NORMAL_ARRAY_TYPE = 0x807E;
const NORMAL_ARRAY_STRIDE = 0x807F;
const COLOR_ARRAY_SIZE = 0x8081;
const COLOR_ARRAY_TYPE = 0x8082;
const COLOR_ARRAY_STRIDE = 0x8083;
const TEXTURE_COORD_ARRAY_SIZE = 0x8088;
const TEXTURE_COORD_ARRAY_TYPE = 0x8089;
const TEXTURE_COORD_ARRAY_STRIDE = 0x808A;
const VERTEX_ARRAY_POINTER = 0x808E;
const NORMAL_ARRAY_POINTER = 0x808F;
const COLOR_ARRAY_POINTER = 0x8090;
const TEXTURE_COORD_ARRAY_POINTER = 0x8092;
const SAMPLE_BUFFERS = 0x80A8;
const SAMPLES = 0x80A9;
const SAMPLE_COVERAGE_VALUE = 0x80AA;
const SAMPLE_COVERAGE_INVERT = 0x80AB;

/* GetTextureParameter */
/*      TEXTURE_MAG_FILTER */
/*      TEXTURE_MIN_FILTER */
/*      TEXTURE_WRAP_S */
/*      TEXTURE_WRAP_T */

const NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2;
const COMPRESSED_TEXTURE_FORMATS = 0x86A3;

/* HintMode */
const DONT_CARE = 0x1100;
const FASTEST = 0x1101;
const NICEST = 0x1102;

/* HintTarget */
const PERSPECTIVE_CORRECTION_HINT = 0x0C50;
const POINT_SMOOTH_HINT = 0x0C51;
const LINE_SMOOTH_HINT = 0x0C52;
const FOG_HINT = 0x0C54;
const GENERATE_MIPMAP_HINT = 0x8192;

/* LightModelParameter */
const LIGHT_MODEL_AMBIENT = 0x0B53;
const LIGHT_MODEL_TWO_SIDE = 0x0B52;

/* LightParameter */
const AMBIENT = 0x1200;
const DIFFUSE = 0x1201;
const SPECULAR = 0x1202;
const POSITION = 0x1203;
const SPOT_DIRECTION = 0x1204;
const SPOT_EXPONENT = 0x1205;
const SPOT_CUTOFF = 0x1206;
const CONSTANT_ATTENUATION = 0x1207;
const LINEAR_ATTENUATION = 0x1208;
const QUADRATIC_ATTENUATION = 0x1209;

/* DataType */
const BYTE = 0x1400;
const UNSIGNED_BYTE = 0x1401;
const SHORT = 0x1402;
const UNSIGNED_SHORT = 0x1403;
const FLOAT = 0x1406;
const FIXED = 0x140C;

/* LogicOp */
const CLEAR = 0x1500;
const AND = 0x1501;
const AND_REVERSE = 0x1502;
const COPY = 0x1503;
const AND_INVERTED = 0x1504;
const NOOP = 0x1505;
const XOR = 0x1506;
const OR = 0x1507;
const NOR = 0x1508;
const EQUIV = 0x1509;
const INVERT = 0x150A;
const OR_REVERSE = 0x150B;
const COPY_INVERTED = 0x150C;
const OR_INVERTED = 0x150D;
const NAND = 0x150E;
const SET = 0x150F;

/* MaterialFace */
/*      FRONT_AND_BACK */

/* MaterialParameter */
const EMISSION = 0x1600;
const SHININESS = 0x1601;
const AMBIENT_AND_DIFFUSE = 0x1602;
/*      AMBIENT */
/*      DIFFUSE */
/*      SPECULAR */

/* MatrixMode */
const MODELVIEW = 0x1700;
const PROJECTION = 0x1701;
const TEXTURE = 0x1702;

/* NormalPointerType */
/*      BYTE */
/*      SHORT */
/*      FLOAT */
/*      FIXED */

/* PixelFormat */
const ALPHA = 0x1906;
const RGB = 0x1907;
const RGBA = 0x1908;
const LUMINANCE = 0x1909;
const LUMINANCE_ALPHA = 0x190A;

/* PixelStoreParameter */
const UNPACK_ALIGNMENT = 0x0CF5;
const PACK_ALIGNMENT = 0x0D05;

/* PixelType */
/*      UNSIGNED_BYTE */
const UNSIGNED_SHORT_4_4_4_4 = 0x8033;
const UNSIGNED_SHORT_5_5_5_1 = 0x8034;
const UNSIGNED_SHORT_5_6_5 = 0x8363;

/* ShadingModel */
const FLAT = 0x1D00;
const SMOOTH = 0x1D01;

/* StencilFunction */
/*      NEVER */
/*      LESS */
/*      EQUAL */
/*      LEQUAL */
/*      GREATER */
/*      NOTEQUAL */
/*      GEQUAL */
/*      ALWAYS */

/* StencilOp */
/*      ZERO */
const KEEP = 0x1E00;
const REPLACE = 0x1E01;
const INCR = 0x1E02;
const DECR = 0x1E03;
/*      INVERT */

/* StringName */
const VENDOR = 0x1F00;
const RENDERER = 0x1F01;
const VERSION = 0x1F02;
const EXTENSIONS = 0x1F03;

/* TexCoordPointerType */
/*      SHORT */
/*      FLOAT */
/*      FIXED */
/*      BYTE */

/* TextureEnvMode */
const MODULATE = 0x2100;
const DECAL = 0x2101;
/*      BLEND */
const ADD = 0x0104;
/*      REPLACE */

/* TextureEnvParameter */
const TEXTURE_ENV_MODE = 0x2200;
const TEXTURE_ENV_COLOR = 0x2201;

/* TextureEnvTarget */
const TEXTURE_ENV = 0x2300;

/* TextureMagFilter */
const NEAREST = 0x2600;
const LINEAR = 0x2601;

/* TextureMinFilter */
/*      NEAREST */
/*      LINEAR */
const NEAREST_MIPMAP_NEAREST = 0x2700;
const LINEAR_MIPMAP_NEAREST = 0x2701;
const NEAREST_MIPMAP_LINEAR = 0x2702;
const LINEAR_MIPMAP_LINEAR = 0x2703;

/* TextureParameterName */
const TEXTURE_MAG_FILTER = 0x2800;
const TEXTURE_MIN_FILTER = 0x2801;
const TEXTURE_WRAP_S = 0x2802;
const TEXTURE_WRAP_T = 0x2803;
const GENERATE_MIPMAP = 0x8191;

/* TextureTarget */
/*      TEXTURE_2D */

/* TextureUnit */
const TEXTURE0 = 0x84C0;
const TEXTURE1 = 0x84C1;
const TEXTURE2 = 0x84C2;
const TEXTURE3 = 0x84C3;
const TEXTURE4 = 0x84C4;
const TEXTURE5 = 0x84C5;
const TEXTURE6 = 0x84C6;
const TEXTURE7 = 0x84C7;
const TEXTURE8 = 0x84C8;
const TEXTURE9 = 0x84C9;
const TEXTURE10 = 0x84CA;
const TEXTURE11 = 0x84CB;
const TEXTURE12 = 0x84CC;
const TEXTURE13 = 0x84CD;
const TEXTURE14 = 0x84CE;
const TEXTURE15 = 0x84CF;
const TEXTURE16 = 0x84D0;
const TEXTURE17 = 0x84D1;
const TEXTURE18 = 0x84D2;
const TEXTURE19 = 0x84D3;
const TEXTURE20 = 0x84D4;
const TEXTURE21 = 0x84D5;
const TEXTURE22 = 0x84D6;
const TEXTURE23 = 0x84D7;
const TEXTURE24 = 0x84D8;
const TEXTURE25 = 0x84D9;
const TEXTURE26 = 0x84DA;
const TEXTURE27 = 0x84DB;
const TEXTURE28 = 0x84DC;
const TEXTURE29 = 0x84DD;
const TEXTURE30 = 0x84DE;
const TEXTURE31 = 0x84DF;
const ACTIVE_TEXTURE = 0x84E0;
const CLIENT_ACTIVE_TEXTURE = 0x84E1;

/* TextureWrapMode */
const REPEAT = 0x2901;
const CLAMP_TO_EDGE = 0x812F;

/* VertexPointerType */
/*      SHORT */
/*      FLOAT */
/*      FIXED */
/*      BYTE */

/* LightName */
const LIGHT0 = 0x4000;
const LIGHT1 = 0x4001;
const LIGHT2 = 0x4002;
const LIGHT3 = 0x4003;
const LIGHT4 = 0x4004;
const LIGHT5 = 0x4005;
const LIGHT6 = 0x4006;
const LIGHT7 = 0x4007;

/* Buffer Objects */
const ARRAY_BUFFER = 0x8892;
const ELEMENT_ARRAY_BUFFER = 0x8893;

const ARRAY_BUFFER_BINDING = 0x8894;
const ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
const VERTEX_ARRAY_BUFFER_BINDING = 0x8896;
const NORMAL_ARRAY_BUFFER_BINDING = 0x8897;
const COLOR_ARRAY_BUFFER_BINDING = 0x8898;
const TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889A;

const STATIC_DRAW = 0x88E4;
const DYNAMIC_DRAW = 0x88E8;

const BUFFER_SIZE = 0x8764;
const BUFFER_USAGE = 0x8765;

/* Texture combine + dot3 */
const SUBTRACT = 0x84E7;
const COMBINE = 0x8570;
const COMBINE_RGB = 0x8571;
const COMBINE_ALPHA = 0x8572;
const RGB_SCALE = 0x8573;
const ADD_SIGNED = 0x8574;
const INTERPOLATE = 0x8575;
const CONSTANT = 0x8576;
const PRIMARY_COLOR = 0x8577;
const PREVIOUS = 0x8578;
const OPERAND0_RGB = 0x8590;
const OPERAND1_RGB = 0x8591;
const OPERAND2_RGB = 0x8592;
const OPERAND0_ALPHA = 0x8598;
const OPERAND1_ALPHA = 0x8599;
const OPERAND2_ALPHA = 0x859A;

const ALPHA_SCALE = 0x0D1C;

const SRC0_RGB = 0x8580;
const SRC1_RGB = 0x8581;
const SRC2_RGB = 0x8582;
const SRC0_ALPHA = 0x8588;
const SRC1_ALPHA = 0x8589;
const SRC2_ALPHA = 0x858A;

const DOT3_RGB = 0x86AE;
const DOT3_RGBA = 0x86AF;

/*------------------------------------------------------------------------*
 * required OES extension tokens
 *------------------------------------------------------------------------*/

/* OES_read_format */
const IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A;
const IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B;

/* OES_compressed_paletted_texture */
const PALETTE4_RGB8_OES = 0x8B90;
const PALETTE4_RGBA8_OES = 0x8B91;
const PALETTE4_R5_G6_B5_OES = 0x8B92;
const PALETTE4_RGBA4_OES = 0x8B93;
const PALETTE4_RGB5_A1_OES = 0x8B94;
const PALETTE8_RGB8_OES = 0x8B95;
const PALETTE8_RGBA8_OES = 0x8B96;
const PALETTE8_R5_G6_B5_OES = 0x8B97;
const PALETTE8_RGBA4_OES = 0x8B98;
const PALETTE8_RGB5_A1_OES = 0x8B99;

/* OES_point_size_array */
const POINT_SIZE_ARRAY_OES = 0x8B9C;
const POINT_SIZE_ARRAY_TYPE_OES = 0x898A;
const POINT_SIZE_ARRAY_STRIDE_OES = 0x898B;
const POINT_SIZE_ARRAY_POINTER_OES = 0x898C;
const POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 0x8B9F;

/* OES_point_sprite */
const POINT_SPRITE_OES = 0x8861;
const COORD_REPLACE_OES = 0x8862;

/*************************************************************/

/* Available only in Common profile */
extern AlphaFunc; // enum func, clampf ref
extern ClearColor; // clampf red, clampf green, clampf blue, clampf alpha
extern ClearDepthf; // clampf depth
extern ClipPlanef; // enum plane, const float *equation
extern Color4f; // float red, float green, float blue, float alpha
extern DepthRangef; // clampf zNear, clampf zFar
extern Fogf; // enum pname, float param
extern Fogfv; // enum pname, const float *params
extern Frustumf; // float left, float right, float bottom, float top, float zNear, float zFar
extern GetClipPlanef; // enum pname, float eqn[4]
extern GetFloatv; // enum pname, float *params
extern GetLightfv; // enum light, enum pname, float *params
extern GetMaterialfv; // enum face, enum pname, float *params
extern GetTexEnvfv; // enum env, enum pname, float *params
extern GetTexParameterfv; // enum target, enum pname, float *params
extern LightModelf; // enum pname, float param
extern LightModelfv; // enum pname, const float *params
extern Lightf; // enum light, enum pname, float param
extern Lightfv; // enum light, enum pname, const float *params
extern LineWidth; // float width
extern LoadMatrixf; // const float *m
extern Materialf; // enum face, enum pname, float param
extern Materialfv; // enum face, enum pname, const float *params
extern MultMatrixf; // const float *m
extern MultiTexCoord4f; // enum target, float s, float t, float r, float q
extern Normal3f; // float nx, float ny, float nz
extern Orthof; // float left, float right, float bottom, float top, float zNear, float zFar
extern PointParameterf; // enum pname, float param
extern PointParameterfv; // enum pname, const float *params
extern PointSize; // float size
extern PolygonOffset; // float factor, float units
extern Rotatef; // float angle, float x, float y, float z
extern Scalef; // float x, float y, float z
extern TexEnvf; // enum target, enum pname, float param
extern TexEnvfv; // enum target, enum pname, const float *params
extern TexParameterf; // enum target, enum pname, float param
extern TexParameterfv; // enum target, enum pname, const float *params
extern Translatef; // float x, float y, float z

/* Available in both Common and Common-Lite profiles */
extern ActiveTexture; // enum texture
extern AlphaFuncx; // enum func, clampx ref
extern BindBuffer; // enum target, uint buffer
extern BindTexture; // enum target, uint texture
extern BlendFunc; // enum sfactor, enum dfactor
extern BufferData; // enum target, sizeiptr size, const void *data, enum usage
extern BufferSubData; // enum target, intptr offset, sizeiptr size, const void *data
extern Clear; // bitfield mask
extern ClearColorx; // clampx red, clampx green, clampx blue, clampx alpha
extern ClearDepthx; // clampx depth
extern ClearStencil; // int s
extern ClientActiveTexture; // enum texture
extern ClipPlanex; // enum plane, const fixed *equation
extern Color4ub; // ubyte red, ubyte green, ubyte blue, ubyte alpha
extern Color4x; // fixed red, fixed green, fixed blue, fixed alpha
extern ColorMask; // boolean red, boolean green, boolean blue, boolean alpha
extern ColorPointer; // int size, enum type, sizei stride, const void *pointer
extern CompressedTexImage2D; // enum target, int level, enum internalformat, sizei width, sizei height, int border, sizei imageSize, const void *data
extern CompressedTexSubImage2D; // enum target, int level, int xoffset, int yoffset, sizei width, sizei height, enum format, sizei imageSize, const void *data
extern CopyTexImage2D; // enum target, int level, enum internalformat, int x, int y, sizei width, sizei height, int border
extern CopyTexSubImage2D; // enum target, int level, int xoffset, int yoffset, int x, int y, sizei width, sizei height
extern CullFace; // enum mode
extern DeleteBuffers; // sizei n, const uint *buffers
extern DeleteTextures; // sizei n, const uint *textures
extern DepthFunc; // enum func
extern DepthMask; // boolean flag
extern DepthRangex; // clampx zNear, clampx zFar
extern Disable; // enum cap
extern DisableClientState; // enum array
extern DrawArrays; // enum mode, int first, sizei count
extern DrawElements; // enum mode, sizei count, enum type, const void *indices
extern Enable; // enum cap
extern EnableClientState; // enum array
extern Finish; // void
extern Flush; // void
extern Fogx; // enum pname, fixed param
extern Fogxv; // enum pname, const fixed *params
extern FrontFace; // enum mode
extern Frustumx; // fixed left, fixed right, fixed bottom, fixed top, fixed zNear, fixed zFar
extern GetBooleanv; // enum pname, boolean *params
extern GetBufferParameteriv; // enum target, enum pname, int *params
extern GetClipPlanex; // enum pname, fixed eqn[4]
extern GenBuffers; // sizei n, uint *buffers
extern GenTextures; // sizei n, uint *textures
extern /*enum*/ GetError; // void
extern GetFixedv; // enum pname, fixed *params
extern GetIntegerv; // enum pname, int *params
extern GetLightxv; // enum light, enum pname, fixed *params
extern GetMaterialxv; // enum face, enum pname, fixed *params
extern GetPointerv; // enum pname, void **params
extern /*const ubyte **/ GetString; // enum name
extern GetTexEnviv; // enum env, enum pname, int *params
extern GetTexEnvxv; // enum env, enum pname, fixed *params
extern GetTexParameteriv; // enum target, enum pname, int *params
extern GetTexParameterxv; // enum target, enum pname, fixed *params
extern Hint; // enum target, enum mode
extern /*boolean*/ IsBuffer; // uint buffer
extern /*boolean*/ IsEnabled; // enum cap
extern /*boolean*/ IsTexture; // uint texture
extern LightModelx; // enum pname, fixed param
extern LightModelxv; // enum pname, const fixed *params
extern Lightx; // enum light, enum pname, fixed param
extern Lightxv; // enum light, enum pname, const fixed *params
extern LineWidthx; // fixed width
extern LoadIdentity; // void
extern LoadMatrixx; // const fixed *m
extern LogicOp; // enum opcode
extern Materialx; // enum face, enum pname, fixed param
extern Materialxv; // enum face, enum pname, const fixed *params
extern MatrixMode; // enum mode
extern MultMatrixx; // const fixed *m
extern MultiTexCoord4x; // enum target, fixed s, fixed t, fixed r, fixed q
extern Normal3x; // fixed nx, fixed ny, fixed nz
extern NormalPointer; // enum type, sizei stride, const void *pointer
extern Orthox; // fixed left, fixed right, fixed bottom, fixed top, fixed zNear, fixed zFar
extern PixelStorei; // enum pname, int param
extern PointParameterx; // enum pname, fixed param
extern PointParameterxv; // enum pname, const fixed *params
extern PointSizex; // fixed size
extern PolygonOffsetx; // fixed factor, fixed units
extern PopMatrix; // void
extern PushMatrix; // void
extern ReadPixels; // int x, int y, sizei width, sizei height, enum format, enum type, void *pixels
extern Rotatex; // fixed angle, fixed x, fixed y, fixed z
extern SampleCoverage; // clampf value, boolean invert
extern SampleCoveragex; // clampx value, boolean invert
extern Scalex; // fixed x, fixed y, fixed z
extern Scissor; // int x, int y, sizei width, sizei height
extern ShadeModel; // enum mode
extern StencilFunc; // enum func, int ref, uint mask
extern StencilMask; // uint mask
extern StencilOp; // enum fail, enum zfail, enum zpass
extern TexCoordPointer; // int size, enum type, sizei stride, const void *pointer
extern TexEnvi; // enum target, enum pname, int param
extern TexEnvx; // enum target, enum pname, fixed param
extern TexEnviv; // enum target, enum pname, const int *params
extern TexEnvxv; // enum target, enum pname, const fixed *params
extern TexImage2D; // enum target, int level, int internalformat, sizei width, sizei height, int border, enum format, enum type, const void *pixels
extern TexParameteri; // enum target, enum pname, int param
extern TexParameterx; // enum target, enum pname, fixed param
extern TexParameteriv; // enum target, enum pname, const int *params
extern TexParameterxv; // enum target, enum pname, const fixed *params
extern TexSubImage2D; // enum target, int level, int xoffset, int yoffset, sizei width, sizei height, enum format, enum type, const void *pixels
extern Translatex; // fixed x, fixed y, fixed z
extern VertexPointer; // int size, enum type, sizei stride, const void *pointer
extern Viewport; // int x, int y, sizei width, sizei height
extern PointSizePointerOES; // enum type, sizei stride, const void *pointer

}

using extern "libgl1";