-#ifndef __glext_h_
-#define __glext_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: This software was created using the
-** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
-** not been independently verified as being compliant with the OpenGL(R)
-** version 1.2.1 Specification.
-*/
-
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
-#define WIN32_LEAN_AND_MEAN 1
-#include <windows.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
-
-/*************************************************************/
-
-/* Header file version number, required by OpenGL ABI for Linux */
-#define GL_GLEXT_VERSION 7
-
-#ifndef GL_VERSION_1_2
-#define GL_CONSTANT_COLOR 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
-#define GL_CONSTANT_ALPHA 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
-#define GL_BLEND_COLOR 0x8005
-#define GL_FUNC_ADD 0x8006
-#define GL_MIN 0x8007
-#define GL_MAX 0x8008
-#define GL_BLEND_EQUATION 0x8009
-#define GL_FUNC_SUBTRACT 0x800A
-#define GL_FUNC_REVERSE_SUBTRACT 0x800B
-#define GL_CONVOLUTION_1D 0x8010
-#define GL_CONVOLUTION_2D 0x8011
-#define GL_SEPARABLE_2D 0x8012
-#define GL_CONVOLUTION_BORDER_MODE 0x8013
-#define GL_CONVOLUTION_FILTER_SCALE 0x8014
-#define GL_CONVOLUTION_FILTER_BIAS 0x8015
-#define GL_REDUCE 0x8016
-#define GL_CONVOLUTION_FORMAT 0x8017
-#define GL_CONVOLUTION_WIDTH 0x8018
-#define GL_CONVOLUTION_HEIGHT 0x8019
-#define GL_MAX_CONVOLUTION_WIDTH 0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT 0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE 0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS 0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023
-#define GL_HISTOGRAM 0x8024
-#define GL_PROXY_HISTOGRAM 0x8025
-#define GL_HISTOGRAM_WIDTH 0x8026
-#define GL_HISTOGRAM_FORMAT 0x8027
-#define GL_HISTOGRAM_RED_SIZE 0x8028
-#define GL_HISTOGRAM_GREEN_SIZE 0x8029
-#define GL_HISTOGRAM_BLUE_SIZE 0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE 0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C
-#define GL_HISTOGRAM_SINK 0x802D
-#define GL_MINMAX 0x802E
-#define GL_MINMAX_FORMAT 0x802F
-#define GL_MINMAX_SINK 0x8030
-#define GL_TABLE_TOO_LARGE 0x8031
-#define GL_UNSIGNED_BYTE_3_3_2 0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
-#define GL_UNSIGNED_INT_8_8_8_8 0x8035
-#define GL_UNSIGNED_INT_10_10_10_2 0x8036
-#define GL_RESCALE_NORMAL 0x803A
-#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362
-#define GL_UNSIGNED_SHORT_5_6_5 0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
-#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
-#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
-#define GL_COLOR_MATRIX 0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA
-#define GL_COLOR_TABLE 0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2
-#define GL_PROXY_COLOR_TABLE 0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-#define GL_COLOR_TABLE_SCALE 0x80D6
-#define GL_COLOR_TABLE_BIAS 0x80D7
-#define GL_COLOR_TABLE_FORMAT 0x80D8
-#define GL_COLOR_TABLE_WIDTH 0x80D9
-#define GL_COLOR_TABLE_RED_SIZE 0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF
-#define GL_CLAMP_TO_EDGE 0x812F
-#define GL_TEXTURE_MIN_LOD 0x813A
-#define GL_TEXTURE_MAX_LOD 0x813B
-#define GL_TEXTURE_BASE_LEVEL 0x813C
-#define GL_TEXTURE_MAX_LEVEL 0x813D
-#endif
-
-#ifndef GL_ARB_multitexture
-#define GL_TEXTURE0_ARB 0x84C0
-#define GL_TEXTURE1_ARB 0x84C1
-#define GL_TEXTURE2_ARB 0x84C2
-#define GL_TEXTURE3_ARB 0x84C3
-#define GL_TEXTURE4_ARB 0x84C4
-#define GL_TEXTURE5_ARB 0x84C5
-#define GL_TEXTURE6_ARB 0x84C6
-#define GL_TEXTURE7_ARB 0x84C7
-#define GL_TEXTURE8_ARB 0x84C8
-#define GL_TEXTURE9_ARB 0x84C9
-#define GL_TEXTURE10_ARB 0x84CA
-#define GL_TEXTURE11_ARB 0x84CB
-#define GL_TEXTURE12_ARB 0x84CC
-#define GL_TEXTURE13_ARB 0x84CD
-#define GL_TEXTURE14_ARB 0x84CE
-#define GL_TEXTURE15_ARB 0x84CF
-#define GL_TEXTURE16_ARB 0x84D0
-#define GL_TEXTURE17_ARB 0x84D1
-#define GL_TEXTURE18_ARB 0x84D2
-#define GL_TEXTURE19_ARB 0x84D3
-#define GL_TEXTURE20_ARB 0x84D4
-#define GL_TEXTURE21_ARB 0x84D5
-#define GL_TEXTURE22_ARB 0x84D6
-#define GL_TEXTURE23_ARB 0x84D7
-#define GL_TEXTURE24_ARB 0x84D8
-#define GL_TEXTURE25_ARB 0x84D9
-#define GL_TEXTURE26_ARB 0x84DA
-#define GL_TEXTURE27_ARB 0x84DB
-#define GL_TEXTURE28_ARB 0x84DC
-#define GL_TEXTURE29_ARB 0x84DD
-#define GL_TEXTURE30_ARB 0x84DE
-#define GL_TEXTURE31_ARB 0x84DF
-#define GL_ACTIVE_TEXTURE_ARB 0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
-#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
-#endif
-
-#ifndef GL_ARB_transpose_matrix
-#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6
-#endif
-
-#ifndef GL_ARB_multisample
-#define GL_MULTISAMPLE_ARB 0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
-#define GL_SAMPLE_COVERAGE_ARB 0x80A0
-#define GL_SAMPLE_BUFFERS_ARB 0x80A8
-#define GL_SAMPLES_ARB 0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
-#define GL_MULTISAMPLE_BIT_ARB 0x20000000
-#endif
-
-#ifndef GL_ARB_texture_cube_map
-#define GL_NORMAL_MAP_ARB 0x8511
-#define GL_REFLECTION_MAP_ARB 0x8512
-#define GL_TEXTURE_CUBE_MAP_ARB 0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C
-#endif
-
-#ifndef GL_ARB_texture_compression
-#define GL_COMPRESSED_ALPHA_ARB 0x84E9
-#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
-#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
-#define GL_COMPRESSED_RGB_ARB 0x84ED
-#define GL_COMPRESSED_RGBA_ARB 0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
-#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
-#endif
-
-#ifndef GL_ARB_vertex_blend
-#define GL_MAX_VERTEX_UNITS_ARB 0x86A4
-#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5
-#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6
-#define GL_VERTEX_BLEND_ARB 0x86A7
-#define GL_CURRENT_WEIGHT_ARB 0x86A8
-#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9
-#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA
-#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB
-#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC
-#define GL_WEIGHT_ARRAY_ARB 0x86AD
-#define GL_MODELVIEW0_ARB 0x1700
-#define GL_MODELVIEW1_ARB 0x850A
-#define GL_MODELVIEW2_ARB 0x8722
-#define GL_MODELVIEW3_ARB 0x8723
-#define GL_MODELVIEW4_ARB 0x8724
-#define GL_MODELVIEW5_ARB 0x8725
-#define GL_MODELVIEW6_ARB 0x8726
-#define GL_MODELVIEW7_ARB 0x8727
-#define GL_MODELVIEW8_ARB 0x8728
-#define GL_MODELVIEW9_ARB 0x8729
-#define GL_MODELVIEW10_ARB 0x872A
-#define GL_MODELVIEW11_ARB 0x872B
-#define GL_MODELVIEW12_ARB 0x872C
-#define GL_MODELVIEW13_ARB 0x872D
-#define GL_MODELVIEW14_ARB 0x872E
-#define GL_MODELVIEW15_ARB 0x872F
-#define GL_MODELVIEW16_ARB 0x8730
-#define GL_MODELVIEW17_ARB 0x8731
-#define GL_MODELVIEW18_ARB 0x8732
-#define GL_MODELVIEW19_ARB 0x8733
-#define GL_MODELVIEW20_ARB 0x8734
-#define GL_MODELVIEW21_ARB 0x8735
-#define GL_MODELVIEW22_ARB 0x8736
-#define GL_MODELVIEW23_ARB 0x8737
-#define GL_MODELVIEW24_ARB 0x8738
-#define GL_MODELVIEW25_ARB 0x8739
-#define GL_MODELVIEW26_ARB 0x873A
-#define GL_MODELVIEW27_ARB 0x873B
-#define GL_MODELVIEW28_ARB 0x873C
-#define GL_MODELVIEW29_ARB 0x873D
-#define GL_MODELVIEW30_ARB 0x873E
-#define GL_MODELVIEW31_ARB 0x873F
-#endif
-
-#ifndef GL_ARB_texture_env_combine
-#define GL_COMBINE_ARB 0x8570
-#define GL_COMBINE_RGB_ARB 0x8571
-#define GL_COMBINE_ALPHA_ARB 0x8572
-#define GL_SOURCE0_RGB_ARB 0x8580
-#define GL_SOURCE1_RGB_ARB 0x8581
-#define GL_SOURCE2_RGB_ARB 0x8582
-#define GL_SOURCE0_ALPHA_ARB 0x8588
-#define GL_SOURCE1_ALPHA_ARB 0x8589
-#define GL_SOURCE2_ALPHA_ARB 0x858A
-#define GL_OPERAND0_RGB_ARB 0x8590
-#define GL_OPERAND1_RGB_ARB 0x8591
-#define GL_OPERAND2_RGB_ARB 0x8592
-#define GL_OPERAND0_ALPHA_ARB 0x8598
-#define GL_OPERAND1_ALPHA_ARB 0x8599
-#define GL_OPERAND2_ALPHA_ARB 0x859A
-#define GL_RGB_SCALE_ARB 0x8573
-#define GL_ADD_SIGNED_ARB 0x8574
-#define GL_INTERPOLATE_ARB 0x8575
-#define GL_SUBTRACT_ARB 0x84E7
-#define GL_CONSTANT_ARB 0x8576
-#define GL_PRIMARY_COLOR_ARB 0x8577
-#define GL_PREVIOUS_ARB 0x8578
-#endif
-
-#ifndef GL_ARB_texture_env_dot3
-#define GL_DOT3_RGB_ARB 0x86AE
-#define GL_DOT3_RGBA_ARB 0x86AF
-#endif
-
-#ifndef GL_ARB_texture_border_clamp
-#define GL_CLAMP_TO_BORDER_ARB 0x812D
-#endif
-
-#ifndef GL_EXT_abgr
-#define GL_ABGR_EXT 0x8000
-#endif
-
-#ifndef GL_EXT_blend_color
-#define GL_CONSTANT_COLOR_EXT 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002
-#define GL_CONSTANT_ALPHA_EXT 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004
-#define GL_BLEND_COLOR_EXT 0x8005
-#endif
-
-#ifndef GL_EXT_polygon_offset
-#define GL_POLYGON_OFFSET_EXT 0x8037
-#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038
-#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039
-#endif
-
-#ifndef GL_EXT_texture
-#define GL_ALPHA4_EXT 0x803B
-#define GL_ALPHA8_EXT 0x803C
-#define GL_ALPHA12_EXT 0x803D
-#define GL_ALPHA16_EXT 0x803E
-#define GL_LUMINANCE4_EXT 0x803F
-#define GL_LUMINANCE8_EXT 0x8040
-#define GL_LUMINANCE12_EXT 0x8041
-#define GL_LUMINANCE16_EXT 0x8042
-#define GL_LUMINANCE4_ALPHA4_EXT 0x8043
-#define GL_LUMINANCE6_ALPHA2_EXT 0x8044
-#define GL_LUMINANCE8_ALPHA8_EXT 0x8045
-#define GL_LUMINANCE12_ALPHA4_EXT 0x8046
-#define GL_LUMINANCE12_ALPHA12_EXT 0x8047
-#define GL_LUMINANCE16_ALPHA16_EXT 0x8048
-#define GL_INTENSITY_EXT 0x8049
-#define GL_INTENSITY4_EXT 0x804A
-#define GL_INTENSITY8_EXT 0x804B
-#define GL_INTENSITY12_EXT 0x804C
-#define GL_INTENSITY16_EXT 0x804D
-#define GL_RGB2_EXT 0x804E
-#define GL_RGB4_EXT 0x804F
-#define GL_RGB5_EXT 0x8050
-#define GL_RGB8_EXT 0x8051
-#define GL_RGB10_EXT 0x8052
-#define GL_RGB12_EXT 0x8053
-#define GL_RGB16_EXT 0x8054
-#define GL_RGBA2_EXT 0x8055
-#define GL_RGBA4_EXT 0x8056
-#define GL_RGB5_A1_EXT 0x8057
-#define GL_RGBA8_EXT 0x8058
-#define GL_RGB10_A2_EXT 0x8059
-#define GL_RGBA12_EXT 0x805A
-#define GL_RGBA16_EXT 0x805B
-#define GL_TEXTURE_RED_SIZE_EXT 0x805C
-#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D
-#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E
-#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F
-#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060
-#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061
-#define GL_REPLACE_EXT 0x8062
-#define GL_PROXY_TEXTURE_1D_EXT 0x8063
-#define GL_PROXY_TEXTURE_2D_EXT 0x8064
-#define GL_TEXTURE_TOO_LARGE_EXT 0x8065
-#endif
-
-#ifndef GL_EXT_texture3D
-#define GL_PACK_SKIP_IMAGES 0x806B
-#define GL_PACK_SKIP_IMAGES_EXT 0x806B
-#define GL_PACK_IMAGE_HEIGHT 0x806C
-#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C
-#define GL_UNPACK_SKIP_IMAGES 0x806D
-#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D
-#define GL_UNPACK_IMAGE_HEIGHT 0x806E
-#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E
-#define GL_TEXTURE_3D 0x806F
-#define GL_TEXTURE_3D_EXT 0x806F
-#define GL_PROXY_TEXTURE_3D 0x8070
-#define GL_PROXY_TEXTURE_3D_EXT 0x8070
-#define GL_TEXTURE_DEPTH 0x8071
-#define GL_TEXTURE_DEPTH_EXT 0x8071
-#define GL_TEXTURE_WRAP_R 0x8072
-#define GL_TEXTURE_WRAP_R_EXT 0x8072
-#define GL_MAX_3D_TEXTURE_SIZE 0x8073
-#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073
-#endif
-
-#ifndef GL_SGIS_texture_filter4
-#define GL_FILTER4_SGIS 0x8146
-#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147
-#endif
-
-#ifndef GL_EXT_subtexture
-#endif
-
-#ifndef GL_EXT_copy_texture
-#endif
-
-#ifndef GL_EXT_histogram
-#define GL_HISTOGRAM_EXT 0x8024
-#define GL_PROXY_HISTOGRAM_EXT 0x8025
-#define GL_HISTOGRAM_WIDTH_EXT 0x8026
-#define GL_HISTOGRAM_FORMAT_EXT 0x8027
-#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028
-#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029
-#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C
-#define GL_HISTOGRAM_SINK_EXT 0x802D
-#define GL_MINMAX_EXT 0x802E
-#define GL_MINMAX_FORMAT_EXT 0x802F
-#define GL_MINMAX_SINK_EXT 0x8030
-#define GL_TABLE_TOO_LARGE_EXT 0x8031
-#endif
-
-#ifndef GL_EXT_convolution
-#define GL_CONVOLUTION_1D_EXT 0x8010
-#define GL_CONVOLUTION_2D_EXT 0x8011
-#define GL_SEPARABLE_2D_EXT 0x8012
-#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013
-#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014
-#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015
-#define GL_REDUCE_EXT 0x8016
-#define GL_CONVOLUTION_FORMAT_EXT 0x8017
-#define GL_CONVOLUTION_WIDTH_EXT 0x8018
-#define GL_CONVOLUTION_HEIGHT_EXT 0x8019
-#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
-#endif
-
-#ifndef GL_SGI_color_matrix
-#define GL_COLOR_MATRIX_SGI 0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
-#endif
-
-#ifndef GL_SGI_color_table
-#define GL_COLOR_TABLE_SGI 0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
-#define GL_PROXY_COLOR_TABLE_SGI 0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
-#define GL_COLOR_TABLE_SCALE_SGI 0x80D6
-#define GL_COLOR_TABLE_BIAS_SGI 0x80D7
-#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8
-#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9
-#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
-#endif
-
-#ifndef GL_SGIS_pixel_texture
-#define GL_PIXEL_TEXTURE_SGIS 0x8353
-#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
-#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
-#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356
-#endif
-
-#ifndef GL_SGIX_pixel_texture
-#define GL_PIXEL_TEX_GEN_SGIX 0x8139
-#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B
-#endif
-
-#ifndef GL_SGIS_texture4D
-#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130
-#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131
-#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132
-#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133
-#define GL_TEXTURE_4D_SGIS 0x8134
-#define GL_PROXY_TEXTURE_4D_SGIS 0x8135
-#define GL_TEXTURE_4DSIZE_SGIS 0x8136
-#define GL_TEXTURE_WRAP_Q_SGIS 0x8137
-#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138
-#define GL_TEXTURE_4D_BINDING_SGIS 0x814F
-#endif
-
-#ifndef GL_SGI_texture_color_table
-#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC
-#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD
-#endif
-
-#ifndef GL_EXT_cmyka
-#define GL_CMYK_EXT 0x800C
-#define GL_CMYKA_EXT 0x800D
-#define GL_PACK_CMYK_HINT_EXT 0x800E
-#define GL_UNPACK_CMYK_HINT_EXT 0x800F
-#endif
-
-#ifndef GL_EXT_texture_object
-#define GL_TEXTURE_PRIORITY_EXT 0x8066
-#define GL_TEXTURE_RESIDENT_EXT 0x8067
-#define GL_TEXTURE_1D_BINDING_EXT 0x8068
-#define GL_TEXTURE_2D_BINDING_EXT 0x8069
-#define GL_TEXTURE_3D_BINDING_EXT 0x806A
-#endif
-
-#ifndef GL_SGIS_detail_texture
-#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095
-#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
-#define GL_LINEAR_DETAIL_SGIS 0x8097
-#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098
-#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099
-#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A
-#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B
-#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
-#endif
-
-#ifndef GL_SGIS_sharpen_texture
-#define GL_LINEAR_SHARPEN_SGIS 0x80AD
-#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE
-#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF
-#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
-#endif
-
-#ifndef GL_EXT_packed_pixels
-#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
-#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035
-#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036
-#endif
-
-#ifndef GL_SGIS_texture_lod
-#define GL_TEXTURE_MIN_LOD_SGIS 0x813A
-#define GL_TEXTURE_MAX_LOD_SGIS 0x813B
-#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C
-#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D
-#endif
-
-#ifndef GL_SGIS_multisample
-#define GL_MULTISAMPLE_SGIS 0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F
-#define GL_SAMPLE_MASK_SGIS 0x80A0
-#define GL_1PASS_SGIS 0x80A1
-#define GL_2PASS_0_SGIS 0x80A2
-#define GL_2PASS_1_SGIS 0x80A3
-#define GL_4PASS_0_SGIS 0x80A4
-#define GL_4PASS_1_SGIS 0x80A5
-#define GL_4PASS_2_SGIS 0x80A6
-#define GL_4PASS_3_SGIS 0x80A7
-#define GL_SAMPLE_BUFFERS_SGIS 0x80A8
-#define GL_SAMPLES_SGIS 0x80A9
-#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA
-#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB
-#define GL_SAMPLE_PATTERN_SGIS 0x80AC
-#endif
-
-#ifndef GL_EXT_rescale_normal
-#define GL_RESCALE_NORMAL_EXT 0x803A
-#endif
-
-#ifndef GL_EXT_vertex_array
-#define GL_VERTEX_ARRAY_EXT 0x8074
-#define GL_NORMAL_ARRAY_EXT 0x8075
-#define GL_COLOR_ARRAY_EXT 0x8076
-#define GL_INDEX_ARRAY_EXT 0x8077
-#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
-#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
-#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
-#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
-#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
-#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
-#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
-#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
-#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
-#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
-#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
-#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
-#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
-#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
-#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
-#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
-#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
-#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
-#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
-#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
-#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
-#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
-#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
-#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
-#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
-#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
-#endif
-
-#ifndef GL_EXT_misc_attribute
-#endif
-
-#ifndef GL_SGIS_generate_mipmap
-#define GL_GENERATE_MIPMAP_SGIS 0x8191
-#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192
-#endif
-
-#ifndef GL_SGIX_clipmap
-#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170
-#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171
-#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172
-#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173
-#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
-#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
-#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176
-#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177
-#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
-#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D
-#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E
-#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F
-#endif
-
-#ifndef GL_SGIX_shadow
-#define GL_TEXTURE_COMPARE_SGIX 0x819A
-#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B
-#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C
-#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D
-#endif
-
-#ifndef GL_SGIS_texture_edge_clamp
-#define GL_CLAMP_TO_EDGE_SGIS 0x812F
-#endif
-
-#ifndef GL_SGIS_texture_border_clamp
-#define GL_CLAMP_TO_BORDER_SGIS 0x812D
-#endif
-
-#ifndef GL_EXT_blend_minmax
-#define GL_FUNC_ADD_EXT 0x8006
-#define GL_MIN_EXT 0x8007
-#define GL_MAX_EXT 0x8008
-#define GL_BLEND_EQUATION_EXT 0x8009
-#endif
-
-#ifndef GL_EXT_blend_subtract
-#define GL_FUNC_SUBTRACT_EXT 0x800A
-#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B
-#endif
-
-#ifndef GL_EXT_blend_logic_op
-#endif
-
-#ifndef GL_SGIX_interlace
-#define GL_INTERLACE_SGIX 0x8094
-#endif
-
-#ifndef GL_SGIX_pixel_tiles
-#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
-#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
-#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140
-#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141
-#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142
-#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143
-#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144
-#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145
-#endif
-
-#ifndef GL_SGIS_texture_select
-#define GL_DUAL_ALPHA4_SGIS 0x8110
-#define GL_DUAL_ALPHA8_SGIS 0x8111
-#define GL_DUAL_ALPHA12_SGIS 0x8112
-#define GL_DUAL_ALPHA16_SGIS 0x8113
-#define GL_DUAL_LUMINANCE4_SGIS 0x8114
-#define GL_DUAL_LUMINANCE8_SGIS 0x8115
-#define GL_DUAL_LUMINANCE12_SGIS 0x8116
-#define GL_DUAL_LUMINANCE16_SGIS 0x8117
-#define GL_DUAL_INTENSITY4_SGIS 0x8118
-#define GL_DUAL_INTENSITY8_SGIS 0x8119
-#define GL_DUAL_INTENSITY12_SGIS 0x811A
-#define GL_DUAL_INTENSITY16_SGIS 0x811B
-#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C
-#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D
-#define GL_QUAD_ALPHA4_SGIS 0x811E
-#define GL_QUAD_ALPHA8_SGIS 0x811F
-#define GL_QUAD_LUMINANCE4_SGIS 0x8120
-#define GL_QUAD_LUMINANCE8_SGIS 0x8121
-#define GL_QUAD_INTENSITY4_SGIS 0x8122
-#define GL_QUAD_INTENSITY8_SGIS 0x8123
-#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124
-#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125
-#endif
-
-#ifndef GL_SGIX_sprite
-#define GL_SPRITE_SGIX 0x8148
-#define GL_SPRITE_MODE_SGIX 0x8149
-#define GL_SPRITE_AXIS_SGIX 0x814A
-#define GL_SPRITE_TRANSLATION_SGIX 0x814B
-#define GL_SPRITE_AXIAL_SGIX 0x814C
-#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D
-#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E
-#endif
-
-#ifndef GL_SGIX_texture_multi_buffer
-#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
-#endif
-
-#ifndef GL_SGIS_point_parameters
-#define GL_POINT_SIZE_MIN_EXT 0x8126
-#define GL_POINT_SIZE_MIN_SGIS 0x8126
-#define GL_POINT_SIZE_MAX_EXT 0x8127
-#define GL_POINT_SIZE_MAX_SGIS 0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128
-#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
-#define GL_DISTANCE_ATTENUATION_EXT 0x8129
-#define GL_DISTANCE_ATTENUATION_SGIS 0x8129
-#endif
-
-#ifndef GL_SGIX_instruments
-#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
-#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181
-#endif
-
-#ifndef GL_SGIX_texture_scale_bias
-#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179
-#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
-#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
-#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
-#endif
-
-#ifndef GL_SGIX_framezoom
-#define GL_FRAMEZOOM_SGIX 0x818B
-#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C
-#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D
-#endif
-
-#ifndef GL_SGIX_tag_sample_buffer
-#endif
-
-#ifndef GL_FfdMaskSGIX
-#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001
-#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002
-#endif
-
-#ifndef GL_SGIX_polynomial_ffd
-#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194
-#define GL_TEXTURE_DEFORMATION_SGIX 0x8195
-#define GL_DEFORMATIONS_MASK_SGIX 0x8196
-#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197
-#endif
-
-#ifndef GL_SGIX_reference_plane
-#define GL_REFERENCE_PLANE_SGIX 0x817D
-#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E
-#endif
-
-#ifndef GL_SGIX_flush_raster
-#endif
-
-#ifndef GL_SGIX_depth_texture
-#define GL_DEPTH_COMPONENT16_SGIX 0x81A5
-#define GL_DEPTH_COMPONENT24_SGIX 0x81A6
-#define GL_DEPTH_COMPONENT32_SGIX 0x81A7
-#endif
-
-#ifndef GL_SGIS_fog_function
-#define GL_FOG_FUNC_SGIS 0x812A
-#define GL_FOG_FUNC_POINTS_SGIS 0x812B
-#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C
-#endif
-
-#ifndef GL_SGIX_fog_offset
-#define GL_FOG_OFFSET_SGIX 0x8198
-#define GL_FOG_OFFSET_VALUE_SGIX 0x8199
-#endif
-
-#ifndef GL_HP_image_transform
-#define GL_IMAGE_SCALE_X_HP 0x8155
-#define GL_IMAGE_SCALE_Y_HP 0x8156
-#define GL_IMAGE_TRANSLATE_X_HP 0x8157
-#define GL_IMAGE_TRANSLATE_Y_HP 0x8158
-#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159
-#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A
-#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B
-#define GL_IMAGE_MAG_FILTER_HP 0x815C
-#define GL_IMAGE_MIN_FILTER_HP 0x815D
-#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E
-#define GL_CUBIC_HP 0x815F
-#define GL_AVERAGE_HP 0x8160
-#define GL_IMAGE_TRANSFORM_2D_HP 0x8161
-#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
-#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
-#endif
-
-#ifndef GL_HP_convolution_border_modes
-#define GL_IGNORE_BORDER_HP 0x8150
-#define GL_CONSTANT_BORDER_HP 0x8151
-#define GL_REPLICATE_BORDER_HP 0x8153
-#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154
-#endif
-
-#ifndef GL_INGR_palette_buffer
-#endif
-
-#ifndef GL_SGIX_texture_add_env
-#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE
-#endif
-
-#ifndef GL_EXT_color_subtable
-#endif
-
-#ifndef GL_PGI_vertex_hints
-#define GL_VERTEX_DATA_HINT_PGI 0x1A22A
-#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B
-#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C
-#define GL_MAX_VERTEX_HINT_PGI 0x1A22D
-#define GL_COLOR3_BIT_PGI 0x00010000
-#define GL_COLOR4_BIT_PGI 0x00020000
-#define GL_EDGEFLAG_BIT_PGI 0x00040000
-#define GL_INDEX_BIT_PGI 0x00080000
-#define GL_MAT_AMBIENT_BIT_PGI 0x00100000
-#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
-#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000
-#define GL_MAT_EMISSION_BIT_PGI 0x00800000
-#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000
-#define GL_MAT_SHININESS_BIT_PGI 0x02000000
-#define GL_MAT_SPECULAR_BIT_PGI 0x04000000
-#define GL_NORMAL_BIT_PGI 0x08000000
-#define GL_TEXCOORD1_BIT_PGI 0x10000000
-#define GL_TEXCOORD2_BIT_PGI 0x20000000
-#define GL_TEXCOORD3_BIT_PGI 0x40000000
-#define GL_TEXCOORD4_BIT_PGI 0x80000000
-#define GL_VERTEX23_BIT_PGI 0x00000004
-#define GL_VERTEX4_BIT_PGI 0x00000008
-#endif
-
-#ifndef GL_PGI_misc_hints
-#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8
-#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD
-#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE
-#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202
-#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
-#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204
-#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C
-#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D
-#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E
-#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F
-#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210
-#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211
-#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216
-#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217
-#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218
-#define GL_FULL_STIPPLE_HINT_PGI 0x1A219
-#define GL_CLIP_NEAR_HINT_PGI 0x1A220
-#define GL_CLIP_FAR_HINT_PGI 0x1A221
-#define GL_WIDE_LINE_HINT_PGI 0x1A222
-#define GL_BACK_NORMALS_HINT_PGI 0x1A223
-#endif
-
-#ifndef GL_EXT_paletted_texture
-#define GL_COLOR_INDEX1_EXT 0x80E2
-#define GL_COLOR_INDEX2_EXT 0x80E3
-#define GL_COLOR_INDEX4_EXT 0x80E4
-#define GL_COLOR_INDEX8_EXT 0x80E5
-#define GL_COLOR_INDEX12_EXT 0x80E6
-#define GL_COLOR_INDEX16_EXT 0x80E7
-#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8
-#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9
-#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
-#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
-#endif
-
-#ifndef GL_EXT_clip_volume_hint
-#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0
-#endif
-
-#ifndef GL_SGIX_list_priority
-#define GL_LIST_PRIORITY_SGIX 0x8182
-#endif
-
-#ifndef GL_SGIX_ir_instrument1
-#define GL_IR_INSTRUMENT1_SGIX 0x817F
-#endif
-
-#ifndef GL_SGIX_calligraphic_fragment
-#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183
-#endif
-
-#ifndef GL_SGIX_texture_lod_bias
-#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E
-#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F
-#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190
-#endif
-
-#ifndef GL_SGIX_shadow_ambient
-#define GL_SHADOW_AMBIENT_SGIX 0x80BF
-#endif
-
-#ifndef GL_EXT_index_texture
-#endif
-
-#ifndef GL_EXT_index_material
-#define GL_INDEX_MATERIAL_EXT 0x81B8
-#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9
-#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA
-#endif
-
-#ifndef GL_EXT_index_func
-#define GL_INDEX_TEST_EXT 0x81B5
-#define GL_INDEX_TEST_FUNC_EXT 0x81B6
-#define GL_INDEX_TEST_REF_EXT 0x81B7
-#endif
-
-#ifndef GL_EXT_index_array_formats
-#define GL_IUI_V2F_EXT 0x81AD
-#define GL_IUI_V3F_EXT 0x81AE
-#define GL_IUI_N3F_V2F_EXT 0x81AF
-#define GL_IUI_N3F_V3F_EXT 0x81B0
-#define GL_T2F_IUI_V2F_EXT 0x81B1
-#define GL_T2F_IUI_V3F_EXT 0x81B2
-#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3
-#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4
-#endif
-
-#ifndef GL_EXT_compiled_vertex_array
-#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8
-#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9
-#endif
-
-#ifndef GL_EXT_cull_vertex
-#define GL_CULL_VERTEX_EXT 0x81AA
-#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
-#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
-#endif
-
-#ifndef GL_SGIX_ycrcb
-#define GL_YCRCB_422_SGIX 0x81BB
-#define GL_YCRCB_444_SGIX 0x81BC
-#endif
-
-#ifndef GL_SGIX_fragment_lighting
-#define GL_FRAGMENT_LIGHTING_SGIX 0x8400
-#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401
-#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
-#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
-#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404
-#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405
-#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406
-#define GL_LIGHT_ENV_MODE_SGIX 0x8407
-#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
-#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
-#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
-#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
-#define GL_FRAGMENT_LIGHT0_SGIX 0x840C
-#define GL_FRAGMENT_LIGHT1_SGIX 0x840D
-#define GL_FRAGMENT_LIGHT2_SGIX 0x840E
-#define GL_FRAGMENT_LIGHT3_SGIX 0x840F
-#define GL_FRAGMENT_LIGHT4_SGIX 0x8410
-#define GL_FRAGMENT_LIGHT5_SGIX 0x8411
-#define GL_FRAGMENT_LIGHT6_SGIX 0x8412
-#define GL_FRAGMENT_LIGHT7_SGIX 0x8413
-#endif
-
-#ifndef GL_IBM_rasterpos_clip
-#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262
-#endif
-
-#ifndef GL_HP_texture_lighting
-#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167
-#define GL_TEXTURE_POST_SPECULAR_HP 0x8168
-#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169
-#endif
-
-#ifndef GL_EXT_draw_range_elements
-#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8
-#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9
-#endif
-
-#ifndef GL_WIN_phong_shading
-#define GL_PHONG_WIN 0x80EA
-#define GL_PHONG_HINT_WIN 0x80EB
-#endif
-
-#ifndef GL_WIN_specular_fog
-#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC
-#endif
-
-#ifndef GL_EXT_light_texture
-#define GL_FRAGMENT_MATERIAL_EXT 0x8349
-#define GL_FRAGMENT_NORMAL_EXT 0x834A
-#define GL_FRAGMENT_COLOR_EXT 0x834C
-#define GL_ATTENUATION_EXT 0x834D
-#define GL_SHADOW_ATTENUATION_EXT 0x834E
-#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F
-#define GL_TEXTURE_LIGHT_EXT 0x8350
-#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351
-#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
-/* reuse GL_FRAGMENT_DEPTH_EXT */
-#endif
-
-#ifndef GL_SGIX_blend_alpha_minmax
-#define GL_ALPHA_MIN_SGIX 0x8320
-#define GL_ALPHA_MAX_SGIX 0x8321
-#endif
-
-#ifndef GL_EXT_bgra
-#define GL_BGR_EXT 0x80E0
-#define GL_BGRA_EXT 0x80E1
-#endif
-
-#ifndef GL_SGIX_async
-#define GL_ASYNC_MARKER_SGIX 0x8329
-#endif
-
-#ifndef GL_SGIX_async_pixel
-#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C
-#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D
-#define GL_ASYNC_READ_PIXELS_SGIX 0x835E
-#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F
-#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360
-#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361
-#endif
-
-#ifndef GL_SGIX_async_histogram
-#define GL_ASYNC_HISTOGRAM_SGIX 0x832C
-#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D
-#endif
-
-#ifndef GL_INTEL_texture_scissor
-#endif
-
-#ifndef GL_INTEL_parallel_arrays
-#define GL_PARALLEL_ARRAYS_INTEL 0x83F4
-#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
-#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
-#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
-#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
-#endif
-
-#ifndef GL_HP_occlusion_test
-#define GL_OCCLUSION_TEST_HP 0x8165
-#define GL_OCCLUSION_TEST_RESULT_HP 0x8166
-#endif
-
-#ifndef GL_EXT_pixel_transform
-#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330
-#define GL_PIXEL_MAG_FILTER_EXT 0x8331
-#define GL_PIXEL_MIN_FILTER_EXT 0x8332
-#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333
-#define GL_CUBIC_EXT 0x8334
-#define GL_AVERAGE_EXT 0x8335
-#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
-#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
-#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338
-#endif
-
-#ifndef GL_EXT_pixel_transform_color_table
-#endif
-
-#ifndef GL_EXT_shared_texture_palette
-#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB
-#endif
-
-#ifndef GL_EXT_separate_specular_color
-#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8
-#define GL_SINGLE_COLOR_EXT 0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA
-#endif
-
-#ifndef GL_EXT_secondary_color
-#define GL_COLOR_SUM_EXT 0x8458
-#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459
-#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
-#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
-#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
-#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
-#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E
-#endif
-
-#ifndef GL_EXT_texture_perturb_normal
-#define GL_PERTURB_EXT 0x85AE
-#define GL_TEXTURE_NORMAL_EXT 0x85AF
-#endif
-
-#ifndef GL_EXT_multi_draw_arrays
-#endif
-
-#ifndef GL_EXT_fog_coord
-#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
-#define GL_FOG_COORDINATE_EXT 0x8451
-#define GL_FRAGMENT_DEPTH_EXT 0x8452
-#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
-#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
-#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
-#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
-#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457
-#endif
-
-#ifndef GL_REND_screen_coordinates
-#define GL_SCREEN_COORDINATES_REND 0x8490
-#define GL_INVERTED_SCREEN_W_REND 0x8491
-#endif
-
-#ifndef GL_EXT_coordinate_frame
-#define GL_TANGENT_ARRAY_EXT 0x8439
-#define GL_BINORMAL_ARRAY_EXT 0x843A
-#define GL_CURRENT_TANGENT_EXT 0x843B
-#define GL_CURRENT_BINORMAL_EXT 0x843C
-#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E
-#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F
-#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440
-#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441
-#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442
-#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443
-#define GL_MAP1_TANGENT_EXT 0x8444
-#define GL_MAP2_TANGENT_EXT 0x8445
-#define GL_MAP1_BINORMAL_EXT 0x8446
-#define GL_MAP2_BINORMAL_EXT 0x8447
-#endif
-
-#ifndef GL_EXT_texture_env_combine
-#define GL_COMBINE_EXT 0x8570
-#define GL_COMBINE_RGB_EXT 0x8571
-#define GL_COMBINE_ALPHA_EXT 0x8572
-#define GL_RGB_SCALE_EXT 0x8573
-#define GL_ADD_SIGNED_EXT 0x8574
-#define GL_INTERPOLATE_EXT 0x8575
-#define GL_CONSTANT_EXT 0x8576
-#define GL_PRIMARY_COLOR_EXT 0x8577
-#define GL_PREVIOUS_EXT 0x8578
-#define GL_SOURCE0_RGB_EXT 0x8580
-#define GL_SOURCE1_RGB_EXT 0x8581
-#define GL_SOURCE2_RGB_EXT 0x8582
-#define GL_SOURCE3_RGB_EXT 0x8583
-#define GL_SOURCE4_RGB_EXT 0x8584
-#define GL_SOURCE5_RGB_EXT 0x8585
-#define GL_SOURCE6_RGB_EXT 0x8586
-#define GL_SOURCE7_RGB_EXT 0x8587
-#define GL_SOURCE0_ALPHA_EXT 0x8588
-#define GL_SOURCE1_ALPHA_EXT 0x8589
-#define GL_SOURCE2_ALPHA_EXT 0x858A
-#define GL_SOURCE3_ALPHA_EXT 0x858B
-#define GL_SOURCE4_ALPHA_EXT 0x858C
-#define GL_SOURCE5_ALPHA_EXT 0x858D
-#define GL_SOURCE6_ALPHA_EXT 0x858E
-#define GL_SOURCE7_ALPHA_EXT 0x858F
-#define GL_OPERAND0_RGB_EXT 0x8590
-#define GL_OPERAND1_RGB_EXT 0x8591
-#define GL_OPERAND2_RGB_EXT 0x8592
-#define GL_OPERAND3_RGB_EXT 0x8593
-#define GL_OPERAND4_RGB_EXT 0x8594
-#define GL_OPERAND5_RGB_EXT 0x8595
-#define GL_OPERAND6_RGB_EXT 0x8596
-#define GL_OPERAND7_RGB_EXT 0x8597
-#define GL_OPERAND0_ALPHA_EXT 0x8598
-#define GL_OPERAND1_ALPHA_EXT 0x8599
-#define GL_OPERAND2_ALPHA_EXT 0x859A
-#define GL_OPERAND3_ALPHA_EXT 0x859B
-#define GL_OPERAND4_ALPHA_EXT 0x859C
-#define GL_OPERAND5_ALPHA_EXT 0x859D
-#define GL_OPERAND6_ALPHA_EXT 0x859E
-#define GL_OPERAND7_ALPHA_EXT 0x859F
-#endif
-
-#ifndef GL_APPLE_specular_vector
-#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
-#endif
-
-#ifndef GL_APPLE_transform_hint
-#define GL_TRANSFORM_HINT_APPLE 0x85B1
-#endif
-
-#ifndef GL_SGIX_fog_scale
-#define GL_FOG_SCALE_SGIX 0x81FC
-#define GL_FOG_SCALE_VALUE_SGIX 0x81FD
-#endif
-
-#ifndef GL_SUNX_constant_data
-#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5
-#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6
-#endif
-
-#ifndef GL_SUN_global_alpha
-#define GL_GLOBAL_ALPHA_SUN 0x81D9
-#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA
-#endif
-
-#ifndef GL_SUN_triangle_list
-#define GL_RESTART_SUN 0x01
-#define GL_REPLACE_MIDDLE_SUN 0x02
-#define GL_REPLACE_OLDEST_SUN 0x03
-#define GL_TRIANGLE_LIST_SUN 0x81D7
-#define GL_REPLACEMENT_CODE_SUN 0x81D8
-#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0
-#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
-#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
-#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
-#define GL_R1UI_V3F_SUN 0x85C4
-#define GL_R1UI_C4UB_V3F_SUN 0x85C5
-#define GL_R1UI_C3F_V3F_SUN 0x85C6
-#define GL_R1UI_N3F_V3F_SUN 0x85C7
-#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8
-#define GL_R1UI_T2F_V3F_SUN 0x85C9
-#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA
-#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB
-#endif
-
-#ifndef GL_SUN_vertex
-#endif
-
-#ifndef GL_EXT_blend_func_separate
-#define GL_BLEND_DST_RGB_EXT 0x80C8
-#define GL_BLEND_SRC_RGB_EXT 0x80C9
-#define GL_BLEND_DST_ALPHA_EXT 0x80CA
-#define GL_BLEND_SRC_ALPHA_EXT 0x80CB
-#endif
-
-#ifndef GL_INGR_color_clamp
-#define GL_RED_MIN_CLAMP_INGR 0x8560
-#define GL_GREEN_MIN_CLAMP_INGR 0x8561
-#define GL_BLUE_MIN_CLAMP_INGR 0x8562
-#define GL_ALPHA_MIN_CLAMP_INGR 0x8563
-#define GL_RED_MAX_CLAMP_INGR 0x8564
-#define GL_GREEN_MAX_CLAMP_INGR 0x8565
-#define GL_BLUE_MAX_CLAMP_INGR 0x8566
-#define GL_ALPHA_MAX_CLAMP_INGR 0x8567
-#endif
-
-#ifndef GL_INGR_interlace_read
-#define GL_INTERLACE_READ_INGR 0x8568
-#endif
-
-#ifndef GL_EXT_stencil_wrap
-#define GL_INCR_WRAP_EXT 0x8507
-#define GL_DECR_WRAP_EXT 0x8508
-#endif
-
-#ifndef GL_EXT_422_pixels
-#define GL_422_EXT 0x80CC
-#define GL_422_REV_EXT 0x80CD
-#define GL_422_AVERAGE_EXT 0x80CE
-#define GL_422_REV_AVERAGE_EXT 0x80CF
-#endif
-
-#ifndef GL_NV_texgen_reflection
-#define GL_NORMAL_MAP_NV 0x8511
-#define GL_REFLECTION_MAP_NV 0x8512
-#endif
-
-#ifndef GL_EXT_texture_cube_map
-#define GL_NORMAL_MAP_EXT 0x8511
-#define GL_REFLECTION_MAP_EXT 0x8512
-#define GL_TEXTURE_CUBE_MAP_EXT 0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C
-#endif
-
-#ifndef GL_SUN_convolution_border_modes
-#define GL_WRAP_BORDER_SUN 0x81D4
-#endif
-
-#ifndef GL_EXT_texture_env_add
-#endif
-
-#ifndef GL_EXT_texture_lod_bias
-#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD
-#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500
-#define GL_TEXTURE_LOD_BIAS_EXT 0x8501
-#endif
-
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
-#endif
-
-#ifndef GL_EXT_vertex_weighting
-#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH
-#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502
-#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX
-#define GL_MODELVIEW_MATRIX1_EXT 0x8506
-#define GL_VERTEX_WEIGHTING_EXT 0x8509
-#define GL_MODELVIEW0_EXT GL_MODELVIEW
-#define GL_MODELVIEW1_EXT 0x850A
-#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B
-#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C
-#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D
-#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E
-#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
-#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
-#endif
-
-#ifndef GL_NV_light_max_exponent
-#define GL_MAX_SHININESS_NV 0x8504
-#define GL_MAX_SPOT_EXPONENT_NV 0x8505
-#endif
-
-#ifndef GL_NV_vertex_array_range
-#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
-#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
-#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F
-#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
-#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
-#endif
-
-#ifndef GL_NV_register_combiners
-#define GL_REGISTER_COMBINERS_NV 0x8522
-#define GL_VARIABLE_A_NV 0x8523
-#define GL_VARIABLE_B_NV 0x8524
-#define GL_VARIABLE_C_NV 0x8525
-#define GL_VARIABLE_D_NV 0x8526
-#define GL_VARIABLE_E_NV 0x8527
-#define GL_VARIABLE_F_NV 0x8528
-#define GL_VARIABLE_G_NV 0x8529
-#define GL_CONSTANT_COLOR0_NV 0x852A
-#define GL_CONSTANT_COLOR1_NV 0x852B
-#define GL_PRIMARY_COLOR_NV 0x852C
-#define GL_SECONDARY_COLOR_NV 0x852D
-#define GL_SPARE0_NV 0x852E
-#define GL_SPARE1_NV 0x852F
-#define GL_DISCARD_NV 0x8530
-#define GL_E_TIMES_F_NV 0x8531
-#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
-#define GL_UNSIGNED_IDENTITY_NV 0x8536
-#define GL_UNSIGNED_INVERT_NV 0x8537
-#define GL_EXPAND_NORMAL_NV 0x8538
-#define GL_EXPAND_NEGATE_NV 0x8539
-#define GL_HALF_BIAS_NORMAL_NV 0x853A
-#define GL_HALF_BIAS_NEGATE_NV 0x853B
-#define GL_SIGNED_IDENTITY_NV 0x853C
-#define GL_SIGNED_NEGATE_NV 0x853D
-#define GL_SCALE_BY_TWO_NV 0x853E
-#define GL_SCALE_BY_FOUR_NV 0x853F
-#define GL_SCALE_BY_ONE_HALF_NV 0x8540
-#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
-#define GL_COMBINER_INPUT_NV 0x8542
-#define GL_COMBINER_MAPPING_NV 0x8543
-#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
-#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
-#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
-#define GL_COMBINER_MUX_SUM_NV 0x8547
-#define GL_COMBINER_SCALE_NV 0x8548
-#define GL_COMBINER_BIAS_NV 0x8549
-#define GL_COMBINER_AB_OUTPUT_NV 0x854A
-#define GL_COMBINER_CD_OUTPUT_NV 0x854B
-#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
-#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
-#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
-#define GL_COLOR_SUM_CLAMP_NV 0x854F
-#define GL_COMBINER0_NV 0x8550
-#define GL_COMBINER1_NV 0x8551
-#define GL_COMBINER2_NV 0x8552
-#define GL_COMBINER3_NV 0x8553
-#define GL_COMBINER4_NV 0x8554
-#define GL_COMBINER5_NV 0x8555
-#define GL_COMBINER6_NV 0x8556
-#define GL_COMBINER7_NV 0x8557
-/* reuse GL_TEXTURE0_ARB */
-/* reuse GL_TEXTURE1_ARB */
-/* reuse GL_ZERO */
-/* reuse GL_NONE */
-/* reuse GL_FOG */
-#endif
-
-#ifndef GL_NV_fog_distance
-#define GL_FOG_DISTANCE_MODE_NV 0x855A
-#define GL_EYE_RADIAL_NV 0x855B
-#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C
-/* reuse GL_EYE_PLANE */
-#endif
-
-#ifndef GL_NV_texgen_emboss
-#define GL_EMBOSS_LIGHT_NV 0x855D
-#define GL_EMBOSS_CONSTANT_NV 0x855E
-#define GL_EMBOSS_MAP_NV 0x855F
-#endif
-
-#ifndef GL_NV_blend_square
-#endif
-
-#ifndef GL_NV_texture_env_combine4
-#define GL_COMBINE4_NV 0x8503
-#define GL_SOURCE3_RGB_NV 0x8583
-#define GL_SOURCE3_ALPHA_NV 0x858B
-#define GL_OPERAND3_RGB_NV 0x8593
-#define GL_OPERAND3_ALPHA_NV 0x859B
-#endif
-
-#ifndef GL_MESA_resize_buffers
-#endif
-
-#ifndef GL_MESA_window_pos
-#endif
-
-#ifndef GL_EXT_texture_compression_s3tc
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
-#endif
-
-#ifndef GL_IBM_cull_vertex
-#define GL_CULL_VERTEX_IBM 103050
-#endif
-
-#ifndef GL_IBM_multimode_draw_arrays
-#endif
-
-#ifndef GL_IBM_vertex_array_lists
-#define GL_VERTEX_ARRAY_LIST_IBM 103070
-#define GL_NORMAL_ARRAY_LIST_IBM 103071
-#define GL_COLOR_ARRAY_LIST_IBM 103072
-#define GL_INDEX_ARRAY_LIST_IBM 103073
-#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074
-#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075
-#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076
-#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
-#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080
-#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081
-#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082
-#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083
-#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
-#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
-#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
-#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
-#endif
-
-#ifndef GL_SGIX_subsample
-#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0
-#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1
-#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2
-#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3
-#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4
-#endif
-
-#ifndef GL_SGIX_ycrcb_subsample
-#endif
-
-#ifndef GL_SGIX_ycrcba
-#define GL_YCRCB_SGIX 0x8318
-#define GL_YCRCBA_SGIX 0x8319
-#endif
-
-#ifndef GL_SGI_depth_pass_instrument
-#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310
-#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311
-#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312
-#endif
-
-#ifndef GL_3DFX_texture_compression_FXT1
-#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0
-#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1
-#endif
-
-#ifndef GL_3DFX_multisample
-#define GL_MULTISAMPLE_3DFX 0x86B2
-#define GL_SAMPLE_BUFFERS_3DFX 0x86B3
-#define GL_SAMPLES_3DFX 0x86B4
-#define GL_MULTISAMPLE_BIT_3DFX 0x20000000
-#endif
-
-#ifndef GL_3DFX_tbuffer
-#endif
-
-#ifndef GL_EXT_multisample
-#define GL_MULTISAMPLE_EXT 0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F
-#define GL_SAMPLE_MASK_EXT 0x80A0
-#define GL_1PASS_EXT 0x80A1
-#define GL_2PASS_0_EXT 0x80A2
-#define GL_2PASS_1_EXT 0x80A3
-#define GL_4PASS_0_EXT 0x80A4
-#define GL_4PASS_1_EXT 0x80A5
-#define GL_4PASS_2_EXT 0x80A6
-#define GL_4PASS_3_EXT 0x80A7
-#define GL_SAMPLE_BUFFERS_EXT 0x80A8
-#define GL_SAMPLES_EXT 0x80A9
-#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA
-#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB
-#define GL_SAMPLE_PATTERN_EXT 0x80AC
-#endif
-
-#ifndef GL_SGIX_vertex_preclip
-#define GL_VERTEX_PRECLIP_SGIX 0x83EE
-#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF
-#endif
-
-#ifndef GL_SGIX_convolution_accuracy
-#define GL_CONVOLUTION_HINT_SGIX 0x8316
-#endif
-
-#ifndef GL_SGIX_resample
-#define GL_PACK_RESAMPLE_SGIX 0x842C
-#define GL_UNPACK_RESAMPLE_SGIX 0x842D
-#define GL_RESAMPLE_REPLICATE_SGIX 0x842E
-#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F
-#define GL_RESAMPLE_DECIMATE_SGIX 0x8430
-#endif
-
-#ifndef GL_SGIS_point_line_texgen
-#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0
-#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1
-#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2
-#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3
-#define GL_EYE_POINT_SGIS 0x81F4
-#define GL_OBJECT_POINT_SGIS 0x81F5
-#define GL_EYE_LINE_SGIS 0x81F6
-#define GL_OBJECT_LINE_SGIS 0x81F7
-#endif
-
-#ifndef GL_SGIS_texture_color_mask
-#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF
-#endif
-
-#ifndef GL_EXT_texture_env_dot3
-#define GL_DOT3_RGB_EXT 0x8740
-#define GL_DOT3_RGBA_EXT 0x8741
-#endif
-
-
-/*************************************************************/
-
-#ifndef GL_VERSION_1_2
-#define GL_VERSION_1_2 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
-extern void APIENTRY glBlendEquation (GLenum);
-extern void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
-extern void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
-extern void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
-extern void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
-extern void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
-extern void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
-extern void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
-extern void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
-extern void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
-extern void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
-extern void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
-extern void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-extern void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
-extern void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-extern void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
-extern void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
-extern void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
-extern void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
-extern void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
-extern void APIENTRY glResetHistogram (GLenum);
-extern void APIENTRY glResetMinmax (GLenum);
-extern void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-typedef void (APIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode);
-typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-typedef void (APIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
-typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
-typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
-typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
-typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
-typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
-typedef void (APIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target);
-typedef void (APIENTRY * PFNGLRESETMINMAXPROC) (GLenum target);
-typedef void (APIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-
-#ifndef GL_ARB_multitexture
-#define GL_ARB_multitexture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glActiveTextureARB (GLenum);
-extern void APIENTRY glClientActiveTextureARB (GLenum);
-extern void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
-extern void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
-extern void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
-extern void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
-extern void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
-extern void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
-extern void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
-extern void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
-extern void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
-extern void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
-extern void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
-extern void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
-extern void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
-extern void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
-extern void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
-extern void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
-extern void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
-extern void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
-extern void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
-extern void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
-extern void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
-extern void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
-extern void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
-extern void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-extern void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
-extern void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
-extern void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
-extern void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
-extern void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
-extern void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-#endif
-
-#ifndef GL_ARB_transpose_matrix
-#define GL_ARB_transpose_matrix 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
-extern void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
-extern void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
-extern void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-#endif
-
-#ifndef GL_ARB_multisample
-#define GL_ARB_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
-extern void APIENTRY glSamplePassARB (GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRY * PFNGLSAMPLEPASSARBPROC) (GLenum pass);
-#endif
-
-#ifndef GL_ARB_texture_env_add
-#define GL_ARB_texture_env_add 1
-#endif
-
-#ifndef GL_ARB_texture_cube_map
-#define GL_ARB_texture_cube_map 1
-#endif
-
-#ifndef GL_ARB_texture_compression
-#define GL_ARB_texture_compression 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-extern void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-extern void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-extern void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-extern void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-extern void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-extern void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, void *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
-#endif
-
-#ifndef GL_ARB_texture_env_combine
-#define GL_ARB_texture_env_combine 1
-#endif
-
-#ifndef GL_ARB_texture_env_dot3
-#define GL_ARB_texture_env_dot3 1
-#endif
-
-#ifndef GL_ARB_texture_border_clamp
-#define GL_ARB_texture_border_clamp 1
-#endif
-
-#ifndef GL_EXT_blend_color
-#define GL_EXT_blend_color 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-#endif
-
-#ifndef GL_EXT_polygon_offset
-#define GL_EXT_polygon_offset 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
-#endif
-
-#ifndef GL_EXT_texture
-#define GL_EXT_texture 1
-#endif
-
-#ifndef GL_EXT_texture3D
-#define GL_EXT_texture3D 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-#endif
-
-#ifndef GL_SGIS_texture_filter4
-#define GL_SGIS_texture_filter4 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
-typedef void (APIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-#endif
-
-#ifndef GL_EXT_subtexture
-#define GL_EXT_subtexture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-#endif
-
-#ifndef GL_EXT_copy_texture
-#define GL_EXT_copy_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-extern void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-extern void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
-extern void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-extern void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-
-#ifndef GL_EXT_histogram
-#define GL_EXT_histogram 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
-extern void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
-extern void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
-extern void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
-extern void APIENTRY glResetHistogramEXT (GLenum);
-extern void APIENTRY glResetMinmaxEXT (GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
-typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
-typedef void (APIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target);
-#endif
-
-#ifndef GL_EXT_convolution
-#define GL_EXT_convolution 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
-extern void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
-extern void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
-extern void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
-extern void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
-extern void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-extern void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
-extern void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-extern void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
-typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
-typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
-typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
-#endif
-
-#ifndef GL_EXT_color_matrix
-#define GL_EXT_color_matrix 1
-#endif
-
-#ifndef GL_SGI_color_table
-#define GL_SGI_color_table 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
-extern void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
-extern void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
-extern void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
-typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
-#endif
-
-#ifndef GL_SGIX_pixel_texture
-#define GL_SGIX_pixel_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glPixelTexGenSGIX (GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
-#endif
-
-#ifndef GL_SGIS_pixel_texture
-#define GL_SGIS_pixel_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
-extern void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
-extern void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
-extern void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
-extern void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
-extern void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
-#endif
-
-#ifndef GL_SGIS_texture4D
-#define GL_SGIS_texture4D 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
-#endif
-
-#ifndef GL_SGI_texture_color_table
-#define GL_SGI_texture_color_table 1
-#endif
-
-#ifndef GL_EXT_cmyka
-#define GL_EXT_cmyka 1
-#endif
-
-#ifndef GL_EXT_texture_object
-#define GL_EXT_texture_object 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
-extern void APIENTRY glBindTextureEXT (GLenum, GLuint);
-extern void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
-extern void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
-extern GLboolean APIENTRY glIsTextureEXT (GLuint);
-extern void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef GLboolean (APIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
-typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
-typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
-typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
-typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture);
-typedef void (APIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-#endif
-
-#ifndef GL_SGIS_detail_texture
-#define GL_SGIS_detail_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-extern void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#endif
-
-#ifndef GL_SGIS_sharpen_texture
-#define GL_SGIS_sharpen_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-extern void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#endif
-
-#ifndef GL_EXT_packed_pixels
-#define GL_EXT_packed_pixels 1
-#endif
-
-#ifndef GL_SGIS_texture_lod
-#define GL_SGIS_texture_lod 1
-#endif
-
-#ifndef GL_SGIS_multisample
-#define GL_SGIS_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
-extern void APIENTRY glSamplePatternSGIS (GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
-#endif
-
-#ifndef GL_EXT_rescale_normal
-#define GL_EXT_rescale_normal 1
-#endif
-
-#ifndef GL_EXT_vertex_array
-#define GL_EXT_vertex_array 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glArrayElementEXT (GLint);
-extern void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-extern void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
-extern void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
-extern void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
-extern void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-extern void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-extern void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-extern void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);
-typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
-typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
-typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
-#endif
-
-#ifndef GL_EXT_misc_attribute
-#define GL_EXT_misc_attribute 1
-#endif
-
-#ifndef GL_SGIS_generate_mipmap
-#define GL_SGIS_generate_mipmap 1
-#endif
-
-#ifndef GL_SGIX_clipmap
-#define GL_SGIX_clipmap 1
-#endif
-
-#ifndef GL_SGIX_shadow
-#define GL_SGIX_shadow 1
-#endif
-
-#ifndef GL_SGIS_texture_edge_clamp
-#define GL_SGIS_texture_edge_clamp 1
-#endif
-
-#ifndef GL_SGIS_texture_border_clamp
-#define GL_SGIS_texture_border_clamp 1
-#endif
-
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glBlendEquationEXT (GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
-#endif
-
-#ifndef GL_EXT_blend_subtract
-#define GL_EXT_blend_subtract 1
-#endif
-
-#ifndef GL_EXT_blend_logic_op
-#define GL_EXT_blend_logic_op 1
-#endif
-
-#ifndef GL_SGIX_interlace
-#define GL_SGIX_interlace 1
-#endif
-
-#ifndef GL_SGIX_pixel_tiles
-#define GL_SGIX_pixel_tiles 1
-#endif
-
-#ifndef GL_SGIX_texture_select
-#define GL_SGIX_texture_select 1
-#endif
-
-#ifndef GL_SGIX_sprite
-#define GL_SGIX_sprite 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
-extern void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
-extern void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
-extern void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
-#endif
-
-#ifndef GL_SGIX_texture_multi_buffer
-#define GL_SGIX_texture_multi_buffer 1
-#endif
-
-#ifndef GL_EXT_point_parameters
-#define GL_EXT_point_parameters 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
-extern void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
-extern void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
-extern void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-#endif
-
-#ifndef GL_SGIX_instruments
-#define GL_SGIX_instruments 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern GLint APIENTRY glGetInstrumentsSGIX (void);
-extern void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
-extern GLint APIENTRY glPollInstrumentsSGIX (GLint *);
-extern void APIENTRY glReadInstrumentsSGIX (GLint);
-extern void APIENTRY glStartInstrumentsSGIX (void);
-extern void APIENTRY glStopInstrumentsSGIX (GLint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef GLint (APIENTRY * PFNGLGETINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRY * PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
-typedef GLint (APIENTRY * PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
-typedef void (APIENTRY * PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
-typedef void (APIENTRY * PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRY * PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
-#endif
-
-#ifndef GL_SGIX_texture_scale_bias
-#define GL_SGIX_texture_scale_bias 1
-#endif
-
-#ifndef GL_SGIX_framezoom
-#define GL_SGIX_framezoom 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glFrameZoomSGIX (GLint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
-#endif
-
-#ifndef GL_SGIX_tag_sample_buffer
-#define GL_SGIX_tag_sample_buffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTagSampleBufferSGIX (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
-#endif
-
-#ifndef GL_SGIX_polynomial_ffd
-#define GL_SGIX_polynomial_ffd 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-extern void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
-extern void APIENTRY glDeformSGIX (GLbitfield);
-extern void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-typedef void (APIENTRY * PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-typedef void (APIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask);
-typedef void (APIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
-#endif
-
-#ifndef GL_SGIX_reference_plane
-#define GL_SGIX_reference_plane 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glReferencePlaneSGIX (const GLdouble *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
-#endif
-
-#ifndef GL_SGIX_flush_raster
-#define GL_SGIX_flush_raster 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glFlushRasterSGIX (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);
-#endif
-
-#ifndef GL_SGIX_depth_texture
-#define GL_SGIX_depth_texture 1
-#endif
-
-#ifndef GL_SGIS_fog_function
-#define GL_SGIS_fog_function 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
-extern void APIENTRY glGetFogFuncSGIS (const GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
-typedef void (APIENTRY * PFNGLGETFOGFUNCSGISPROC) (const GLfloat *points);
-#endif
-
-#ifndef GL_SGIX_fog_offset
-#define GL_SGIX_fog_offset 1
-#endif
-
-#ifndef GL_HP_image_transform
-#define GL_HP_image_transform 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
-extern void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
-extern void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
-extern void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
-extern void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
-extern void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
-#endif
-
-#ifndef GL_HP_convolution_border_modes
-#define GL_HP_convolution_border_modes 1
-#endif
-
-#ifndef GL_SGIX_texture_add_env
-#define GL_SGIX_texture_add_env 1
-#endif
-
-#ifndef GL_EXT_color_subtable
-#define GL_EXT_color_subtable 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
-typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-#endif
-
-#ifndef GL_PGI_vertex_hints
-#define GL_PGI_vertex_hints 1
-#endif
-
-#ifndef GL_PGI_misc_hints
-#define GL_PGI_misc_hints 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glHintPGI (GLenum, GLint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLHINTPGIPROC) (GLenum target, GLint mode);
-#endif
-
-#ifndef GL_EXT_paletted_texture
-#define GL_EXT_paletted_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-extern void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
-extern void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
-extern void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-#endif
-
-#ifndef GL_EXT_clip_volume_hint
-#define GL_EXT_clip_volume_hint 1
-#endif
-
-#ifndef GL_SGIX_list_priority
-#define GL_SGIX_list_priority 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
-extern void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
-extern void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
-extern void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
-extern void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
-extern void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
-#endif
-
-#ifndef GL_SGIX_ir_instrument1
-#define GL_SGIX_ir_instrument1 1
-#endif
-
-#ifndef GL_SGIX_calligraphic_fragment
-#define GL_SGIX_calligraphic_fragment 1
-#endif
-
-#ifndef GL_SGIX_texture_lod_bias
-#define GL_SGIX_texture_lod_bias 1
-#endif
-
-#ifndef GL_SGIX_shadow_ambient
-#define GL_SGIX_shadow_ambient 1
-#endif
-
-#ifndef GL_EXT_index_texture
-#define GL_EXT_index_texture 1
-#endif
-
-#ifndef GL_EXT_index_material
-#define GL_EXT_index_material 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
-#endif
-
-#ifndef GL_EXT_index_func
-#define GL_EXT_index_func 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
-#endif
-
-#ifndef GL_EXT_index_array_formats
-#define GL_EXT_index_array_formats 1
-#endif
-
-#ifndef GL_EXT_compiled_vertex_array
-#define GL_EXT_compiled_vertex_array 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glLockArraysEXT (GLint, GLsizei);
-extern void APIENTRY glUnlockArraysEXT (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
-typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);
-#endif
-
-#ifndef GL_EXT_cull_vertex
-#define GL_EXT_cull_vertex 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
-extern void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
-typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
-#endif
-
-#ifndef GL_SGIX_ycrcb
-#define GL_SGIX_ycrcb 1
-#endif
-
-#ifndef GL_SGIX_fragment_lighting
-#define GL_SGIX_fragment_lighting 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
-extern void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
-extern void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
-extern void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
-extern void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
-extern void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
-extern void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
-extern void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
-extern void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
-extern void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
-extern void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
-extern void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
-extern void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
-extern void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
-extern void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
-extern void APIENTRY glLightEnviSGIX (GLenum, GLint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
-#endif
-
-#ifndef GL_IBM_rasterpos_clip
-#define GL_IBM_rasterpos_clip 1
-#endif
-
-#ifndef GL_HP_texture_lighting
-#define GL_HP_texture_lighting 1
-#endif
-
-#ifndef GL_EXT_draw_range_elements
-#define GL_EXT_draw_range_elements 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-#endif
-
-#ifndef GL_WIN_phong_shading
-#define GL_WIN_phong_shading 1
-#endif
-
-#ifndef GL_WIN_specular_fog
-#define GL_WIN_specular_fog 1
-#endif
-
-#ifndef GL_EXT_light_texture
-#define GL_EXT_light_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glApplyTextureEXT (GLenum);
-extern void APIENTRY glTextureLightEXT (GLenum);
-extern void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
-typedef void (APIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
-typedef void (APIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
-#endif
-
-#ifndef GL_SGIX_blend_alpha_minmax
-#define GL_SGIX_blend_alpha_minmax 1
-#endif
-
-#ifndef GL_EXT_bgra
-#define GL_EXT_bgra 1
-#endif
-
-#ifndef GL_SGIX_async
-#define GL_SGIX_async 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glAsyncMarkerSGIX (GLuint);
-extern GLint APIENTRY glFinishAsyncSGIX (GLuint *);
-extern GLint APIENTRY glPollAsyncSGIX (GLuint *);
-extern GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
-extern void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
-extern GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
-typedef GLint (APIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
-typedef GLint (APIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
-typedef GLuint (APIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
-typedef void (APIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
-typedef GLboolean (APIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
-#endif
-
-#ifndef GL_SGIX_async_pixel
-#define GL_SGIX_async_pixel 1
-#endif
-
-#ifndef GL_SGIX_async_histogram
-#define GL_SGIX_async_histogram 1
-#endif
-
-#ifndef GL_INTEL_parallel_arrays
-#define GL_INTEL_parallel_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
-extern void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
-extern void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
-extern void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
-typedef void (APIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
-typedef void (APIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
-typedef void (APIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
-#endif
-
-#ifndef GL_HP_occlusion_test
-#define GL_HP_occlusion_test 1
-#endif
-
-#ifndef GL_EXT_pixel_transform
-#define GL_EXT_pixel_transform 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
-extern void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
-extern void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
-extern void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-#endif
-
-#ifndef GL_EXT_pixel_transform_color_table
-#define GL_EXT_pixel_transform_color_table 1
-#endif
-
-#ifndef GL_EXT_shared_texture_palette
-#define GL_EXT_shared_texture_palette 1
-#endif
-
-#ifndef GL_EXT_separate_specular_color
-#define GL_EXT_separate_specular_color 1
-#endif
-
-#ifndef GL_EXT_secondary_color
-#define GL_EXT_secondary_color 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
-extern void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
-extern void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
-extern void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
-extern void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
-extern void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
-extern void APIENTRY glSecondaryColor3ivEXT (const GLint *);
-extern void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
-extern void APIENTRY glSecondaryColor3svEXT (const GLshort *);
-extern void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
-extern void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
-extern void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
-extern void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
-extern void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
-extern void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
-extern void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
-typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
-typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer);
-#endif
-
-#ifndef GL_EXT_texture_perturb_normal
-#define GL_EXT_texture_perturb_normal 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTextureNormalEXT (GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
-#endif
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
-extern void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
-typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-#endif
-
-#ifndef GL_EXT_fog_coord
-#define GL_EXT_fog_coord 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glFogCoordfEXT (GLfloat);
-extern void APIENTRY glFogCoordfvEXT (const GLfloat *);
-extern void APIENTRY glFogCoorddEXT (GLdouble);
-extern void APIENTRY glFogCoorddvEXT (const GLdouble *);
-extern void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
-typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
-typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
-typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
-typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
-#endif
-
-#ifndef GL_REND_screen_coordinates
-#define GL_REND_screen_coordinates 1
-#endif
-
-#ifndef GL_EXT_coordinate_frame
-#define GL_EXT_coordinate_frame 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
-extern void APIENTRY glTangent3bvEXT (const GLbyte *);
-extern void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
-extern void APIENTRY glTangent3dvEXT (const GLdouble *);
-extern void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTangent3fvEXT (const GLfloat *);
-extern void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
-extern void APIENTRY glTangent3ivEXT (const GLint *);
-extern void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
-extern void APIENTRY glTangent3svEXT (const GLshort *);
-extern void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
-extern void APIENTRY glBinormal3bvEXT (const GLbyte *);
-extern void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
-extern void APIENTRY glBinormal3dvEXT (const GLdouble *);
-extern void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glBinormal3fvEXT (const GLfloat *);
-extern void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
-extern void APIENTRY glBinormal3ivEXT (const GLint *);
-extern void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
-extern void APIENTRY glBinormal3svEXT (const GLshort *);
-extern void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
-extern void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
-typedef void (APIENTRY * PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRY * PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
-typedef void (APIENTRY * PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRY * PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
-typedef void (APIENTRY * PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRY * PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
-typedef void (APIENTRY * PFNGLTANGENT3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRY * PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
-typedef void (APIENTRY * PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRY * PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
-typedef void (APIENTRY * PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRY * PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
-typedef void (APIENTRY * PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRY * PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
-typedef void (APIENTRY * PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRY * PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
-typedef void (APIENTRY * PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRY * PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
-typedef void (APIENTRY * PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
-typedef void (APIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
-#endif
-
-#ifndef GL_EXT_texture_env_combine
-#define GL_EXT_texture_env_combine 1
-#endif
-
-#ifndef GL_APPLE_specular_vector
-#define GL_APPLE_specular_vector 1
-#endif
-
-#ifndef GL_APPLE_transform_hint
-#define GL_APPLE_transform_hint 1
-#endif
-
-#ifndef GL_SGIX_fog_scale
-#define GL_SGIX_fog_scale 1
-#endif
-
-#ifndef GL_SUNX_constant_data
-#define GL_SUNX_constant_data 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glFinishTextureSUNX (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void);
-#endif
-
-#ifndef GL_SUN_global_alpha
-#define GL_SUN_global_alpha 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
-extern void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
-extern void APIENTRY glGlobalAlphaFactoriSUN (GLint);
-extern void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
-extern void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
-extern void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
-extern void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
-extern void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
-typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
-#endif
-
-#ifndef GL_SUN_triangle_list
-#define GL_SUN_triangle_list 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glReplacementCodeuiSUN (GLuint);
-extern void APIENTRY glReplacementCodeusSUN (GLushort);
-extern void APIENTRY glReplacementCodeubSUN (GLubyte);
-extern void APIENTRY glReplacementCodeuivSUN (const GLuint *);
-extern void APIENTRY glReplacementCodeusvSUN (const GLushort *);
-extern void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
-extern void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);
-#endif
-
-#ifndef GL_SUN_vertex
-#define GL_SUN_vertex 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
-extern void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
-extern void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
-extern void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-extern void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-extern void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
-extern void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
-extern void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
-extern void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLenum *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLenum, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLenum *, const GLubyte *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *);
-extern void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLenum rc, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLenum rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLenum *rc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-#endif
-
-#ifndef GL_EXT_blend_func_separate
-#define GL_EXT_blend_func_separate 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#endif
-
-#ifndef GL_INGR_color_clamp
-#define GL_INGR_color_clamp 1
-#endif
-
-#ifndef GL_INGR_interlace_read
-#define GL_INGR_interlace_read 1
-#endif
-
-#ifndef GL_EXT_stencil_wrap
-#define GL_EXT_stencil_wrap 1
-#endif
-
-#ifndef GL_EXT_422_pixels
-#define GL_EXT_422_pixels 1
-#endif
-
-#ifndef GL_NV_texgen_reflection
-#define GL_NV_texgen_reflection 1
-#endif
-
-#ifndef GL_SUN_convolution_border_modes
-#define GL_SUN_convolution_border_modes 1
-#endif
-
-#ifndef GL_EXT_texture_env_add
-#define GL_EXT_texture_env_add 1
-#endif
-
-#ifndef GL_EXT_texture_lod_bias
-#define GL_EXT_texture_lod_bias 1
-#endif
-
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#endif
-
-#ifndef GL_EXT_vertex_weighting
-#define GL_EXT_vertex_weighting 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glVertexWeightfEXT (GLfloat);
-extern void APIENTRY glVertexWeightfvEXT (const GLfloat *);
-extern void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
-typedef void (APIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
-typedef void (APIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
-#endif
-
-#ifndef GL_NV_light_max_exponent
-#define GL_NV_light_max_exponent 1
-#endif
-
-#ifndef GL_NV_vertex_array_range
-#define GL_NV_vertex_array_range 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glFlushVertexArrayRangeNV (void);
-extern void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
-typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei size, const GLvoid *pointer);
-#endif
-
-#ifndef GL_NV_register_combiners
-#define GL_NV_register_combiners 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
-extern void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
-extern void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
-extern void APIENTRY glCombinerParameteriNV (GLenum, GLint);
-extern void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
-extern void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
-extern void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
-extern void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
-extern void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
-extern void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
-extern void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
-typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
-#endif
-
-#ifndef GL_NV_fog_distance
-#define GL_NV_fog_distance 1
-#endif
-
-#ifndef GL_NV_texgen_emboss
-#define GL_NV_texgen_emboss 1
-#endif
-
-#ifndef GL_NV_blend_square
-#define GL_NV_blend_square 1
-#endif
-
-#ifndef GL_NV_texture_env_combine4
-#define GL_NV_texture_env_combine4 1
-#endif
-
-#ifndef GL_MESA_resize_buffers
-#define GL_MESA_resize_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glResizeBuffersMESA (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void);
-#endif
-
-#ifndef GL_MESA_window_pos
-#define GL_MESA_window_pos 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
-extern void APIENTRY glWindowPos2dvMESA (const GLdouble *);
-extern void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
-extern void APIENTRY glWindowPos2fvMESA (const GLfloat *);
-extern void APIENTRY glWindowPos2iMESA (GLint, GLint);
-extern void APIENTRY glWindowPos2ivMESA (const GLint *);
-extern void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
-extern void APIENTRY glWindowPos2svMESA (const GLshort *);
-extern void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
-extern void APIENTRY glWindowPos3dvMESA (const GLdouble *);
-extern void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glWindowPos3fvMESA (const GLfloat *);
-extern void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
-extern void APIENTRY glWindowPos3ivMESA (const GLint *);
-extern void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
-extern void APIENTRY glWindowPos3svMESA (const GLshort *);
-extern void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
-extern void APIENTRY glWindowPos4dvMESA (const GLdouble *);
-extern void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
-extern void APIENTRY glWindowPos4fvMESA (const GLfloat *);
-extern void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
-extern void APIENTRY glWindowPos4ivMESA (const GLint *);
-extern void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
-extern void APIENTRY glWindowPos4svMESA (const GLshort *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
-typedef void (APIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
-typedef void (APIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
-typedef void (APIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
-#endif
-
-#ifndef GL_IBM_cull_vertex
-#define GL_IBM_cull_vertex 1
-#endif
-
-#ifndef GL_IBM_multimode_draw_arrays
-#define GL_IBM_multimode_draw_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glMultiModeDrawArraysIBM (GLenum, const GLint *, const GLsizei *, GLsizei, GLint);
-extern void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* *, GLsizei, GLint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-typedef void (APIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, GLint modestride);
-#endif
-
-#ifndef GL_IBM_vertex_array_lists
-#define GL_IBM_vertex_array_lists 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-extern void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-extern void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
-extern void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-extern void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-extern void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-extern void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-extern void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-typedef void (APIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);
-typedef void (APIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-typedef void (APIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-typedef void (APIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-typedef void (APIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-typedef void (APIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
-#endif
-
-#ifndef GL_SGIX_subsample
-#define GL_SGIX_subsample 1
-#endif
-
-#ifndef GL_SGIX_ycrcba
-#define GL_SGIX_ycrcba 1
-#endif
-
-#ifndef GL_SGIX_ycrcb_subsample
-#define GL_SGIX_ycrcb_subsample 1
-#endif
-
-#ifndef GL_SGIX_depth_pass_instrument
-#define GL_SGIX_depth_pass_instrument 1
-#endif
-
-#ifndef GL_3DFX_texture_compression_FXT1
-#define GL_3DFX_texture_compression_FXT1 1
-#endif
-
-#ifndef GL_3DFX_multisample
-#define GL_3DFX_multisample 1
-#endif
-
-#ifndef GL_3DFX_tbuffer
-#define GL_3DFX_tbuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTbufferMask3DFX (GLuint);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
-#endif
-
-#ifndef GL_EXT_multisample
-#define GL_EXT_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
-extern void APIENTRY glSamplePatternEXT (GLenum);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
-#endif
-
-#ifndef GL_SGI_vertex_preclip
-#define GL_SGI_vertex_preclip 1
-#endif
-
-#ifndef GL_SGIX_convolution_accuracy
-#define GL_SGIX_convolution_accuracy 1
-#endif
-
-#ifndef GL_SGIX_resample
-#define GL_SGIX_resample 1
-#endif
-
-#ifndef GL_SGIS_point_line_texgen
-#define GL_SGIS_point_line_texgen 1
-#endif
-
-#ifndef GL_SGIS_texture_color_mask
-#define GL_SGIS_texture_color_mask 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-#endif
-
-#ifndef GL_SGIX_igloo_interface
-#define GL_SGIX_igloo_interface 1
-#ifdef GL_GLEXT_PROTOTYPES
-extern void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
-#endif
-
-#ifndef GL_EXT_texture_env_dot3
-#define GL_EXT_texture_env_dot3 1
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+#ifndef __glext_h_\r
+#define __glext_h_\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/*\r
+** License Applicability. Except to the extent portions of this file are\r
+** made subject to an alternative license as permitted in the SGI Free\r
+** Software License B, Version 1.1 (the "License"), the contents of this\r
+** file are subject only to the provisions of the License. You may not use\r
+** this file except in compliance with the License. You may obtain a copy\r
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\r
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\r
+**\r
+** http://oss.sgi.com/projects/FreeB\r
+**\r
+** Note that, as provided in the License, the Software is distributed on an\r
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\r
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\r
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\r
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\r
+**\r
+** Original Code. The Original Code is: OpenGL Sample Implementation,\r
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\r
+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\r
+** Copyright in any portions created by third parties is as indicated\r
+** elsewhere herein. All Rights Reserved.\r
+**\r
+** Additional Notice Provisions: This software was created using the\r
+** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has\r
+** not been independently verified as being compliant with the OpenGL(R)\r
+** version 1.2.1 Specification.\r
+*/\r
+\r
+#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)\r
+#define WIN32_LEAN_AND_MEAN 1\r
+#include <windows.h>\r
+#endif\r
+\r
+#ifndef APIENTRY\r
+#define APIENTRY\r
+#endif\r
+\r
+/*************************************************************/\r
+\r
+/* Header file version number, required by OpenGL ABI for Linux */\r
+#define GL_GLEXT_VERSION 7\r
+\r
+#ifndef GL_VERSION_1_2\r
+#define GL_CONSTANT_COLOR 0x8001\r
+#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002\r
+#define GL_CONSTANT_ALPHA 0x8003\r
+#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004\r
+#define GL_BLEND_COLOR 0x8005\r
+#define GL_FUNC_ADD 0x8006\r
+#define GL_MIN 0x8007\r
+#define GL_MAX 0x8008\r
+#define GL_BLEND_EQUATION 0x8009\r
+#define GL_FUNC_SUBTRACT 0x800A\r
+#define GL_FUNC_REVERSE_SUBTRACT 0x800B\r
+#define GL_CONVOLUTION_1D 0x8010\r
+#define GL_CONVOLUTION_2D 0x8011\r
+#define GL_SEPARABLE_2D 0x8012\r
+#define GL_CONVOLUTION_BORDER_MODE 0x8013\r
+#define GL_CONVOLUTION_FILTER_SCALE 0x8014\r
+#define GL_CONVOLUTION_FILTER_BIAS 0x8015\r
+#define GL_REDUCE 0x8016\r
+#define GL_CONVOLUTION_FORMAT 0x8017\r
+#define GL_CONVOLUTION_WIDTH 0x8018\r
+#define GL_CONVOLUTION_HEIGHT 0x8019\r
+#define GL_MAX_CONVOLUTION_WIDTH 0x801A\r
+#define GL_MAX_CONVOLUTION_HEIGHT 0x801B\r
+#define GL_POST_CONVOLUTION_RED_SCALE 0x801C\r
+#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D\r
+#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E\r
+#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F\r
+#define GL_POST_CONVOLUTION_RED_BIAS 0x8020\r
+#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021\r
+#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022\r
+#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023\r
+#define GL_HISTOGRAM 0x8024\r
+#define GL_PROXY_HISTOGRAM 0x8025\r
+#define GL_HISTOGRAM_WIDTH 0x8026\r
+#define GL_HISTOGRAM_FORMAT 0x8027\r
+#define GL_HISTOGRAM_RED_SIZE 0x8028\r
+#define GL_HISTOGRAM_GREEN_SIZE 0x8029\r
+#define GL_HISTOGRAM_BLUE_SIZE 0x802A\r
+#define GL_HISTOGRAM_ALPHA_SIZE 0x802B\r
+#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C\r
+#define GL_HISTOGRAM_SINK 0x802D\r
+#define GL_MINMAX 0x802E\r
+#define GL_MINMAX_FORMAT 0x802F\r
+#define GL_MINMAX_SINK 0x8030\r
+#define GL_TABLE_TOO_LARGE 0x8031\r
+#define GL_UNSIGNED_BYTE_3_3_2 0x8032\r
+#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033\r
+#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034\r
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035\r
+#define GL_UNSIGNED_INT_10_10_10_2 0x8036\r
+#define GL_RESCALE_NORMAL 0x803A\r
+#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362\r
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363\r
+#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364\r
+#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365\r
+#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366\r
+#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367\r
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368\r
+#define GL_COLOR_MATRIX 0x80B1\r
+#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2\r
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3\r
+#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4\r
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5\r
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6\r
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7\r
+#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8\r
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9\r
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA\r
+#define GL_COLOR_TABLE 0x80D0\r
+#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1\r
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2\r
+#define GL_PROXY_COLOR_TABLE 0x80D3\r
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4\r
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5\r
+#define GL_COLOR_TABLE_SCALE 0x80D6\r
+#define GL_COLOR_TABLE_BIAS 0x80D7\r
+#define GL_COLOR_TABLE_FORMAT 0x80D8\r
+#define GL_COLOR_TABLE_WIDTH 0x80D9\r
+#define GL_COLOR_TABLE_RED_SIZE 0x80DA\r
+#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB\r
+#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC\r
+#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD\r
+#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE\r
+#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF\r
+#define GL_CLAMP_TO_EDGE 0x812F\r
+#define GL_TEXTURE_MIN_LOD 0x813A\r
+#define GL_TEXTURE_MAX_LOD 0x813B\r
+#define GL_TEXTURE_BASE_LEVEL 0x813C\r
+#define GL_TEXTURE_MAX_LEVEL 0x813D\r
+#endif\r
+\r
+#ifndef GL_ARB_multitexture\r
+#define GL_TEXTURE0_ARB 0x84C0\r
+#define GL_TEXTURE1_ARB 0x84C1\r
+#define GL_TEXTURE2_ARB 0x84C2\r
+#define GL_TEXTURE3_ARB 0x84C3\r
+#define GL_TEXTURE4_ARB 0x84C4\r
+#define GL_TEXTURE5_ARB 0x84C5\r
+#define GL_TEXTURE6_ARB 0x84C6\r
+#define GL_TEXTURE7_ARB 0x84C7\r
+#define GL_TEXTURE8_ARB 0x84C8\r
+#define GL_TEXTURE9_ARB 0x84C9\r
+#define GL_TEXTURE10_ARB 0x84CA\r
+#define GL_TEXTURE11_ARB 0x84CB\r
+#define GL_TEXTURE12_ARB 0x84CC\r
+#define GL_TEXTURE13_ARB 0x84CD\r
+#define GL_TEXTURE14_ARB 0x84CE\r
+#define GL_TEXTURE15_ARB 0x84CF\r
+#define GL_TEXTURE16_ARB 0x84D0\r
+#define GL_TEXTURE17_ARB 0x84D1\r
+#define GL_TEXTURE18_ARB 0x84D2\r
+#define GL_TEXTURE19_ARB 0x84D3\r
+#define GL_TEXTURE20_ARB 0x84D4\r
+#define GL_TEXTURE21_ARB 0x84D5\r
+#define GL_TEXTURE22_ARB 0x84D6\r
+#define GL_TEXTURE23_ARB 0x84D7\r
+#define GL_TEXTURE24_ARB 0x84D8\r
+#define GL_TEXTURE25_ARB 0x84D9\r
+#define GL_TEXTURE26_ARB 0x84DA\r
+#define GL_TEXTURE27_ARB 0x84DB\r
+#define GL_TEXTURE28_ARB 0x84DC\r
+#define GL_TEXTURE29_ARB 0x84DD\r
+#define GL_TEXTURE30_ARB 0x84DE\r
+#define GL_TEXTURE31_ARB 0x84DF\r
+#define GL_ACTIVE_TEXTURE_ARB 0x84E0\r
+#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1\r
+#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2\r
+#endif\r
+\r
+#ifndef GL_ARB_transpose_matrix\r
+#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3\r
+#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4\r
+#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5\r
+#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6\r
+#endif\r
+\r
+#ifndef GL_ARB_multisample\r
+#define GL_MULTISAMPLE_ARB 0x809D\r
+#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E\r
+#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F\r
+#define GL_SAMPLE_COVERAGE_ARB 0x80A0\r
+#define GL_SAMPLE_BUFFERS_ARB 0x80A8\r
+#define GL_SAMPLES_ARB 0x80A9\r
+#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA\r
+#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB\r
+#define GL_MULTISAMPLE_BIT_ARB 0x20000000\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_cube_map\r
+#define GL_NORMAL_MAP_ARB 0x8511\r
+#define GL_REFLECTION_MAP_ARB 0x8512\r
+#define GL_TEXTURE_CUBE_MAP_ARB 0x8513\r
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514\r
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515\r
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516\r
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517\r
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518\r
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519\r
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A\r
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B\r
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_compression\r
+#define GL_COMPRESSED_ALPHA_ARB 0x84E9\r
+#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA\r
+#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB\r
+#define GL_COMPRESSED_INTENSITY_ARB 0x84EC\r
+#define GL_COMPRESSED_RGB_ARB 0x84ED\r
+#define GL_COMPRESSED_RGBA_ARB 0x84EE\r
+#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF\r
+#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0\r
+#define GL_TEXTURE_COMPRESSED_ARB 0x86A1\r
+#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2\r
+#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3\r
+#endif\r
+\r
+#ifndef GL_ARB_vertex_blend\r
+#define GL_MAX_VERTEX_UNITS_ARB 0x86A4\r
+#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5\r
+#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6\r
+#define GL_VERTEX_BLEND_ARB 0x86A7\r
+#define GL_CURRENT_WEIGHT_ARB 0x86A8\r
+#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9\r
+#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA\r
+#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB\r
+#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC\r
+#define GL_WEIGHT_ARRAY_ARB 0x86AD\r
+#define GL_MODELVIEW0_ARB 0x1700\r
+#define GL_MODELVIEW1_ARB 0x850A\r
+#define GL_MODELVIEW2_ARB 0x8722\r
+#define GL_MODELVIEW3_ARB 0x8723\r
+#define GL_MODELVIEW4_ARB 0x8724\r
+#define GL_MODELVIEW5_ARB 0x8725\r
+#define GL_MODELVIEW6_ARB 0x8726\r
+#define GL_MODELVIEW7_ARB 0x8727\r
+#define GL_MODELVIEW8_ARB 0x8728\r
+#define GL_MODELVIEW9_ARB 0x8729\r
+#define GL_MODELVIEW10_ARB 0x872A\r
+#define GL_MODELVIEW11_ARB 0x872B\r
+#define GL_MODELVIEW12_ARB 0x872C\r
+#define GL_MODELVIEW13_ARB 0x872D\r
+#define GL_MODELVIEW14_ARB 0x872E\r
+#define GL_MODELVIEW15_ARB 0x872F\r
+#define GL_MODELVIEW16_ARB 0x8730\r
+#define GL_MODELVIEW17_ARB 0x8731\r
+#define GL_MODELVIEW18_ARB 0x8732\r
+#define GL_MODELVIEW19_ARB 0x8733\r
+#define GL_MODELVIEW20_ARB 0x8734\r
+#define GL_MODELVIEW21_ARB 0x8735\r
+#define GL_MODELVIEW22_ARB 0x8736\r
+#define GL_MODELVIEW23_ARB 0x8737\r
+#define GL_MODELVIEW24_ARB 0x8738\r
+#define GL_MODELVIEW25_ARB 0x8739\r
+#define GL_MODELVIEW26_ARB 0x873A\r
+#define GL_MODELVIEW27_ARB 0x873B\r
+#define GL_MODELVIEW28_ARB 0x873C\r
+#define GL_MODELVIEW29_ARB 0x873D\r
+#define GL_MODELVIEW30_ARB 0x873E\r
+#define GL_MODELVIEW31_ARB 0x873F\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_env_combine\r
+#define GL_COMBINE_ARB 0x8570\r
+#define GL_COMBINE_RGB_ARB 0x8571\r
+#define GL_COMBINE_ALPHA_ARB 0x8572\r
+#define GL_SOURCE0_RGB_ARB 0x8580\r
+#define GL_SOURCE1_RGB_ARB 0x8581\r
+#define GL_SOURCE2_RGB_ARB 0x8582\r
+#define GL_SOURCE0_ALPHA_ARB 0x8588\r
+#define GL_SOURCE1_ALPHA_ARB 0x8589\r
+#define GL_SOURCE2_ALPHA_ARB 0x858A\r
+#define GL_OPERAND0_RGB_ARB 0x8590\r
+#define GL_OPERAND1_RGB_ARB 0x8591\r
+#define GL_OPERAND2_RGB_ARB 0x8592\r
+#define GL_OPERAND0_ALPHA_ARB 0x8598\r
+#define GL_OPERAND1_ALPHA_ARB 0x8599\r
+#define GL_OPERAND2_ALPHA_ARB 0x859A\r
+#define GL_RGB_SCALE_ARB 0x8573\r
+#define GL_ADD_SIGNED_ARB 0x8574\r
+#define GL_INTERPOLATE_ARB 0x8575\r
+#define GL_SUBTRACT_ARB 0x84E7\r
+#define GL_CONSTANT_ARB 0x8576\r
+#define GL_PRIMARY_COLOR_ARB 0x8577\r
+#define GL_PREVIOUS_ARB 0x8578\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_env_dot3\r
+#define GL_DOT3_RGB_ARB 0x86AE\r
+#define GL_DOT3_RGBA_ARB 0x86AF\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_border_clamp\r
+#define GL_CLAMP_TO_BORDER_ARB 0x812D\r
+#endif\r
+\r
+#ifndef GL_EXT_abgr\r
+#define GL_ABGR_EXT 0x8000\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_color\r
+#define GL_CONSTANT_COLOR_EXT 0x8001\r
+#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002\r
+#define GL_CONSTANT_ALPHA_EXT 0x8003\r
+#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004\r
+#define GL_BLEND_COLOR_EXT 0x8005\r
+#endif\r
+\r
+#ifndef GL_EXT_polygon_offset\r
+#define GL_POLYGON_OFFSET_EXT 0x8037\r
+#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038\r
+#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039\r
+#endif\r
+\r
+#ifndef GL_EXT_texture\r
+#define GL_ALPHA4_EXT 0x803B\r
+#define GL_ALPHA8_EXT 0x803C\r
+#define GL_ALPHA12_EXT 0x803D\r
+#define GL_ALPHA16_EXT 0x803E\r
+#define GL_LUMINANCE4_EXT 0x803F\r
+#define GL_LUMINANCE8_EXT 0x8040\r
+#define GL_LUMINANCE12_EXT 0x8041\r
+#define GL_LUMINANCE16_EXT 0x8042\r
+#define GL_LUMINANCE4_ALPHA4_EXT 0x8043\r
+#define GL_LUMINANCE6_ALPHA2_EXT 0x8044\r
+#define GL_LUMINANCE8_ALPHA8_EXT 0x8045\r
+#define GL_LUMINANCE12_ALPHA4_EXT 0x8046\r
+#define GL_LUMINANCE12_ALPHA12_EXT 0x8047\r
+#define GL_LUMINANCE16_ALPHA16_EXT 0x8048\r
+#define GL_INTENSITY_EXT 0x8049\r
+#define GL_INTENSITY4_EXT 0x804A\r
+#define GL_INTENSITY8_EXT 0x804B\r
+#define GL_INTENSITY12_EXT 0x804C\r
+#define GL_INTENSITY16_EXT 0x804D\r
+#define GL_RGB2_EXT 0x804E\r
+#define GL_RGB4_EXT 0x804F\r
+#define GL_RGB5_EXT 0x8050\r
+#define GL_RGB8_EXT 0x8051\r
+#define GL_RGB10_EXT 0x8052\r
+#define GL_RGB12_EXT 0x8053\r
+#define GL_RGB16_EXT 0x8054\r
+#define GL_RGBA2_EXT 0x8055\r
+#define GL_RGBA4_EXT 0x8056\r
+#define GL_RGB5_A1_EXT 0x8057\r
+#define GL_RGBA8_EXT 0x8058\r
+#define GL_RGB10_A2_EXT 0x8059\r
+#define GL_RGBA12_EXT 0x805A\r
+#define GL_RGBA16_EXT 0x805B\r
+#define GL_TEXTURE_RED_SIZE_EXT 0x805C\r
+#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D\r
+#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E\r
+#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F\r
+#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060\r
+#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061\r
+#define GL_REPLACE_EXT 0x8062\r
+#define GL_PROXY_TEXTURE_1D_EXT 0x8063\r
+#define GL_PROXY_TEXTURE_2D_EXT 0x8064\r
+#define GL_TEXTURE_TOO_LARGE_EXT 0x8065\r
+#endif\r
+\r
+#ifndef GL_EXT_texture3D\r
+#define GL_PACK_SKIP_IMAGES 0x806B\r
+#define GL_PACK_SKIP_IMAGES_EXT 0x806B\r
+#define GL_PACK_IMAGE_HEIGHT 0x806C\r
+#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C\r
+#define GL_UNPACK_SKIP_IMAGES 0x806D\r
+#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D\r
+#define GL_UNPACK_IMAGE_HEIGHT 0x806E\r
+#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E\r
+#define GL_TEXTURE_3D 0x806F\r
+#define GL_TEXTURE_3D_EXT 0x806F\r
+#define GL_PROXY_TEXTURE_3D 0x8070\r
+#define GL_PROXY_TEXTURE_3D_EXT 0x8070\r
+#define GL_TEXTURE_DEPTH 0x8071\r
+#define GL_TEXTURE_DEPTH_EXT 0x8071\r
+#define GL_TEXTURE_WRAP_R 0x8072\r
+#define GL_TEXTURE_WRAP_R_EXT 0x8072\r
+#define GL_MAX_3D_TEXTURE_SIZE 0x8073\r
+#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_filter4\r
+#define GL_FILTER4_SGIS 0x8146\r
+#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147\r
+#endif\r
+\r
+#ifndef GL_EXT_subtexture\r
+#endif\r
+\r
+#ifndef GL_EXT_copy_texture\r
+#endif\r
+\r
+#ifndef GL_EXT_histogram\r
+#define GL_HISTOGRAM_EXT 0x8024\r
+#define GL_PROXY_HISTOGRAM_EXT 0x8025\r
+#define GL_HISTOGRAM_WIDTH_EXT 0x8026\r
+#define GL_HISTOGRAM_FORMAT_EXT 0x8027\r
+#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028\r
+#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029\r
+#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A\r
+#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B\r
+#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C\r
+#define GL_HISTOGRAM_SINK_EXT 0x802D\r
+#define GL_MINMAX_EXT 0x802E\r
+#define GL_MINMAX_FORMAT_EXT 0x802F\r
+#define GL_MINMAX_SINK_EXT 0x8030\r
+#define GL_TABLE_TOO_LARGE_EXT 0x8031\r
+#endif\r
+\r
+#ifndef GL_EXT_convolution\r
+#define GL_CONVOLUTION_1D_EXT 0x8010\r
+#define GL_CONVOLUTION_2D_EXT 0x8011\r
+#define GL_SEPARABLE_2D_EXT 0x8012\r
+#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013\r
+#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014\r
+#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015\r
+#define GL_REDUCE_EXT 0x8016\r
+#define GL_CONVOLUTION_FORMAT_EXT 0x8017\r
+#define GL_CONVOLUTION_WIDTH_EXT 0x8018\r
+#define GL_CONVOLUTION_HEIGHT_EXT 0x8019\r
+#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A\r
+#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B\r
+#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C\r
+#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D\r
+#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E\r
+#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F\r
+#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020\r
+#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021\r
+#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022\r
+#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023\r
+#endif\r
+\r
+#ifndef GL_SGI_color_matrix\r
+#define GL_COLOR_MATRIX_SGI 0x80B1\r
+#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2\r
+#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3\r
+#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4\r
+#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5\r
+#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6\r
+#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7\r
+#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8\r
+#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9\r
+#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA\r
+#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB\r
+#endif\r
+\r
+#ifndef GL_SGI_color_table\r
+#define GL_COLOR_TABLE_SGI 0x80D0\r
+#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1\r
+#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2\r
+#define GL_PROXY_COLOR_TABLE_SGI 0x80D3\r
+#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4\r
+#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5\r
+#define GL_COLOR_TABLE_SCALE_SGI 0x80D6\r
+#define GL_COLOR_TABLE_BIAS_SGI 0x80D7\r
+#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8\r
+#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9\r
+#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA\r
+#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB\r
+#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC\r
+#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD\r
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE\r
+#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF\r
+#endif\r
+\r
+#ifndef GL_SGIS_pixel_texture\r
+#define GL_PIXEL_TEXTURE_SGIS 0x8353\r
+#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354\r
+#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355\r
+#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356\r
+#endif\r
+\r
+#ifndef GL_SGIX_pixel_texture\r
+#define GL_PIXEL_TEX_GEN_SGIX 0x8139\r
+#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture4D\r
+#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130\r
+#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131\r
+#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132\r
+#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133\r
+#define GL_TEXTURE_4D_SGIS 0x8134\r
+#define GL_PROXY_TEXTURE_4D_SGIS 0x8135\r
+#define GL_TEXTURE_4DSIZE_SGIS 0x8136\r
+#define GL_TEXTURE_WRAP_Q_SGIS 0x8137\r
+#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138\r
+#define GL_TEXTURE_4D_BINDING_SGIS 0x814F\r
+#endif\r
+\r
+#ifndef GL_SGI_texture_color_table\r
+#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC\r
+#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD\r
+#endif\r
+\r
+#ifndef GL_EXT_cmyka\r
+#define GL_CMYK_EXT 0x800C\r
+#define GL_CMYKA_EXT 0x800D\r
+#define GL_PACK_CMYK_HINT_EXT 0x800E\r
+#define GL_UNPACK_CMYK_HINT_EXT 0x800F\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_object\r
+#define GL_TEXTURE_PRIORITY_EXT 0x8066\r
+#define GL_TEXTURE_RESIDENT_EXT 0x8067\r
+#define GL_TEXTURE_1D_BINDING_EXT 0x8068\r
+#define GL_TEXTURE_2D_BINDING_EXT 0x8069\r
+#define GL_TEXTURE_3D_BINDING_EXT 0x806A\r
+#endif\r
+\r
+#ifndef GL_SGIS_detail_texture\r
+#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095\r
+#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096\r
+#define GL_LINEAR_DETAIL_SGIS 0x8097\r
+#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098\r
+#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099\r
+#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A\r
+#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B\r
+#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C\r
+#endif\r
+\r
+#ifndef GL_SGIS_sharpen_texture\r
+#define GL_LINEAR_SHARPEN_SGIS 0x80AD\r
+#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE\r
+#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF\r
+#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0\r
+#endif\r
+\r
+#ifndef GL_EXT_packed_pixels\r
+#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032\r
+#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033\r
+#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034\r
+#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035\r
+#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_lod\r
+#define GL_TEXTURE_MIN_LOD_SGIS 0x813A\r
+#define GL_TEXTURE_MAX_LOD_SGIS 0x813B\r
+#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C\r
+#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D\r
+#endif\r
+\r
+#ifndef GL_SGIS_multisample\r
+#define GL_MULTISAMPLE_SGIS 0x809D\r
+#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E\r
+#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F\r
+#define GL_SAMPLE_MASK_SGIS 0x80A0\r
+#define GL_1PASS_SGIS 0x80A1\r
+#define GL_2PASS_0_SGIS 0x80A2\r
+#define GL_2PASS_1_SGIS 0x80A3\r
+#define GL_4PASS_0_SGIS 0x80A4\r
+#define GL_4PASS_1_SGIS 0x80A5\r
+#define GL_4PASS_2_SGIS 0x80A6\r
+#define GL_4PASS_3_SGIS 0x80A7\r
+#define GL_SAMPLE_BUFFERS_SGIS 0x80A8\r
+#define GL_SAMPLES_SGIS 0x80A9\r
+#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA\r
+#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB\r
+#define GL_SAMPLE_PATTERN_SGIS 0x80AC\r
+#endif\r
+\r
+#ifndef GL_EXT_rescale_normal\r
+#define GL_RESCALE_NORMAL_EXT 0x803A\r
+#endif\r
+\r
+#ifndef GL_EXT_vertex_array\r
+#define GL_VERTEX_ARRAY_EXT 0x8074\r
+#define GL_NORMAL_ARRAY_EXT 0x8075\r
+#define GL_COLOR_ARRAY_EXT 0x8076\r
+#define GL_INDEX_ARRAY_EXT 0x8077\r
+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078\r
+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079\r
+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A\r
+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B\r
+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C\r
+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D\r
+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E\r
+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F\r
+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080\r
+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081\r
+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082\r
+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083\r
+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084\r
+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085\r
+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086\r
+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087\r
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088\r
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089\r
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A\r
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B\r
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C\r
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D\r
+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E\r
+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F\r
+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090\r
+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091\r
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092\r
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093\r
+#endif\r
+\r
+#ifndef GL_EXT_misc_attribute\r
+#endif\r
+\r
+#ifndef GL_SGIS_generate_mipmap\r
+#define GL_GENERATE_MIPMAP_SGIS 0x8191\r
+#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192\r
+#endif\r
+\r
+#ifndef GL_SGIX_clipmap\r
+#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170\r
+#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171\r
+#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172\r
+#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173\r
+#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174\r
+#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175\r
+#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176\r
+#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177\r
+#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178\r
+#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D\r
+#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E\r
+#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F\r
+#endif\r
+\r
+#ifndef GL_SGIX_shadow\r
+#define GL_TEXTURE_COMPARE_SGIX 0x819A\r
+#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B\r
+#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C\r
+#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_edge_clamp\r
+#define GL_CLAMP_TO_EDGE_SGIS 0x812F\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_border_clamp\r
+#define GL_CLAMP_TO_BORDER_SGIS 0x812D\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_minmax\r
+#define GL_FUNC_ADD_EXT 0x8006\r
+#define GL_MIN_EXT 0x8007\r
+#define GL_MAX_EXT 0x8008\r
+#define GL_BLEND_EQUATION_EXT 0x8009\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_subtract\r
+#define GL_FUNC_SUBTRACT_EXT 0x800A\r
+#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_logic_op\r
+#endif\r
+\r
+#ifndef GL_SGIX_interlace\r
+#define GL_INTERLACE_SGIX 0x8094\r
+#endif\r
+\r
+#ifndef GL_SGIX_pixel_tiles\r
+#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E\r
+#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F\r
+#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140\r
+#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141\r
+#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142\r
+#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143\r
+#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144\r
+#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_select\r
+#define GL_DUAL_ALPHA4_SGIS 0x8110\r
+#define GL_DUAL_ALPHA8_SGIS 0x8111\r
+#define GL_DUAL_ALPHA12_SGIS 0x8112\r
+#define GL_DUAL_ALPHA16_SGIS 0x8113\r
+#define GL_DUAL_LUMINANCE4_SGIS 0x8114\r
+#define GL_DUAL_LUMINANCE8_SGIS 0x8115\r
+#define GL_DUAL_LUMINANCE12_SGIS 0x8116\r
+#define GL_DUAL_LUMINANCE16_SGIS 0x8117\r
+#define GL_DUAL_INTENSITY4_SGIS 0x8118\r
+#define GL_DUAL_INTENSITY8_SGIS 0x8119\r
+#define GL_DUAL_INTENSITY12_SGIS 0x811A\r
+#define GL_DUAL_INTENSITY16_SGIS 0x811B\r
+#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C\r
+#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D\r
+#define GL_QUAD_ALPHA4_SGIS 0x811E\r
+#define GL_QUAD_ALPHA8_SGIS 0x811F\r
+#define GL_QUAD_LUMINANCE4_SGIS 0x8120\r
+#define GL_QUAD_LUMINANCE8_SGIS 0x8121\r
+#define GL_QUAD_INTENSITY4_SGIS 0x8122\r
+#define GL_QUAD_INTENSITY8_SGIS 0x8123\r
+#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124\r
+#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125\r
+#endif\r
+\r
+#ifndef GL_SGIX_sprite\r
+#define GL_SPRITE_SGIX 0x8148\r
+#define GL_SPRITE_MODE_SGIX 0x8149\r
+#define GL_SPRITE_AXIS_SGIX 0x814A\r
+#define GL_SPRITE_TRANSLATION_SGIX 0x814B\r
+#define GL_SPRITE_AXIAL_SGIX 0x814C\r
+#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D\r
+#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_multi_buffer\r
+#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E\r
+#endif\r
+\r
+#ifndef GL_SGIS_point_parameters\r
+#define GL_POINT_SIZE_MIN_EXT 0x8126\r
+#define GL_POINT_SIZE_MIN_SGIS 0x8126\r
+#define GL_POINT_SIZE_MAX_EXT 0x8127\r
+#define GL_POINT_SIZE_MAX_SGIS 0x8127\r
+#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128\r
+#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128\r
+#define GL_DISTANCE_ATTENUATION_EXT 0x8129\r
+#define GL_DISTANCE_ATTENUATION_SGIS 0x8129\r
+#endif\r
+\r
+#ifndef GL_SGIX_instruments\r
+#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180\r
+#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_scale_bias\r
+#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179\r
+#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A\r
+#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B\r
+#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C\r
+#endif\r
+\r
+#ifndef GL_SGIX_framezoom\r
+#define GL_FRAMEZOOM_SGIX 0x818B\r
+#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C\r
+#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D\r
+#endif\r
+\r
+#ifndef GL_SGIX_tag_sample_buffer\r
+#endif\r
+\r
+#ifndef GL_FfdMaskSGIX\r
+#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001\r
+#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002\r
+#endif\r
+\r
+#ifndef GL_SGIX_polynomial_ffd\r
+#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194\r
+#define GL_TEXTURE_DEFORMATION_SGIX 0x8195\r
+#define GL_DEFORMATIONS_MASK_SGIX 0x8196\r
+#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197\r
+#endif\r
+\r
+#ifndef GL_SGIX_reference_plane\r
+#define GL_REFERENCE_PLANE_SGIX 0x817D\r
+#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E\r
+#endif\r
+\r
+#ifndef GL_SGIX_flush_raster\r
+#endif\r
+\r
+#ifndef GL_SGIX_depth_texture\r
+#define GL_DEPTH_COMPONENT16_SGIX 0x81A5\r
+#define GL_DEPTH_COMPONENT24_SGIX 0x81A6\r
+#define GL_DEPTH_COMPONENT32_SGIX 0x81A7\r
+#endif\r
+\r
+#ifndef GL_SGIS_fog_function\r
+#define GL_FOG_FUNC_SGIS 0x812A\r
+#define GL_FOG_FUNC_POINTS_SGIS 0x812B\r
+#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C\r
+#endif\r
+\r
+#ifndef GL_SGIX_fog_offset\r
+#define GL_FOG_OFFSET_SGIX 0x8198\r
+#define GL_FOG_OFFSET_VALUE_SGIX 0x8199\r
+#endif\r
+\r
+#ifndef GL_HP_image_transform\r
+#define GL_IMAGE_SCALE_X_HP 0x8155\r
+#define GL_IMAGE_SCALE_Y_HP 0x8156\r
+#define GL_IMAGE_TRANSLATE_X_HP 0x8157\r
+#define GL_IMAGE_TRANSLATE_Y_HP 0x8158\r
+#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159\r
+#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A\r
+#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B\r
+#define GL_IMAGE_MAG_FILTER_HP 0x815C\r
+#define GL_IMAGE_MIN_FILTER_HP 0x815D\r
+#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E\r
+#define GL_CUBIC_HP 0x815F\r
+#define GL_AVERAGE_HP 0x8160\r
+#define GL_IMAGE_TRANSFORM_2D_HP 0x8161\r
+#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162\r
+#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163\r
+#endif\r
+\r
+#ifndef GL_HP_convolution_border_modes\r
+#define GL_IGNORE_BORDER_HP 0x8150\r
+#define GL_CONSTANT_BORDER_HP 0x8151\r
+#define GL_REPLICATE_BORDER_HP 0x8153\r
+#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154\r
+#endif\r
+\r
+#ifndef GL_INGR_palette_buffer\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_add_env\r
+#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE\r
+#endif\r
+\r
+#ifndef GL_EXT_color_subtable\r
+#endif\r
+\r
+#ifndef GL_PGI_vertex_hints\r
+#define GL_VERTEX_DATA_HINT_PGI 0x1A22A\r
+#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B\r
+#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C\r
+#define GL_MAX_VERTEX_HINT_PGI 0x1A22D\r
+#define GL_COLOR3_BIT_PGI 0x00010000\r
+#define GL_COLOR4_BIT_PGI 0x00020000\r
+#define GL_EDGEFLAG_BIT_PGI 0x00040000\r
+#define GL_INDEX_BIT_PGI 0x00080000\r
+#define GL_MAT_AMBIENT_BIT_PGI 0x00100000\r
+#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000\r
+#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000\r
+#define GL_MAT_EMISSION_BIT_PGI 0x00800000\r
+#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000\r
+#define GL_MAT_SHININESS_BIT_PGI 0x02000000\r
+#define GL_MAT_SPECULAR_BIT_PGI 0x04000000\r
+#define GL_NORMAL_BIT_PGI 0x08000000\r
+#define GL_TEXCOORD1_BIT_PGI 0x10000000\r
+#define GL_TEXCOORD2_BIT_PGI 0x20000000\r
+#define GL_TEXCOORD3_BIT_PGI 0x40000000\r
+#define GL_TEXCOORD4_BIT_PGI 0x80000000\r
+#define GL_VERTEX23_BIT_PGI 0x00000004\r
+#define GL_VERTEX4_BIT_PGI 0x00000008\r
+#endif\r
+\r
+#ifndef GL_PGI_misc_hints\r
+#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8\r
+#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD\r
+#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE\r
+#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202\r
+#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203\r
+#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204\r
+#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C\r
+#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D\r
+#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E\r
+#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F\r
+#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210\r
+#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211\r
+#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216\r
+#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217\r
+#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218\r
+#define GL_FULL_STIPPLE_HINT_PGI 0x1A219\r
+#define GL_CLIP_NEAR_HINT_PGI 0x1A220\r
+#define GL_CLIP_FAR_HINT_PGI 0x1A221\r
+#define GL_WIDE_LINE_HINT_PGI 0x1A222\r
+#define GL_BACK_NORMALS_HINT_PGI 0x1A223\r
+#endif\r
+\r
+#ifndef GL_EXT_paletted_texture\r
+#define GL_COLOR_INDEX1_EXT 0x80E2\r
+#define GL_COLOR_INDEX2_EXT 0x80E3\r
+#define GL_COLOR_INDEX4_EXT 0x80E4\r
+#define GL_COLOR_INDEX8_EXT 0x80E5\r
+#define GL_COLOR_INDEX12_EXT 0x80E6\r
+#define GL_COLOR_INDEX16_EXT 0x80E7\r
+#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8\r
+#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9\r
+#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA\r
+#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB\r
+#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC\r
+#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD\r
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE\r
+#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF\r
+#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED\r
+#endif\r
+\r
+#ifndef GL_EXT_clip_volume_hint\r
+#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0\r
+#endif\r
+\r
+#ifndef GL_SGIX_list_priority\r
+#define GL_LIST_PRIORITY_SGIX 0x8182\r
+#endif\r
+\r
+#ifndef GL_SGIX_ir_instrument1\r
+#define GL_IR_INSTRUMENT1_SGIX 0x817F\r
+#endif\r
+\r
+#ifndef GL_SGIX_calligraphic_fragment\r
+#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_lod_bias\r
+#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E\r
+#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F\r
+#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190\r
+#endif\r
+\r
+#ifndef GL_SGIX_shadow_ambient\r
+#define GL_SHADOW_AMBIENT_SGIX 0x80BF\r
+#endif\r
+\r
+#ifndef GL_EXT_index_texture\r
+#endif\r
+\r
+#ifndef GL_EXT_index_material\r
+#define GL_INDEX_MATERIAL_EXT 0x81B8\r
+#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9\r
+#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA\r
+#endif\r
+\r
+#ifndef GL_EXT_index_func\r
+#define GL_INDEX_TEST_EXT 0x81B5\r
+#define GL_INDEX_TEST_FUNC_EXT 0x81B6\r
+#define GL_INDEX_TEST_REF_EXT 0x81B7\r
+#endif\r
+\r
+#ifndef GL_EXT_index_array_formats\r
+#define GL_IUI_V2F_EXT 0x81AD\r
+#define GL_IUI_V3F_EXT 0x81AE\r
+#define GL_IUI_N3F_V2F_EXT 0x81AF\r
+#define GL_IUI_N3F_V3F_EXT 0x81B0\r
+#define GL_T2F_IUI_V2F_EXT 0x81B1\r
+#define GL_T2F_IUI_V3F_EXT 0x81B2\r
+#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3\r
+#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4\r
+#endif\r
+\r
+#ifndef GL_EXT_compiled_vertex_array\r
+#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8\r
+#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9\r
+#endif\r
+\r
+#ifndef GL_EXT_cull_vertex\r
+#define GL_CULL_VERTEX_EXT 0x81AA\r
+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB\r
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC\r
+#endif\r
+\r
+#ifndef GL_SGIX_ycrcb\r
+#define GL_YCRCB_422_SGIX 0x81BB\r
+#define GL_YCRCB_444_SGIX 0x81BC\r
+#endif\r
+\r
+#ifndef GL_SGIX_fragment_lighting\r
+#define GL_FRAGMENT_LIGHTING_SGIX 0x8400\r
+#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401\r
+#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402\r
+#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403\r
+#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404\r
+#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405\r
+#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406\r
+#define GL_LIGHT_ENV_MODE_SGIX 0x8407\r
+#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408\r
+#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409\r
+#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A\r
+#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B\r
+#define GL_FRAGMENT_LIGHT0_SGIX 0x840C\r
+#define GL_FRAGMENT_LIGHT1_SGIX 0x840D\r
+#define GL_FRAGMENT_LIGHT2_SGIX 0x840E\r
+#define GL_FRAGMENT_LIGHT3_SGIX 0x840F\r
+#define GL_FRAGMENT_LIGHT4_SGIX 0x8410\r
+#define GL_FRAGMENT_LIGHT5_SGIX 0x8411\r
+#define GL_FRAGMENT_LIGHT6_SGIX 0x8412\r
+#define GL_FRAGMENT_LIGHT7_SGIX 0x8413\r
+#endif\r
+\r
+#ifndef GL_IBM_rasterpos_clip\r
+#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262\r
+#endif\r
+\r
+#ifndef GL_HP_texture_lighting\r
+#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167\r
+#define GL_TEXTURE_POST_SPECULAR_HP 0x8168\r
+#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169\r
+#endif\r
+\r
+#ifndef GL_EXT_draw_range_elements\r
+#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8\r
+#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9\r
+#endif\r
+\r
+#ifndef GL_WIN_phong_shading\r
+#define GL_PHONG_WIN 0x80EA\r
+#define GL_PHONG_HINT_WIN 0x80EB\r
+#endif\r
+\r
+#ifndef GL_WIN_specular_fog\r
+#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC\r
+#endif\r
+\r
+#ifndef GL_EXT_light_texture\r
+#define GL_FRAGMENT_MATERIAL_EXT 0x8349\r
+#define GL_FRAGMENT_NORMAL_EXT 0x834A\r
+#define GL_FRAGMENT_COLOR_EXT 0x834C\r
+#define GL_ATTENUATION_EXT 0x834D\r
+#define GL_SHADOW_ATTENUATION_EXT 0x834E\r
+#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F\r
+#define GL_TEXTURE_LIGHT_EXT 0x8350\r
+#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351\r
+#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352\r
+/* reuse GL_FRAGMENT_DEPTH_EXT */\r
+#endif\r
+\r
+#ifndef GL_SGIX_blend_alpha_minmax\r
+#define GL_ALPHA_MIN_SGIX 0x8320\r
+#define GL_ALPHA_MAX_SGIX 0x8321\r
+#endif\r
+\r
+#ifndef GL_EXT_bgra\r
+#define GL_BGR_EXT 0x80E0\r
+#define GL_BGRA_EXT 0x80E1\r
+#endif\r
+\r
+#ifndef GL_SGIX_async\r
+#define GL_ASYNC_MARKER_SGIX 0x8329\r
+#endif\r
+\r
+#ifndef GL_SGIX_async_pixel\r
+#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C\r
+#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D\r
+#define GL_ASYNC_READ_PIXELS_SGIX 0x835E\r
+#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F\r
+#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360\r
+#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361\r
+#endif\r
+\r
+#ifndef GL_SGIX_async_histogram\r
+#define GL_ASYNC_HISTOGRAM_SGIX 0x832C\r
+#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D\r
+#endif\r
+\r
+#ifndef GL_INTEL_texture_scissor\r
+#endif\r
+\r
+#ifndef GL_INTEL_parallel_arrays\r
+#define GL_PARALLEL_ARRAYS_INTEL 0x83F4\r
+#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5\r
+#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6\r
+#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7\r
+#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8\r
+#endif\r
+\r
+#ifndef GL_HP_occlusion_test\r
+#define GL_OCCLUSION_TEST_HP 0x8165\r
+#define GL_OCCLUSION_TEST_RESULT_HP 0x8166\r
+#endif\r
+\r
+#ifndef GL_EXT_pixel_transform\r
+#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330\r
+#define GL_PIXEL_MAG_FILTER_EXT 0x8331\r
+#define GL_PIXEL_MIN_FILTER_EXT 0x8332\r
+#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333\r
+#define GL_CUBIC_EXT 0x8334\r
+#define GL_AVERAGE_EXT 0x8335\r
+#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336\r
+#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337\r
+#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338\r
+#endif\r
+\r
+#ifndef GL_EXT_pixel_transform_color_table\r
+#endif\r
+\r
+#ifndef GL_EXT_shared_texture_palette\r
+#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB\r
+#endif\r
+\r
+#ifndef GL_EXT_separate_specular_color\r
+#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8\r
+#define GL_SINGLE_COLOR_EXT 0x81F9\r
+#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA\r
+#endif\r
+\r
+#ifndef GL_EXT_secondary_color\r
+#define GL_COLOR_SUM_EXT 0x8458\r
+#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459\r
+#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A\r
+#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B\r
+#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C\r
+#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D\r
+#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_perturb_normal\r
+#define GL_PERTURB_EXT 0x85AE\r
+#define GL_TEXTURE_NORMAL_EXT 0x85AF\r
+#endif\r
+\r
+#ifndef GL_EXT_multi_draw_arrays\r
+#endif\r
+\r
+#ifndef GL_EXT_fog_coord\r
+#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450\r
+#define GL_FOG_COORDINATE_EXT 0x8451\r
+#define GL_FRAGMENT_DEPTH_EXT 0x8452\r
+#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453\r
+#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454\r
+#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455\r
+#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456\r
+#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457\r
+#endif\r
+\r
+#ifndef GL_REND_screen_coordinates\r
+#define GL_SCREEN_COORDINATES_REND 0x8490\r
+#define GL_INVERTED_SCREEN_W_REND 0x8491\r
+#endif\r
+\r
+#ifndef GL_EXT_coordinate_frame\r
+#define GL_TANGENT_ARRAY_EXT 0x8439\r
+#define GL_BINORMAL_ARRAY_EXT 0x843A\r
+#define GL_CURRENT_TANGENT_EXT 0x843B\r
+#define GL_CURRENT_BINORMAL_EXT 0x843C\r
+#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E\r
+#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F\r
+#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440\r
+#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441\r
+#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442\r
+#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443\r
+#define GL_MAP1_TANGENT_EXT 0x8444\r
+#define GL_MAP2_TANGENT_EXT 0x8445\r
+#define GL_MAP1_BINORMAL_EXT 0x8446\r
+#define GL_MAP2_BINORMAL_EXT 0x8447\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_env_combine\r
+#define GL_COMBINE_EXT 0x8570\r
+#define GL_COMBINE_RGB_EXT 0x8571\r
+#define GL_COMBINE_ALPHA_EXT 0x8572\r
+#define GL_RGB_SCALE_EXT 0x8573\r
+#define GL_ADD_SIGNED_EXT 0x8574\r
+#define GL_INTERPOLATE_EXT 0x8575\r
+#define GL_CONSTANT_EXT 0x8576\r
+#define GL_PRIMARY_COLOR_EXT 0x8577\r
+#define GL_PREVIOUS_EXT 0x8578\r
+#define GL_SOURCE0_RGB_EXT 0x8580\r
+#define GL_SOURCE1_RGB_EXT 0x8581\r
+#define GL_SOURCE2_RGB_EXT 0x8582\r
+#define GL_SOURCE3_RGB_EXT 0x8583\r
+#define GL_SOURCE4_RGB_EXT 0x8584\r
+#define GL_SOURCE5_RGB_EXT 0x8585\r
+#define GL_SOURCE6_RGB_EXT 0x8586\r
+#define GL_SOURCE7_RGB_EXT 0x8587\r
+#define GL_SOURCE0_ALPHA_EXT 0x8588\r
+#define GL_SOURCE1_ALPHA_EXT 0x8589\r
+#define GL_SOURCE2_ALPHA_EXT 0x858A\r
+#define GL_SOURCE3_ALPHA_EXT 0x858B\r
+#define GL_SOURCE4_ALPHA_EXT 0x858C\r
+#define GL_SOURCE5_ALPHA_EXT 0x858D\r
+#define GL_SOURCE6_ALPHA_EXT 0x858E\r
+#define GL_SOURCE7_ALPHA_EXT 0x858F\r
+#define GL_OPERAND0_RGB_EXT 0x8590\r
+#define GL_OPERAND1_RGB_EXT 0x8591\r
+#define GL_OPERAND2_RGB_EXT 0x8592\r
+#define GL_OPERAND3_RGB_EXT 0x8593\r
+#define GL_OPERAND4_RGB_EXT 0x8594\r
+#define GL_OPERAND5_RGB_EXT 0x8595\r
+#define GL_OPERAND6_RGB_EXT 0x8596\r
+#define GL_OPERAND7_RGB_EXT 0x8597\r
+#define GL_OPERAND0_ALPHA_EXT 0x8598\r
+#define GL_OPERAND1_ALPHA_EXT 0x8599\r
+#define GL_OPERAND2_ALPHA_EXT 0x859A\r
+#define GL_OPERAND3_ALPHA_EXT 0x859B\r
+#define GL_OPERAND4_ALPHA_EXT 0x859C\r
+#define GL_OPERAND5_ALPHA_EXT 0x859D\r
+#define GL_OPERAND6_ALPHA_EXT 0x859E\r
+#define GL_OPERAND7_ALPHA_EXT 0x859F\r
+#endif\r
+\r
+#ifndef GL_APPLE_specular_vector\r
+#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0\r
+#endif\r
+\r
+#ifndef GL_APPLE_transform_hint\r
+#define GL_TRANSFORM_HINT_APPLE 0x85B1\r
+#endif\r
+\r
+#ifndef GL_SGIX_fog_scale\r
+#define GL_FOG_SCALE_SGIX 0x81FC\r
+#define GL_FOG_SCALE_VALUE_SGIX 0x81FD\r
+#endif\r
+\r
+#ifndef GL_SUNX_constant_data\r
+#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5\r
+#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6\r
+#endif\r
+\r
+#ifndef GL_SUN_global_alpha\r
+#define GL_GLOBAL_ALPHA_SUN 0x81D9\r
+#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA\r
+#endif\r
+\r
+#ifndef GL_SUN_triangle_list\r
+#define GL_RESTART_SUN 0x01\r
+#define GL_REPLACE_MIDDLE_SUN 0x02\r
+#define GL_REPLACE_OLDEST_SUN 0x03\r
+#define GL_TRIANGLE_LIST_SUN 0x81D7\r
+#define GL_REPLACEMENT_CODE_SUN 0x81D8\r
+#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0\r
+#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1\r
+#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2\r
+#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3\r
+#define GL_R1UI_V3F_SUN 0x85C4\r
+#define GL_R1UI_C4UB_V3F_SUN 0x85C5\r
+#define GL_R1UI_C3F_V3F_SUN 0x85C6\r
+#define GL_R1UI_N3F_V3F_SUN 0x85C7\r
+#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8\r
+#define GL_R1UI_T2F_V3F_SUN 0x85C9\r
+#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA\r
+#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB\r
+#endif\r
+\r
+#ifndef GL_SUN_vertex\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_func_separate\r
+#define GL_BLEND_DST_RGB_EXT 0x80C8\r
+#define GL_BLEND_SRC_RGB_EXT 0x80C9\r
+#define GL_BLEND_DST_ALPHA_EXT 0x80CA\r
+#define GL_BLEND_SRC_ALPHA_EXT 0x80CB\r
+#endif\r
+\r
+#ifndef GL_INGR_color_clamp\r
+#define GL_RED_MIN_CLAMP_INGR 0x8560\r
+#define GL_GREEN_MIN_CLAMP_INGR 0x8561\r
+#define GL_BLUE_MIN_CLAMP_INGR 0x8562\r
+#define GL_ALPHA_MIN_CLAMP_INGR 0x8563\r
+#define GL_RED_MAX_CLAMP_INGR 0x8564\r
+#define GL_GREEN_MAX_CLAMP_INGR 0x8565\r
+#define GL_BLUE_MAX_CLAMP_INGR 0x8566\r
+#define GL_ALPHA_MAX_CLAMP_INGR 0x8567\r
+#endif\r
+\r
+#ifndef GL_INGR_interlace_read\r
+#define GL_INTERLACE_READ_INGR 0x8568\r
+#endif\r
+\r
+#ifndef GL_EXT_stencil_wrap\r
+#define GL_INCR_WRAP_EXT 0x8507\r
+#define GL_DECR_WRAP_EXT 0x8508\r
+#endif\r
+\r
+#ifndef GL_EXT_422_pixels\r
+#define GL_422_EXT 0x80CC\r
+#define GL_422_REV_EXT 0x80CD\r
+#define GL_422_AVERAGE_EXT 0x80CE\r
+#define GL_422_REV_AVERAGE_EXT 0x80CF\r
+#endif\r
+\r
+#ifndef GL_NV_texgen_reflection\r
+#define GL_NORMAL_MAP_NV 0x8511\r
+#define GL_REFLECTION_MAP_NV 0x8512\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_cube_map\r
+#define GL_NORMAL_MAP_EXT 0x8511\r
+#define GL_REFLECTION_MAP_EXT 0x8512\r
+#define GL_TEXTURE_CUBE_MAP_EXT 0x8513\r
+#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514\r
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515\r
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516\r
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517\r
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518\r
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519\r
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A\r
+#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B\r
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C\r
+#endif\r
+\r
+#ifndef GL_SUN_convolution_border_modes\r
+#define GL_WRAP_BORDER_SUN 0x81D4\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_env_add\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_lod_bias\r
+#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD\r
+#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500\r
+#define GL_TEXTURE_LOD_BIAS_EXT 0x8501\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_filter_anisotropic\r
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE\r
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF\r
+#endif\r
+\r
+#ifndef GL_EXT_vertex_weighting\r
+#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH\r
+#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502\r
+#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX\r
+#define GL_MODELVIEW_MATRIX1_EXT 0x8506\r
+#define GL_VERTEX_WEIGHTING_EXT 0x8509\r
+#define GL_MODELVIEW0_EXT GL_MODELVIEW\r
+#define GL_MODELVIEW1_EXT 0x850A\r
+#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B\r
+#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C\r
+#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D\r
+#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E\r
+#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F\r
+#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510\r
+#endif\r
+\r
+#ifndef GL_NV_light_max_exponent\r
+#define GL_MAX_SHININESS_NV 0x8504\r
+#define GL_MAX_SPOT_EXPONENT_NV 0x8505\r
+#endif\r
+\r
+#ifndef GL_NV_vertex_array_range\r
+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D\r
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E\r
+#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F\r
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520\r
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521\r
+#endif\r
+\r
+#ifndef GL_NV_register_combiners\r
+#define GL_REGISTER_COMBINERS_NV 0x8522\r
+#define GL_VARIABLE_A_NV 0x8523\r
+#define GL_VARIABLE_B_NV 0x8524\r
+#define GL_VARIABLE_C_NV 0x8525\r
+#define GL_VARIABLE_D_NV 0x8526\r
+#define GL_VARIABLE_E_NV 0x8527\r
+#define GL_VARIABLE_F_NV 0x8528\r
+#define GL_VARIABLE_G_NV 0x8529\r
+#define GL_CONSTANT_COLOR0_NV 0x852A\r
+#define GL_CONSTANT_COLOR1_NV 0x852B\r
+#define GL_PRIMARY_COLOR_NV 0x852C\r
+#define GL_SECONDARY_COLOR_NV 0x852D\r
+#define GL_SPARE0_NV 0x852E\r
+#define GL_SPARE1_NV 0x852F\r
+#define GL_DISCARD_NV 0x8530\r
+#define GL_E_TIMES_F_NV 0x8531\r
+#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532\r
+#define GL_UNSIGNED_IDENTITY_NV 0x8536\r
+#define GL_UNSIGNED_INVERT_NV 0x8537\r
+#define GL_EXPAND_NORMAL_NV 0x8538\r
+#define GL_EXPAND_NEGATE_NV 0x8539\r
+#define GL_HALF_BIAS_NORMAL_NV 0x853A\r
+#define GL_HALF_BIAS_NEGATE_NV 0x853B\r
+#define GL_SIGNED_IDENTITY_NV 0x853C\r
+#define GL_SIGNED_NEGATE_NV 0x853D\r
+#define GL_SCALE_BY_TWO_NV 0x853E\r
+#define GL_SCALE_BY_FOUR_NV 0x853F\r
+#define GL_SCALE_BY_ONE_HALF_NV 0x8540\r
+#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541\r
+#define GL_COMBINER_INPUT_NV 0x8542\r
+#define GL_COMBINER_MAPPING_NV 0x8543\r
+#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544\r
+#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545\r
+#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546\r
+#define GL_COMBINER_MUX_SUM_NV 0x8547\r
+#define GL_COMBINER_SCALE_NV 0x8548\r
+#define GL_COMBINER_BIAS_NV 0x8549\r
+#define GL_COMBINER_AB_OUTPUT_NV 0x854A\r
+#define GL_COMBINER_CD_OUTPUT_NV 0x854B\r
+#define GL_COMBINER_SUM_OUTPUT_NV 0x854C\r
+#define GL_MAX_GENERAL_COMBINERS_NV 0x854D\r
+#define GL_NUM_GENERAL_COMBINERS_NV 0x854E\r
+#define GL_COLOR_SUM_CLAMP_NV 0x854F\r
+#define GL_COMBINER0_NV 0x8550\r
+#define GL_COMBINER1_NV 0x8551\r
+#define GL_COMBINER2_NV 0x8552\r
+#define GL_COMBINER3_NV 0x8553\r
+#define GL_COMBINER4_NV 0x8554\r
+#define GL_COMBINER5_NV 0x8555\r
+#define GL_COMBINER6_NV 0x8556\r
+#define GL_COMBINER7_NV 0x8557\r
+/* reuse GL_TEXTURE0_ARB */\r
+/* reuse GL_TEXTURE1_ARB */\r
+/* reuse GL_ZERO */\r
+/* reuse GL_NONE */\r
+/* reuse GL_FOG */\r
+#endif\r
+\r
+#ifndef GL_NV_fog_distance\r
+#define GL_FOG_DISTANCE_MODE_NV 0x855A\r
+#define GL_EYE_RADIAL_NV 0x855B\r
+#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C\r
+/* reuse GL_EYE_PLANE */\r
+#endif\r
+\r
+#ifndef GL_NV_texgen_emboss\r
+#define GL_EMBOSS_LIGHT_NV 0x855D\r
+#define GL_EMBOSS_CONSTANT_NV 0x855E\r
+#define GL_EMBOSS_MAP_NV 0x855F\r
+#endif\r
+\r
+#ifndef GL_NV_blend_square\r
+#endif\r
+\r
+#ifndef GL_NV_texture_env_combine4\r
+#define GL_COMBINE4_NV 0x8503\r
+#define GL_SOURCE3_RGB_NV 0x8583\r
+#define GL_SOURCE3_ALPHA_NV 0x858B\r
+#define GL_OPERAND3_RGB_NV 0x8593\r
+#define GL_OPERAND3_ALPHA_NV 0x859B\r
+#endif\r
+\r
+#ifndef GL_MESA_resize_buffers\r
+#endif\r
+\r
+#ifndef GL_MESA_window_pos\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_compression_s3tc\r
+#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0\r
+#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1\r
+#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2\r
+#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3\r
+#endif\r
+\r
+#ifndef GL_IBM_cull_vertex\r
+#define GL_CULL_VERTEX_IBM 103050\r
+#endif\r
+\r
+#ifndef GL_IBM_multimode_draw_arrays\r
+#endif\r
+\r
+#ifndef GL_IBM_vertex_array_lists\r
+#define GL_VERTEX_ARRAY_LIST_IBM 103070\r
+#define GL_NORMAL_ARRAY_LIST_IBM 103071\r
+#define GL_COLOR_ARRAY_LIST_IBM 103072\r
+#define GL_INDEX_ARRAY_LIST_IBM 103073\r
+#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074\r
+#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075\r
+#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076\r
+#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077\r
+#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080\r
+#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081\r
+#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082\r
+#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083\r
+#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084\r
+#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085\r
+#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086\r
+#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087\r
+#endif\r
+\r
+#ifndef GL_SGIX_subsample\r
+#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0\r
+#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1\r
+#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2\r
+#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3\r
+#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4\r
+#endif\r
+\r
+#ifndef GL_SGIX_ycrcb_subsample\r
+#endif\r
+\r
+#ifndef GL_SGIX_ycrcba\r
+#define GL_YCRCB_SGIX 0x8318\r
+#define GL_YCRCBA_SGIX 0x8319\r
+#endif\r
+\r
+#ifndef GL_SGI_depth_pass_instrument\r
+#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310\r
+#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311\r
+#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312\r
+#endif\r
+\r
+#ifndef GL_3DFX_texture_compression_FXT1\r
+#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0\r
+#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1\r
+#endif\r
+\r
+#ifndef GL_3DFX_multisample\r
+#define GL_MULTISAMPLE_3DFX 0x86B2\r
+#define GL_SAMPLE_BUFFERS_3DFX 0x86B3\r
+#define GL_SAMPLES_3DFX 0x86B4\r
+#define GL_MULTISAMPLE_BIT_3DFX 0x20000000\r
+#endif\r
+\r
+#ifndef GL_3DFX_tbuffer\r
+#endif\r
+\r
+#ifndef GL_EXT_multisample\r
+#define GL_MULTISAMPLE_EXT 0x809D\r
+#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E\r
+#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F\r
+#define GL_SAMPLE_MASK_EXT 0x80A0\r
+#define GL_1PASS_EXT 0x80A1\r
+#define GL_2PASS_0_EXT 0x80A2\r
+#define GL_2PASS_1_EXT 0x80A3\r
+#define GL_4PASS_0_EXT 0x80A4\r
+#define GL_4PASS_1_EXT 0x80A5\r
+#define GL_4PASS_2_EXT 0x80A6\r
+#define GL_4PASS_3_EXT 0x80A7\r
+#define GL_SAMPLE_BUFFERS_EXT 0x80A8\r
+#define GL_SAMPLES_EXT 0x80A9\r
+#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA\r
+#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB\r
+#define GL_SAMPLE_PATTERN_EXT 0x80AC\r
+#endif\r
+\r
+#ifndef GL_SGIX_vertex_preclip\r
+#define GL_VERTEX_PRECLIP_SGIX 0x83EE\r
+#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF\r
+#endif\r
+\r
+#ifndef GL_SGIX_convolution_accuracy\r
+#define GL_CONVOLUTION_HINT_SGIX 0x8316\r
+#endif\r
+\r
+#ifndef GL_SGIX_resample\r
+#define GL_PACK_RESAMPLE_SGIX 0x842C\r
+#define GL_UNPACK_RESAMPLE_SGIX 0x842D\r
+#define GL_RESAMPLE_REPLICATE_SGIX 0x842E\r
+#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F\r
+#define GL_RESAMPLE_DECIMATE_SGIX 0x8430\r
+#endif\r
+\r
+#ifndef GL_SGIS_point_line_texgen\r
+#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0\r
+#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1\r
+#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2\r
+#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3\r
+#define GL_EYE_POINT_SGIS 0x81F4\r
+#define GL_OBJECT_POINT_SGIS 0x81F5\r
+#define GL_EYE_LINE_SGIS 0x81F6\r
+#define GL_OBJECT_LINE_SGIS 0x81F7\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_color_mask\r
+#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_env_dot3\r
+#define GL_DOT3_RGB_EXT 0x8740\r
+#define GL_DOT3_RGBA_EXT 0x8741\r
+#endif\r
+\r
+\r
+/*************************************************************/\r
+\r
+#ifndef GL_VERSION_1_2\r
+#define GL_VERSION_1_2 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);\r
+GLAPI void APIENTRY glBlendEquation (GLenum);\r
+GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);\r
+GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);\r
+GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);\r
+GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);\r
+GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);\r
+GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);\r
+GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);\r
+GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);\r
+GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);\r
+GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);\r
+GLAPI void APIENTRY glResetHistogram (GLenum);\r
+GLAPI void APIENTRY glResetMinmax (GLenum);\r
+GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);\r
+typedef void (APIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode);\r
+typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);\r
+typedef void (APIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);\r
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\r
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);\r
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);\r
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);\r
+typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);\r
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);\r
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);\r
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);\r
+typedef void (APIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);\r
+typedef void (APIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target);\r
+typedef void (APIENTRY * PFNGLRESETMINMAXPROC) (GLenum target);\r
+typedef void (APIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);\r
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);\r
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\r
+#endif\r
+\r
+#ifndef GL_ARB_multitexture\r
+#define GL_ARB_multitexture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glActiveTextureARB (GLenum);\r
+GLAPI void APIENTRY glClientActiveTextureARB (GLenum);\r
+GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);\r
+GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);\r
+GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);\r
+GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);\r
+GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);\r
+GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);\r
+GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);\r
+GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);\r
+GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);\r
+GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);\r
+GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);\r
+GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);\r
+GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);\r
+GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);\r
+GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);\r
+GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);\r
+GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);\r
+GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);\r
+GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);\r
+GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);\r
+GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);\r
+GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture);\r
+typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\r
+typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);\r
+#endif\r
+\r
+#ifndef GL_ARB_transpose_matrix\r
+#define GL_ARB_transpose_matrix 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);\r
+GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);\r
+GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);\r
+GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);\r
+typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);\r
+typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);\r
+typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);\r
+#endif\r
+\r
+#ifndef GL_ARB_multisample\r
+#define GL_ARB_multisample 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);\r
+GLAPI void APIENTRY glSamplePassARB (GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);\r
+typedef void (APIENTRY * PFNGLSAMPLEPASSARBPROC) (GLenum pass);\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_env_add\r
+#define GL_ARB_texture_env_add 1\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_cube_map\r
+#define GL_ARB_texture_cube_map 1\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_compression\r
+#define GL_ARB_texture_compression 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, void *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_env_combine\r
+#define GL_ARB_texture_env_combine 1\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_env_dot3\r
+#define GL_ARB_texture_env_dot3 1\r
+#endif\r
+\r
+#ifndef GL_ARB_texture_border_clamp\r
+#define GL_ARB_texture_border_clamp 1\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_color\r
+#define GL_EXT_blend_color 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);\r
+#endif\r
+\r
+#ifndef GL_EXT_polygon_offset\r
+#define GL_EXT_polygon_offset 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);\r
+#endif\r
+\r
+#ifndef GL_EXT_texture\r
+#define GL_EXT_texture 1\r
+#endif\r
+\r
+#ifndef GL_EXT_texture3D\r
+#define GL_EXT_texture3D 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);\r
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_filter4\r
+#define GL_SGIS_texture_filter4 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);\r
+typedef void (APIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);\r
+#endif\r
+\r
+#ifndef GL_EXT_subtexture\r
+#define GL_EXT_subtexture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);\r
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);\r
+#endif\r
+\r
+#ifndef GL_EXT_copy_texture\r
+#define GL_EXT_copy_texture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);\r
+GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);\r
+GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);\r
+GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);\r
+GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\r
+typedef void (APIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\r
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\r
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\r
+typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\r
+#endif\r
+\r
+#ifndef GL_EXT_histogram\r
+#define GL_EXT_histogram 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);\r
+GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);\r
+GLAPI void APIENTRY glResetHistogramEXT (GLenum);\r
+GLAPI void APIENTRY glResetMinmaxEXT (GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);\r
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);\r
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);\r
+typedef void (APIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);\r
+typedef void (APIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);\r
+typedef void (APIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target);\r
+#endif\r
+\r
+#ifndef GL_EXT_convolution\r
+#define GL_EXT_convolution 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);\r
+GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);\r
+GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);\r
+GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);\r
+GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);\r
+GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);\r
+typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\r
+typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);\r
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);\r
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);\r
+typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);\r
+#endif\r
+\r
+#ifndef GL_EXT_color_matrix\r
+#define GL_EXT_color_matrix 1\r
+#endif\r
+\r
+#ifndef GL_SGI_color_table\r
+#define GL_SGI_color_table 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);\r
+GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);\r
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);\r
+#endif\r
+\r
+#ifndef GL_SGIX_pixel_texture\r
+#define GL_SGIX_pixel_texture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);\r
+#endif\r
+\r
+#ifndef GL_SGIS_pixel_texture\r
+#define GL_SGIS_pixel_texture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);\r
+GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);\r
+GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);\r
+GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);\r
+GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture4D\r
+#define GL_SGIS_texture4D 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);\r
+typedef void (APIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);\r
+#endif\r
+\r
+#ifndef GL_SGI_texture_color_table\r
+#define GL_SGI_texture_color_table 1\r
+#endif\r
+\r
+#ifndef GL_EXT_cmyka\r
+#define GL_EXT_cmyka 1\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_object\r
+#define GL_EXT_texture_object 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);\r
+GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);\r
+GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);\r
+GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);\r
+GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);\r
+GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef GLboolean (APIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);\r
+typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);\r
+typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);\r
+typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);\r
+typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture);\r
+typedef void (APIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);\r
+#endif\r
+\r
+#ifndef GL_SGIS_detail_texture\r
+#define GL_SGIS_detail_texture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);\r
+GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);\r
+typedef void (APIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);\r
+#endif\r
+\r
+#ifndef GL_SGIS_sharpen_texture\r
+#define GL_SGIS_sharpen_texture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);\r
+GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);\r
+typedef void (APIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);\r
+#endif\r
+\r
+#ifndef GL_EXT_packed_pixels\r
+#define GL_EXT_packed_pixels 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_lod\r
+#define GL_SGIS_texture_lod 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_multisample\r
+#define GL_SGIS_multisample 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);\r
+GLAPI void APIENTRY glSamplePatternSGIS (GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);\r
+typedef void (APIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);\r
+#endif\r
+\r
+#ifndef GL_EXT_rescale_normal\r
+#define GL_EXT_rescale_normal 1\r
+#endif\r
+\r
+#ifndef GL_EXT_vertex_array\r
+#define GL_EXT_vertex_array 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glArrayElementEXT (GLint);\r
+GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);\r
+GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);\r
+GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);\r
+GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);\r
+typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);\r
+typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);\r
+typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);\r
+typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);\r
+typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);\r
+typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);\r
+typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);\r
+typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);\r
+#endif\r
+\r
+#ifndef GL_EXT_misc_attribute\r
+#define GL_EXT_misc_attribute 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_generate_mipmap\r
+#define GL_SGIS_generate_mipmap 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_clipmap\r
+#define GL_SGIX_clipmap 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_shadow\r
+#define GL_SGIX_shadow 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_edge_clamp\r
+#define GL_SGIS_texture_edge_clamp 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_border_clamp\r
+#define GL_SGIS_texture_border_clamp 1\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_minmax\r
+#define GL_EXT_blend_minmax 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glBlendEquationEXT (GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_subtract\r
+#define GL_EXT_blend_subtract 1\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_logic_op\r
+#define GL_EXT_blend_logic_op 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_interlace\r
+#define GL_SGIX_interlace 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_pixel_tiles\r
+#define GL_SGIX_pixel_tiles 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_select\r
+#define GL_SGIX_texture_select 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_sprite\r
+#define GL_SGIX_sprite 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);\r
+GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);\r
+GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_multi_buffer\r
+#define GL_SGIX_texture_multi_buffer 1\r
+#endif\r
+\r
+#ifndef GL_EXT_point_parameters\r
+#define GL_EXT_point_parameters 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);\r
+GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);\r
+GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);\r
+#endif\r
+\r
+#ifndef GL_SGIX_instruments\r
+#define GL_SGIX_instruments 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);\r
+GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);\r
+GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);\r
+GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);\r
+GLAPI void APIENTRY glStartInstrumentsSGIX (void);\r
+GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef GLint (APIENTRY * PFNGLGETINSTRUMENTSSGIXPROC) (void);\r
+typedef void (APIENTRY * PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);\r
+typedef GLint (APIENTRY * PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);\r
+typedef void (APIENTRY * PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);\r
+typedef void (APIENTRY * PFNGLSTARTINSTRUMENTSSGIXPROC) (void);\r
+typedef void (APIENTRY * PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_scale_bias\r
+#define GL_SGIX_texture_scale_bias 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_framezoom\r
+#define GL_SGIX_framezoom 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glFrameZoomSGIX (GLint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor);\r
+#endif\r
+\r
+#ifndef GL_SGIX_tag_sample_buffer\r
+#define GL_SGIX_tag_sample_buffer 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTagSampleBufferSGIX (void);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);\r
+#endif\r
+\r
+#ifndef GL_SGIX_polynomial_ffd\r
+#define GL_SGIX_polynomial_ffd 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);\r
+GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);\r
+GLAPI void APIENTRY glDeformSGIX (GLbitfield);\r
+GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);\r
+typedef void (APIENTRY * PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);\r
+typedef void (APIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask);\r
+typedef void (APIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);\r
+#endif\r
+\r
+#ifndef GL_SGIX_reference_plane\r
+#define GL_SGIX_reference_plane 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);\r
+#endif\r
+\r
+#ifndef GL_SGIX_flush_raster\r
+#define GL_SGIX_flush_raster 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glFlushRasterSGIX (void);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void);\r
+#endif\r
+\r
+#ifndef GL_SGIX_depth_texture\r
+#define GL_SGIX_depth_texture 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_fog_function\r
+#define GL_SGIS_fog_function 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);\r
+GLAPI void APIENTRY glGetFogFuncSGIS (const GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);\r
+typedef void (APIENTRY * PFNGLGETFOGFUNCSGISPROC) (const GLfloat *points);\r
+#endif\r
+\r
+#ifndef GL_SGIX_fog_offset\r
+#define GL_SGIX_fog_offset 1\r
+#endif\r
+\r
+#ifndef GL_HP_image_transform\r
+#define GL_HP_image_transform 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);\r
+GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);\r
+GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+#endif\r
+\r
+#ifndef GL_HP_convolution_border_modes\r
+#define GL_HP_convolution_border_modes 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_add_env\r
+#define GL_SGIX_texture_add_env 1\r
+#endif\r
+\r
+#ifndef GL_EXT_color_subtable\r
+#define GL_EXT_color_subtable 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);\r
+typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);\r
+#endif\r
+\r
+#ifndef GL_PGI_vertex_hints\r
+#define GL_PGI_vertex_hints 1\r
+#endif\r
+\r
+#ifndef GL_PGI_misc_hints\r
+#define GL_PGI_misc_hints 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glHintPGI (GLenum, GLint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLHINTPGIPROC) (GLenum target, GLint mode);\r
+#endif\r
+\r
+#ifndef GL_EXT_paletted_texture\r
+#define GL_EXT_paletted_texture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);\r
+GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);\r
+GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\r
+#endif\r
+\r
+#ifndef GL_EXT_clip_volume_hint\r
+#define GL_EXT_clip_volume_hint 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_list_priority\r
+#define GL_SGIX_list_priority 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);\r
+GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);\r
+GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);\r
+GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);\r
+#endif\r
+\r
+#ifndef GL_SGIX_ir_instrument1\r
+#define GL_SGIX_ir_instrument1 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_calligraphic_fragment\r
+#define GL_SGIX_calligraphic_fragment 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_texture_lod_bias\r
+#define GL_SGIX_texture_lod_bias 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_shadow_ambient\r
+#define GL_SGIX_shadow_ambient 1\r
+#endif\r
+\r
+#ifndef GL_EXT_index_texture\r
+#define GL_EXT_index_texture 1\r
+#endif\r
+\r
+#ifndef GL_EXT_index_material\r
+#define GL_EXT_index_material 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);\r
+#endif\r
+\r
+#ifndef GL_EXT_index_func\r
+#define GL_EXT_index_func 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);\r
+#endif\r
+\r
+#ifndef GL_EXT_index_array_formats\r
+#define GL_EXT_index_array_formats 1\r
+#endif\r
+\r
+#ifndef GL_EXT_compiled_vertex_array\r
+#define GL_EXT_compiled_vertex_array 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);\r
+GLAPI void APIENTRY glUnlockArraysEXT (void);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);\r
+typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);\r
+#endif\r
+\r
+#ifndef GL_EXT_cull_vertex\r
+#define GL_EXT_cull_vertex 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);\r
+GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);\r
+typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);\r
+#endif\r
+\r
+#ifndef GL_SGIX_ycrcb\r
+#define GL_SGIX_ycrcb 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_fragment_lighting\r
+#define GL_SGIX_fragment_lighting 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);\r
+GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);\r
+GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);\r
+GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);\r
+GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);\r
+GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);\r
+GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);\r
+GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);\r
+GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);\r
+#endif\r
+\r
+#ifndef GL_IBM_rasterpos_clip\r
+#define GL_IBM_rasterpos_clip 1\r
+#endif\r
+\r
+#ifndef GL_HP_texture_lighting\r
+#define GL_HP_texture_lighting 1\r
+#endif\r
+\r
+#ifndef GL_EXT_draw_range_elements\r
+#define GL_EXT_draw_range_elements 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);\r
+#endif\r
+\r
+#ifndef GL_WIN_phong_shading\r
+#define GL_WIN_phong_shading 1\r
+#endif\r
+\r
+#ifndef GL_WIN_specular_fog\r
+#define GL_WIN_specular_fog 1\r
+#endif\r
+\r
+#ifndef GL_EXT_light_texture\r
+#define GL_EXT_light_texture 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glApplyTextureEXT (GLenum);\r
+GLAPI void APIENTRY glTextureLightEXT (GLenum);\r
+GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);\r
+typedef void (APIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);\r
+typedef void (APIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);\r
+#endif\r
+\r
+#ifndef GL_SGIX_blend_alpha_minmax\r
+#define GL_SGIX_blend_alpha_minmax 1\r
+#endif\r
+\r
+#ifndef GL_EXT_bgra\r
+#define GL_EXT_bgra 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_async\r
+#define GL_SGIX_async 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);\r
+GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);\r
+GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);\r
+GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);\r
+GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);\r
+GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker);\r
+typedef GLint (APIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);\r
+typedef GLint (APIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);\r
+typedef GLuint (APIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);\r
+typedef void (APIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);\r
+typedef GLboolean (APIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);\r
+#endif\r
+\r
+#ifndef GL_SGIX_async_pixel\r
+#define GL_SGIX_async_pixel 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_async_histogram\r
+#define GL_SGIX_async_histogram 1\r
+#endif\r
+\r
+#ifndef GL_INTEL_parallel_arrays\r
+#define GL_INTEL_parallel_arrays 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);\r
+GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);\r
+GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);\r
+GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);\r
+typedef void (APIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);\r
+typedef void (APIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);\r
+typedef void (APIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);\r
+#endif\r
+\r
+#ifndef GL_HP_occlusion_test\r
+#define GL_HP_occlusion_test 1\r
+#endif\r
+\r
+#ifndef GL_EXT_pixel_transform\r
+#define GL_EXT_pixel_transform 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);\r
+GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);\r
+GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);\r
+GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);\r
+#endif\r
+\r
+#ifndef GL_EXT_pixel_transform_color_table\r
+#define GL_EXT_pixel_transform_color_table 1\r
+#endif\r
+\r
+#ifndef GL_EXT_shared_texture_palette\r
+#define GL_EXT_shared_texture_palette 1\r
+#endif\r
+\r
+#ifndef GL_EXT_separate_specular_color\r
+#define GL_EXT_separate_specular_color 1\r
+#endif\r
+\r
+#ifndef GL_EXT_secondary_color\r
+#define GL_EXT_secondary_color 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);\r
+GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);\r
+GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);\r
+GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);\r
+GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);\r
+GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);\r
+GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);\r
+GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);\r
+GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);\r
+GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);\r
+GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);\r
+GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);\r
+GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);\r
+GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);\r
+GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer);\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_perturb_normal\r
+#define GL_EXT_texture_perturb_normal 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTextureNormalEXT (GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode);\r
+#endif\r
+\r
+#ifndef GL_EXT_multi_draw_arrays\r
+#define GL_EXT_multi_draw_arrays 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);\r
+GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);\r
+typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);\r
+#endif\r
+\r
+#ifndef GL_EXT_fog_coord\r
+#define GL_EXT_fog_coord 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glFogCoordfEXT (GLfloat);\r
+GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);\r
+GLAPI void APIENTRY glFogCoorddEXT (GLdouble);\r
+GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);\r
+GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord);\r
+typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);\r
+typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord);\r
+typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);\r
+typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);\r
+#endif\r
+\r
+#ifndef GL_REND_screen_coordinates\r
+#define GL_REND_screen_coordinates 1\r
+#endif\r
+\r
+#ifndef GL_EXT_coordinate_frame\r
+#define GL_EXT_coordinate_frame 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);\r
+GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);\r
+GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);\r
+GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);\r
+GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);\r
+GLAPI void APIENTRY glTangent3ivEXT (const GLint *);\r
+GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);\r
+GLAPI void APIENTRY glTangent3svEXT (const GLshort *);\r
+GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);\r
+GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);\r
+GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);\r
+GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);\r
+GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);\r
+GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);\r
+GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);\r
+GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);\r
+GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);\r
+GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);\r
+typedef void (APIENTRY * PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);\r
+typedef void (APIENTRY * PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);\r
+typedef void (APIENTRY * PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);\r
+typedef void (APIENTRY * PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);\r
+typedef void (APIENTRY * PFNGLTANGENT3IVEXTPROC) (const GLint *v);\r
+typedef void (APIENTRY * PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);\r
+typedef void (APIENTRY * PFNGLTANGENT3SVEXTPROC) (const GLshort *v);\r
+typedef void (APIENTRY * PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);\r
+typedef void (APIENTRY * PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);\r
+typedef void (APIENTRY * PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);\r
+typedef void (APIENTRY * PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);\r
+typedef void (APIENTRY * PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);\r
+typedef void (APIENTRY * PFNGLBINORMAL3IVEXTPROC) (const GLint *v);\r
+typedef void (APIENTRY * PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);\r
+typedef void (APIENTRY * PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);\r
+typedef void (APIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);\r
+typedef void (APIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_env_combine\r
+#define GL_EXT_texture_env_combine 1\r
+#endif\r
+\r
+#ifndef GL_APPLE_specular_vector\r
+#define GL_APPLE_specular_vector 1\r
+#endif\r
+\r
+#ifndef GL_APPLE_transform_hint\r
+#define GL_APPLE_transform_hint 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_fog_scale\r
+#define GL_SGIX_fog_scale 1\r
+#endif\r
+\r
+#ifndef GL_SUNX_constant_data\r
+#define GL_SUNX_constant_data 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glFinishTextureSUNX (void);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void);\r
+#endif\r
+\r
+#ifndef GL_SUN_global_alpha\r
+#define GL_SUN_global_alpha 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);\r
+GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);\r
+GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);\r
+GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);\r
+GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);\r
+GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);\r
+GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);\r
+GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);\r
+typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);\r
+#endif\r
+\r
+#ifndef GL_SUN_triangle_list\r
+#define GL_SUN_triangle_list 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);\r
+GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);\r
+GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);\r
+GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);\r
+GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);\r
+GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);\r
+GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer);\r
+#endif\r
+\r
+#ifndef GL_SUN_vertex\r
+#define GL_SUN_vertex 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);\r
+GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);\r
+GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);\r
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLenum *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLenum, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLenum *, const GLubyte *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *);\r
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);\r
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\r
+typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\r
+typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLenum rc, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLenum rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLenum *rc, const GLubyte *c, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\r
+#endif\r
+\r
+#ifndef GL_EXT_blend_func_separate\r
+#define GL_EXT_blend_func_separate 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\r
+#endif\r
+\r
+#ifndef GL_INGR_color_clamp\r
+#define GL_INGR_color_clamp 1\r
+#endif\r
+\r
+#ifndef GL_INGR_interlace_read\r
+#define GL_INGR_interlace_read 1\r
+#endif\r
+\r
+#ifndef GL_EXT_stencil_wrap\r
+#define GL_EXT_stencil_wrap 1\r
+#endif\r
+\r
+#ifndef GL_EXT_422_pixels\r
+#define GL_EXT_422_pixels 1\r
+#endif\r
+\r
+#ifndef GL_NV_texgen_reflection\r
+#define GL_NV_texgen_reflection 1\r
+#endif\r
+\r
+#ifndef GL_SUN_convolution_border_modes\r
+#define GL_SUN_convolution_border_modes 1\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_env_add\r
+#define GL_EXT_texture_env_add 1\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_lod_bias\r
+#define GL_EXT_texture_lod_bias 1\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_filter_anisotropic\r
+#define GL_EXT_texture_filter_anisotropic 1\r
+#endif\r
+\r
+#ifndef GL_EXT_vertex_weighting\r
+#define GL_EXT_vertex_weighting 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);\r
+GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);\r
+GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);\r
+typedef void (APIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);\r
+typedef void (APIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);\r
+#endif\r
+\r
+#ifndef GL_NV_light_max_exponent\r
+#define GL_NV_light_max_exponent 1\r
+#endif\r
+\r
+#ifndef GL_NV_vertex_array_range\r
+#define GL_NV_vertex_array_range 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);\r
+GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);\r
+typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei size, const GLvoid *pointer);\r
+#endif\r
+\r
+#ifndef GL_NV_register_combiners\r
+#define GL_NV_register_combiners 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);\r
+GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);\r
+GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);\r
+GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);\r
+GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);\r
+GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);\r
+GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);\r
+GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);\r
+GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);\r
+GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);\r
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);\r
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);\r
+typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);\r
+typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);\r
+typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);\r
+typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);\r
+typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);\r
+typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);\r
+typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);\r
+#endif\r
+\r
+#ifndef GL_NV_fog_distance\r
+#define GL_NV_fog_distance 1\r
+#endif\r
+\r
+#ifndef GL_NV_texgen_emboss\r
+#define GL_NV_texgen_emboss 1\r
+#endif\r
+\r
+#ifndef GL_NV_blend_square\r
+#define GL_NV_blend_square 1\r
+#endif\r
+\r
+#ifndef GL_NV_texture_env_combine4\r
+#define GL_NV_texture_env_combine4 1\r
+#endif\r
+\r
+#ifndef GL_MESA_resize_buffers\r
+#define GL_MESA_resize_buffers 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glResizeBuffersMESA (void);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void);\r
+#endif\r
+\r
+#ifndef GL_MESA_window_pos\r
+#define GL_MESA_window_pos 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);\r
+GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);\r
+GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);\r
+GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);\r
+GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);\r
+GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);\r
+GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);\r
+GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);\r
+GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);\r
+GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);\r
+GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);\r
+GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);\r
+GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);\r
+GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);\r
+GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);\r
+GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);\r
+GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);\r
+GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);\r
+GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);\r
+GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);\r
+GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);\r
+GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);\r
+typedef void (APIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);\r
+#endif\r
+\r
+#ifndef GL_IBM_cull_vertex\r
+#define GL_IBM_cull_vertex 1\r
+#endif\r
+\r
+#ifndef GL_IBM_multimode_draw_arrays\r
+#define GL_IBM_multimode_draw_arrays 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glMultiModeDrawArraysIBM (GLenum, const GLint *, const GLsizei *, GLsizei, GLint);\r
+GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* *, GLsizei, GLint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);\r
+typedef void (APIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, GLint modestride);\r
+#endif\r
+\r
+#ifndef GL_IBM_vertex_array_lists\r
+#define GL_IBM_vertex_array_lists 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);\r
+GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);\r
+GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);\r
+GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);\r
+GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);\r
+GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);\r
+GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);\r
+GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);\r
+typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);\r
+typedef void (APIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride);\r
+typedef void (APIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);\r
+typedef void (APIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);\r
+typedef void (APIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);\r
+typedef void (APIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);\r
+typedef void (APIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);\r
+#endif\r
+\r
+#ifndef GL_SGIX_subsample\r
+#define GL_SGIX_subsample 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_ycrcba\r
+#define GL_SGIX_ycrcba 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_ycrcb_subsample\r
+#define GL_SGIX_ycrcb_subsample 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_depth_pass_instrument\r
+#define GL_SGIX_depth_pass_instrument 1\r
+#endif\r
+\r
+#ifndef GL_3DFX_texture_compression_FXT1\r
+#define GL_3DFX_texture_compression_FXT1 1\r
+#endif\r
+\r
+#ifndef GL_3DFX_multisample\r
+#define GL_3DFX_multisample 1\r
+#endif\r
+\r
+#ifndef GL_3DFX_tbuffer\r
+#define GL_3DFX_tbuffer 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTbufferMask3DFX (GLuint);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);\r
+#endif\r
+\r
+#ifndef GL_EXT_multisample\r
+#define GL_EXT_multisample 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);\r
+GLAPI void APIENTRY glSamplePatternEXT (GLenum);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);\r
+typedef void (APIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);\r
+#endif\r
+\r
+#ifndef GL_SGI_vertex_preclip\r
+#define GL_SGI_vertex_preclip 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_convolution_accuracy\r
+#define GL_SGIX_convolution_accuracy 1\r
+#endif\r
+\r
+#ifndef GL_SGIX_resample\r
+#define GL_SGIX_resample 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_point_line_texgen\r
+#define GL_SGIS_point_line_texgen 1\r
+#endif\r
+\r
+#ifndef GL_SGIS_texture_color_mask\r
+#define GL_SGIS_texture_color_mask 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\r
+#endif\r
+\r
+#ifndef GL_SGIX_igloo_interface\r
+#define GL_SGIX_igloo_interface 1\r
+#ifdef GL_GLEXT_PROTOTYPES\r
+GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);\r
+#endif /* GL_GLEXT_PROTOTYPES */\r
+typedef void (APIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);\r
+#endif\r
+\r
+#ifndef GL_EXT_texture_env_dot3\r
+#define GL_EXT_texture_env_dot3 1\r
+#endif\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
-/* $Id: wmesa.c,v 1.17 2001/05/21 14:46:33 brianp Exp $ */
-
-/*
- * Windows (Win32) device driver for Mesa 3.4
- *
- * Original author:
- *
- * Copyright (C) 1996- Li Wei
- * Address : Institute of Artificial Intelligence
- * : & Robotics
- * : Xi'an Jiaotong University
- * Email : liwei@aiar.xjtu.edu.cn
- * Web page : http://sun.aiar.xjtu.edu.cn
- *
- * This file and its associations are partially borrowed from the
- * Windows NT driver for Mesa 1.8 , written by Mark Leaming
- * (mark@rsinc.com).
- */
-
-
-#define WMESA_STEREO_C
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <GL/wmesa.h>
-#include "mesa_extend.h"
-#include "colors.h"
-#include "macros.h"
-#include "context.h"
-#include "dd.h"
-#include "xform.h"
-#include "vb.h"
-#include "matrix.h"
-#include "depth.h"
-#include "wmesadef.h"
-
-#pragma warning ( disable : 4100 4133 4761 )
-
-#ifdef PROFILE
-// #include "profile.h"
-#endif
-
-#ifdef DITHER
-#include <wing.h>
-#endif
-
-#ifdef __CYGWIN32__
-#include "macros.h"
-#include <string.h>
-#define CopyMemory memcpy
-#endif
-
-#if !defined(NO_STEREO)
-
-#include "gl\glu.h"
-#include "stereo.h"
-
-#endif
-#if !defined(NO_PARALLEL)
-// #include "parallel.h"
-#endif
-
-struct DISPLAY_OPTIONS displayOptions;
-
-GLenum stereoCompile = GL_FALSE ;
-GLenum stereoShowing = GL_FALSE ;
-GLenum stereoBuffer = GL_FALSE;
-#if !defined(NO_STEREO)
-GLint displayList = MAXIMUM_DISPLAY_LIST ;
-#endif
-GLint stereo_flag = 0 ;
-
-/* end of added code*/
-
-static PWMC Current = NULL;
-WMesaContext WC = NULL;
-
-#ifdef NDEBUG
-#define assert(ignore) ((void) 0)
-#else
-void Mesa_Assert(void *Cond,void *File,unsigned Line)
-{
- char Msg[512];
- sprintf(Msg,"%s %s %d",Cond,File,Line);
- MessageBox(NULL,Msg,"Assertion failed.",MB_OK);
- exit(1);
-}
-#define assert(e) if (!e) Mesa_Assert(#e,__FILE__,__LINE__);
-#endif
-
-//#define DD_GETDC (Current->hDC )
-#define DD_GETDC ((Current->db_flag) ? Current->dib.hDC : Current->hDC )
-//#define DD_GETDC ((Current->db_flag) ? Current->hDCPrimary : Current->hDCBack )
-#define DD_RELEASEDC
-
-//#define BEGINGDICALL if(Current->rgb_flag)wmFlushBits(Current);
-#define BEGINGDICALL
-//#define ENDGDICALL if(Current->rgb_flag)wmGetBits(Current);
-#define ENDGDICALL
-
-//#define FLIP(Y) (Current->dither_flag? Y : Current->height-(Y)-1)
-//#define FLIP(Y) (Current->height-(Y)-1)
-//#define FLIP(Y) Y
-/*
- * XXX Why only flip Y coord if single buffered???
- */
-#define FLIP(Y) (Current->db_flag? Y: Current->height-(Y)-1)
-#define STARTPROFILE
-#define ENDPROFILE(PARA)
-
-#define DITHER_RGB_TO_8BIT_SETUP \
-GLubyte pixelDithered;
-
-#define DITHER_RGB_TO_8BIT(red, green, blue, pixel, scanline) \
-{ \
- char unsigned redtemp, greentemp, bluetemp, paletteindex; \
- redtemp = aDividedBy51[red] \
- + (aModulo51[red] > aHalftone8x8[(pixel%8)*8 \
- + scanline%8]); \
- greentemp = aDividedBy51[(char unsigned)green] \
- + (aModulo51[green] > aHalftone8x8[ \
- (pixel%8)*8 + scanline%8]); \
- bluetemp = aDividedBy51[(char unsigned)blue] \
- + (aModulo51[blue] > aHalftone8x8[ \
- (pixel%8)*8 +scanline%8]); \
- paletteindex = redtemp + aTimes6[greentemp] + aTimes36[bluetemp]; \
- pixelDithered = aWinGHalftoneTranslation[paletteindex]; \
-}
-
-
-#ifdef DDRAW
-static BOOL DDInit( WMesaContext wc, HWND hwnd);
-static void DDFree( WMesaContext wc);
-static HRESULT DDRestoreAll( WMesaContext wc );
-static void DDDeleteOffScreen(WMesaContext wc);
-static BOOL DDCreateOffScreen(WMesaContext wc);
-#endif
-
-static void FlushToFile(PWMC pwc, PSTR szFile);
-
-BOOL wmCreateBackingStore(PWMC pwc, long lxSize, long lySize);
-BOOL wmDeleteBackingStore(PWMC pwc);
-void wmCreatePalette( PWMC pwdc );
-BOOL wmSetDibColors(PWMC pwc);
-void wmSetPixel(PWMC pwc, int iScanLine, int iPixel, BYTE r, BYTE g, BYTE b);
-
-void wmCreateDIBSection(
- HDC hDC,
- PWMC pwc, // handle of device context
- CONST BITMAPINFO *pbmi, // address of structure containing bitmap size, format, and color data
- UINT iUsage // color data type indicator: RGB values or palette indices
- );
-
-
-void WMesaViewport( GLcontext *ctx,
- GLint x, GLint y, GLsizei width, GLsizei height );
-
-
-static triangle_func choose_triangle_function( GLcontext *ctx );
-
-
-static void wmSetPixelFormat( PWMC wc, HDC hDC)
-{
- if(wc->rgb_flag)
- wc->cColorBits = GetDeviceCaps(hDC, BITSPIXEL);
- else
- wc->cColorBits = 8;
- switch(wc->cColorBits){
- case 8:
- if(wc->dither_flag != GL_TRUE)
- wc->pixelformat = PF_INDEX8;
- else
- wc->pixelformat = PF_DITHER8;
- break;
- case 16:
- wc->pixelformat = PF_5R6G5B;
- break;
- case 32:
- wc->pixelformat = PF_8R8G8B;
- break;
- default:
- wc->pixelformat = PF_BADFORMAT;
- }
-}
-
-//
-// This function sets the color table of a DIB section
-// to match that of the destination DC
-//
-BOOL /*WINAPI*/ wmSetDibColors(PWMC pwc)
-{
- RGBQUAD *pColTab, *pRGB;
- PALETTEENTRY *pPal, *pPE;
- int i, nColors;
- BOOL bRet=TRUE;
- DWORD dwErr=0;
-
- /* Build a color table in the DIB that maps to the
- selected palette in the DC.
- */
- nColors = 1 << pwc->cColorBits;
- pPal = (PALETTEENTRY *)malloc( nColors * sizeof(PALETTEENTRY));
- memset( pPal, 0, nColors * sizeof(PALETTEENTRY) );
- GetPaletteEntries( pwc->hGLPalette, 0, nColors, pPal );
- pColTab = (RGBQUAD *)malloc( nColors * sizeof(RGBQUAD));
- for (i = 0, pRGB = pColTab, pPE = pPal; i < nColors; i++, pRGB++, pPE++) {
- pRGB->rgbRed = pPE->peRed;
- pRGB->rgbGreen = pPE->peGreen;
- pRGB->rgbBlue = pPE->peBlue;
- }
- if(pwc->db_flag)
- bRet = SetDIBColorTable(pwc->dib.hDC, 0, nColors, pColTab );
-
- if(!bRet)
- dwErr = GetLastError();
-
- free( pColTab );
- free( pPal );
-
- return(bRet);
-}
-
-
-//
-// Free up the dib section that was created
-//
-BOOL wmDeleteBackingStore(PWMC pwc)
-{
- SelectObject(pwc->dib.hDC, pwc->hOldBitmap);
- DeleteDC(pwc->dib.hDC);
- DeleteObject(pwc->hbmDIB);
- UnmapViewOfFile(pwc->dib.base);
- CloseHandle(pwc->dib.hFileMap);
- return TRUE;
-}
-
-
-//
-// This function creates the DIB section that is used for combined
-// GL and GDI calls
-//
-BOOL /*WINAPI*/ wmCreateBackingStore(PWMC pwc, long lxSize, long lySize)
-{
- HDC hdc = pwc->hDC;
- LPBITMAPINFO pbmi = &(pwc->bmi);
- int iUsage;
-
- pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- pbmi->bmiHeader.biWidth = lxSize;
- pbmi->bmiHeader.biHeight= -lySize;
- pbmi->bmiHeader.biPlanes = 1;
- if(pwc->rgb_flag)
- pbmi->bmiHeader.biBitCount = GetDeviceCaps(pwc->hDC, BITSPIXEL);
- else
- pbmi->bmiHeader.biBitCount = 8;
- pbmi->bmiHeader.biCompression = BI_RGB;
- pbmi->bmiHeader.biSizeImage = 0;
- pbmi->bmiHeader.biXPelsPerMeter = 0;
- pbmi->bmiHeader.biYPelsPerMeter = 0;
- pbmi->bmiHeader.biClrUsed = 0;
- pbmi->bmiHeader.biClrImportant = 0;
-
- iUsage = (pbmi->bmiHeader.biBitCount <= 8) ? DIB_PAL_COLORS : DIB_RGB_COLORS;
-
- pwc->cColorBits = pbmi->bmiHeader.biBitCount;
- pwc->ScanWidth = pwc->pitch = lxSize;
-
- wmCreateDIBSection(hdc, pwc, pbmi, iUsage);
-
- if ((iUsage == DIB_PAL_COLORS) && !(pwc->hGLPalette)) {
- wmCreatePalette( pwc );
- wmSetDibColors( pwc );
- }
- wmSetPixelFormat(pwc, pwc->hDC);
- return(TRUE);
-
-}
-
-
-//
-// This function copies one scan line in a DIB section to another
-//
-BOOL WINAPI wmSetDIBits(PWMC pwc, UINT uiScanWidth, UINT uiNumScans, UINT nBypp, UINT uiNewWidth, LPBYTE pBits)
-{
- UINT uiScans = 0;
- LPBYTE pDest = pwc->pbPixels;
- DWORD dwNextScan = uiScanWidth;
- DWORD dwNewScan = uiNewWidth;
- DWORD dwScanWidth = (uiScanWidth * nBypp);
-
- //
- // We need to round up to the nearest DWORD
- // and multiply by the number of bytes per
- // pixel
- //
- dwNextScan = (((dwNextScan * nBypp)+ 3) & ~3);
- dwNewScan = (((dwNewScan * nBypp)+ 3) & ~3);
-
- for(uiScans = 0; uiScans < uiNumScans; uiScans++){
- CopyMemory(pDest, pBits, dwScanWidth);
- pBits += dwNextScan;
- pDest += dwNewScan;
- }
-
- return(TRUE);
-
-}
-
-
-BOOL wmFlush(PWMC pwc);
-
-/*
-* Useful macros:
-Modified from file osmesa.c
-*/
-
-
-#define PIXELADDR(X,Y) ((GLubyte *)Current->pbPixels + (Current->height-Y-1)* Current->ScanWidth + (X)*nBypp)
-#define PIXELADDR1( X, Y ) \
-((GLubyte *)wmesa->pbPixels + (wmesa->height-Y-1)* wmesa->ScanWidth + (X))
-#define PIXELADDR2( X, Y ) \
-((GLubyte *)wmesa->pbPixels + (wmesa->height-Y-1)* wmesa->ScanWidth + (X)*2)
-#define PIXELADDR4( X, Y ) \
-((GLubyte *)wmesa->pbPixels + (wmesa->height-Y-1)* wmesa->ScanWidth + (X)*4)
-
-
-BYTE DITHER_RGB_2_8BIT( int r, int g, int b, int x, int y);
-
-/* Finish all pending operations and synchronize. */
-static void finish(GLcontext* ctx)
-{
- /* No op */
-}
-
-
-//
-// We cache all gl draw routines until a flush is made
-//
-static void flush(GLcontext* ctx)
-{
- STARTPROFILE
- if((Current->rgb_flag /*&& !(Current->dib.fFlushed)*/&&!(Current->db_flag))
- ||(!Current->rgb_flag))
- {
- wmFlush(Current);
- }
- ENDPROFILE(flush)
-
-}
-
-
-
-/*
-* Set the color index used to clear the color buffer.
-*/
-static void clear_index(GLcontext* ctx, GLuint index)
-{
- STARTPROFILE
- Current->clearpixel = index;
- ENDPROFILE(clear_index)
-}
-
-
-
-/*
-* Set the color used to clear the color buffer.
-*/
-static void clear_color( GLcontext* ctx, const GLchan color[4] )
-{
- STARTPROFILE
- Current->clearpixel = RGB(color[0], color[1], color[2]);
- ENDPROFILE(clear_color)
-}
-
-
-
-/*
-* Clear the specified region of the color buffer using the clear color
-* or index as specified by one of the two functions above.
-*/
-//static void clear(GLcontext* ctx,
-// GLboolean all,GLint x, GLint y, GLint width, GLint height )
-// TODO: I modified this function to match the prototype in
-// dd.h. (swansma@geocities.com)
-
-static GLbitfield clear(GLcontext* ctx, GLbitfield mask,
- GLboolean all, GLint x, GLint y, GLint width, GLint height)
-{
- DWORD dwColor;
- WORD wColor;
- BYTE bColor;
- LPDWORD lpdw = (LPDWORD)Current->pbPixels;
- LPWORD lpw = (LPWORD)Current->pbPixels;
- LPBYTE lpb = Current->pbPixels;
- int lines;
-
- STARTPROFILE
-
- if (all){
- x=y=0;
- width=Current->width;
- height=Current->height;
- }
- if(Current->db_flag==GL_TRUE){
- UINT nBypp = Current->cColorBits / 8;
- int i = 0;
- int iSize = 0;
-
- if(nBypp ==1 ){
- /* Need rectification */
- iSize = Current->width/4;
- bColor = BGR8(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- wColor = MAKEWORD(bColor,bColor);
- dwColor = MAKELONG(wColor, wColor);
- }
- if(nBypp == 2){
- iSize = Current->width / 2;
- wColor = BGR16(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- dwColor = MAKELONG(wColor, wColor);
- }
- else if(nBypp == 4){
- iSize = Current->width;
- dwColor = BGR32(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- }
-
- while(i < iSize){
- *lpdw = dwColor;
- lpdw++;
- i++;
- }
-
- //
- // This is the 24bit case
- //
- if (nBypp == 3) {
- iSize = Current->width *3/4;
- dwColor = BGR24(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- while(i < iSize){
- *lpdw = dwColor;
- lpb += nBypp;
- lpdw = (LPDWORD)lpb;
- i++;
- }
- }
-
- i = 0;
- if (stereo_flag)
- lines = height /2;
- else
- lines = height;
- do {
- memcpy(lpb, Current->pbPixels, iSize*4);
- lpb += Current->ScanWidth;
- i++;
- }
- while (i<lines-1);
- }
- else { // For single buffer
- HDC DC=DD_GETDC;
- HPEN Pen=CreatePen(PS_SOLID,1,Current->clearpixel);
- HBRUSH Brush=CreateSolidBrush(Current->clearpixel);
- HPEN Old_Pen=SelectObject(DC,Pen);
- HBRUSH Old_Brush=SelectObject(DC,Brush);
- Rectangle(DC,x,y,x+width,y+height);
- SelectObject(DC,Old_Pen);
- SelectObject(DC,Old_Brush);
- DeleteObject(Pen);
- DeleteObject(Brush);
- DD_RELEASEDC;
- }
-
-
-
- ENDPROFILE(clear)
-
- return mask; // TODO: I doubt this is correct. dd.h doesn't explain what this should
- // be...
-}
-
-
-
-static void enable( GLcontext* ctx, GLenum pname, GLboolean enable )
-{
- if (!Current)
- return;
-
- if (pname == GL_DITHER) {
- if(enable == GL_FALSE){
- Current->dither_flag = GL_FALSE;
- if(Current->cColorBits == 8)
- Current->pixelformat = PF_INDEX8;
- }
- else{
- if (Current->rgb_flag && Current->cColorBits == 8){
- Current->pixelformat = PF_DITHER8;
- Current->dither_flag = GL_TRUE;
- }
- else
- Current->dither_flag = GL_FALSE;
- }
- }
-}
-
-
-
-static GLboolean set_draw_buffer( GLcontext* ctx, GLenum mode )
-{
- STARTPROFILE
- /* TODO: this could be better */
- if (mode==GL_FRONT_LEFT || mode==GL_BACK_LEFT) {
- return GL_TRUE;
- }
- else {
- return GL_FALSE;
- }
- ENDPROFILE(set_draw_buffer)
-}
-
-
-static void set_read_buffer(GLcontext *ctx, GLframebuffer *colorBuffer,
- GLenum buffer )
-{
- /* XXX todo */
- return;
-}
-
-
-
-/* Return characteristics of the output buffer. */
-static void buffer_size( GLcontext* ctx, GLuint *width, GLuint *height )
-{
- int New_Size;
- RECT CR;
-
- STARTPROFILE
- GetClientRect(Current->Window,&CR);
-
- *width=CR.right;
- *height=CR.bottom;
-
- New_Size=((*width)!=Current->width) || ((*height)!=Current->height);
-
- if (New_Size){
- Current->width=*width;
- Current->height=*height;
- Current->ScanWidth=Current->width;
- if ((Current->ScanWidth%sizeof(long))!=0)
- Current->ScanWidth+=(sizeof(long)-(Current->ScanWidth%sizeof(long)));
-
- if (Current->db_flag){
-#ifdef DDRAW
- DDDeleteOffScreen(Current);
- DDCreateOffScreen(Current);
-#else
- if (Current->rgb_flag==GL_TRUE && Current->dither_flag!=GL_TRUE){
- wmDeleteBackingStore(Current);
- wmCreateBackingStore(Current, Current->width, Current->height);
- }
-#endif
- }
-
- // Resize OsmesaBuffer if in Parallel mode
-#if !defined(NO_PARALLEL)
- if(parallelFlag)
- PRSizeRenderBuffer(Current->width, Current->height,Current->ScanWidth,
- Current->rgb_flag == GL_TRUE ? Current->pbPixels: Current->ScreenMem);
-#endif
- }
- ENDPROFILE(buffer_size)
-}
-
-
-
-/**********************************************************************/
-/***** Accelerated point, line, polygon rendering *****/
-/**********************************************************************/
-
-
-static void fast_rgb_points( GLcontext* ctx, GLuint first, GLuint last )
-{
- GLuint i;
- // HDC DC=DD_GETDC;
- PWMC pwc = Current;
-
- STARTPROFILE
-
- if (0 /*Current->gl_ctx->VB->MonoColor*/) {
- /* all drawn with current color */
- for (i=first;i<=last;i++) {
- if (!Current->gl_ctx->VB->ClipMask[i]) {
- int x, y;
- x = (GLint) Current->gl_ctx->VB->Win.data[i][0];
- y = FLIP( (GLint) Current->gl_ctx->VB->Win.data[i][1] );
- wmSetPixel(pwc, y,x,GetRValue(Current->pixel),
- GetGValue(Current->pixel), GetBValue(Current->pixel));
- }
- }
- }
- else {
- /* draw points of different colors */
- for (i=first;i<=last;i++) {
- if (!Current->gl_ctx->VB->ClipMask[i]) {
- int x, y;
- unsigned long pixel=RGB(Current->gl_ctx->VB->ColorPtr->data[i][0]*255.0,
- Current->gl_ctx->VB->ColorPtr->data[i][1]*255.0,
- Current->gl_ctx->VB->ColorPtr->data[i][2]*255.0);
- x = (GLint) Current->gl_ctx->VB->Win.data[i][0];
- y = FLIP( (GLint) Current->gl_ctx->VB->Win.data[i][1] );
- wmSetPixel(pwc, y,x,Current->gl_ctx->VB->ColorPtr->data[i][0]*255.0,
- Current->gl_ctx->VB->ColorPtr->data[i][1]*255.0,
- Current->gl_ctx->VB->ColorPtr->data[i][2]*255.0);
- }
- }
- }
- // DD_RELEASEDC;
- ENDPROFILE(fast_rgb_points)
-}
-
-
-
-/* Return pointer to accerated points function */
-extern points_func choose_points_function( GLcontext* ctx )
-{
- STARTPROFILE
- if (ctx->Point.Size==1.0 && !ctx->Point.SmoothFlag && ctx->_RasterMask==0
- && !ctx->Texture._ReallyEnabled && ctx->Visual->RGBAflag) {
- ENDPROFILE(choose_points_function)
- return fast_rgb_points;
- }
- else {
- ENDPROFILE(choose_points_function)
- return NULL;
- }
-}
-
-
-
-/* Draw a line using the color specified by Current->gl_ctx->VB->ColorPtr->data[pv] */
-static void fast_flat_rgb_line( GLcontext* ctx, GLuint v0, GLuint v1, GLuint pv )
-{
- STARTPROFILE
- int x0, y0, x1, y1;
- unsigned long pixel;
- HDC DC=DD_GETDC;
- HPEN Pen;
- HPEN Old_Pen;
-
- if (0 /*Current->gl_ctx->VB->MonoColor*/) {
- pixel = Current->pixel; /* use current color */
- }
- else {
- pixel = RGB(Current->gl_ctx->VB->ColorPtr->data[pv][0]*255.0, Current->gl_ctx->VB->ColorPtr->data[pv][1]*255.0, Current->gl_ctx->VB->ColorPtr->data[pv][2]*255.0);
- }
-
- x0 = (int) Current->gl_ctx->VB->Win.data[v0][0];
- y0 = FLIP( (int) Current->gl_ctx->VB->Win.data[v0][1] );
- x1 = (int) Current->gl_ctx->VB->Win.data[v1][0];
- y1 = FLIP( (int) Current->gl_ctx->VB->Win.data[v1][1] );
-
-
- BEGINGDICALL
-
- Pen=CreatePen(PS_SOLID,1,pixel);
- Old_Pen=SelectObject(DC,Pen);
- MoveToEx(DC,x0,y0,NULL);
- LineTo(DC,x1,y1);
- SelectObject(DC,Old_Pen);
- DeleteObject(Pen);
- DD_RELEASEDC;
-
- ENDGDICALL
-
- ENDPROFILE(fast_flat_rgb_line)
-}
-
-
-
-/* Return pointer to accerated line function */
-static line_func choose_line_function( GLcontext* ctx )
-{
- STARTPROFILE
- if (ctx->Line.Width==1.0 && !ctx->Line.SmoothFlag && !ctx->Line.StippleFlag
- && ctx->Light.ShadeModel==GL_FLAT && ctx->_RasterMask==0
- && !ctx->Texture._ReallyEnabled && Current->rgb_flag) {
- ENDPROFILE(choose_line_function)
- return fast_flat_rgb_line;
- }
- else {
- ENDPROFILE(choose_line_function)
- return NULL;
- }
-}
-
-
-/**********************************************************************/
-/***** Span-based pixel drawing *****/
-/**********************************************************************/
-
-
-/* Write a horizontal span of 32-bit color-index pixels with a boolean mask. */
-static void write_ci32_span( const GLcontext* ctx,
- GLuint n, GLint x, GLint y,
- const GLuint index[],
- const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i]=index[i];
- ENDPROFILE(write_ci32_span)
-}
-
-
-/* Write a horizontal span of 8-bit color-index pixels with a boolean mask. */
-static void write_ci8_span( const GLcontext* ctx,
- GLuint n, GLint x, GLint y,
- const GLubyte index[],
- const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i]=index[i];
- ENDPROFILE(write_ci8_span)
-}
-
-
-
-/*
-* Write a horizontal span of pixels with a boolean mask. The current
-* color index is used for all pixels.
-*/
-static void write_mono_ci_span(const GLcontext* ctx,
- GLuint n,GLint x,GLint y,
- GLuint colorIndex, const GLubyte mask[])
-{
- STARTPROFILE
- GLuint i;
- BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i]=colorIndex;
- ENDPROFILE(write_mono_ci_span)
-}
-
-/*
- * To improve the performance of this routine, frob the data into an actual
- * scanline and call bitblt on the complete scan line instead of SetPixel.
- */
-
-/* Write a horizontal span of RGBA color pixels with a boolean mask. */
-static void write_rgba_span( const GLcontext* ctx, GLuint n, GLint x, GLint y,
- const GLubyte rgba[][4], const GLubyte mask[] )
-{
- STARTPROFILE
- PWMC pwc = Current;
-
- if (pwc->rgb_flag==GL_TRUE)
- {
- GLuint i;
- HDC DC=DD_GETDC;
- y=FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, y, x + i, rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]);
- }
- else {
- for (i=0; i<n; i++)
- wmSetPixel(pwc, y, x + i, rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] );
- }
- DD_RELEASEDC;
- }
- else
- {
- GLuint i;
- BYTE *Mem=Current->ScreenMem+y*Current->ScanWidth+x;
- y = FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]));
- }
- else {
- for (i=0; i<n; i++)
- Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]));
- }
- }
- ENDPROFILE(write_rgba_span)
-
-}
-
-/* Write a horizontal span of RGB color pixels with a boolean mask. */
-static void write_rgb_span( const GLcontext* ctx,
- GLuint n, GLint x, GLint y,
- const GLubyte rgb[][3], const GLubyte mask[] )
-{
- STARTPROFILE
- PWMC pwc = Current;
-
- if (pwc->rgb_flag==GL_TRUE)
- {
- GLuint i;
- HDC DC=DD_GETDC;
- y=FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, y, x + i, rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP]);
- }
- else {
- for (i=0; i<n; i++)
- wmSetPixel(pwc, y, x + i, rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP] );
- }
- DD_RELEASEDC;
- }
- else
- {
- GLuint i;
- BYTE *Mem=Current->ScreenMem+y*Current->ScanWidth+x;
- y = FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP]));
- }
- else {
- for (i=0; i<n; i++)
- Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP]));
- }
- }
- ENDPROFILE(write_rgb_span)
-
-}
-
-/*
-* Write a horizontal span of pixels with a boolean mask. The current color
-* is used for all pixels.
-*/
-static void write_mono_rgba_span( const GLcontext* ctx,
- GLuint n, GLint x, GLint y,
- const GLchan color[4], const GLubyte mask[])
-{
- ULONG pixel = RGB( color[RCOMP], color[GCOMP], color[BCOMP] );
- STARTPROFILE
- GLuint i;
- HDC DC=DD_GETDC;
- PWMC pwc = Current;
- assert(Current->rgb_flag==GL_TRUE);
- y=FLIP(y);
- if(Current->rgb_flag==GL_TRUE){
- for (i=0; i<n; i++)
- if (mask[i])
- // Trying
- wmSetPixel(pwc,y,x+i,color[RCOMP], color[GCOMP], color[BCOMP]);
- }
- else {
- for (i=0; i<n; i++)
- if (mask[i])
- SetPixel(DC, y, x+i, pixel);
- }
- DD_RELEASEDC;
- ENDPROFILE(write_mono_rgba_span)
-}
-
-
-
-/**********************************************************************/
-/***** Array-based pixel drawing *****/
-/**********************************************************************/
-
-
-/* Write an array of 32-bit index pixels with a boolean mask. */
-static void write_ci32_pixels( const GLcontext* ctx,
- GLuint n, const GLint x[], const GLint y[],
- const GLuint index[], const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- BYTE *Mem=Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i];
- *Mem = index[i];
- }
- }
- ENDPROFILE(write_ci32_pixels)
-}
-
-
-
-/*
-* Write an array of pixels with a boolean mask. The current color
-* index is used for all pixels.
-*/
-static void write_mono_ci_pixels( const GLcontext* ctx,
- GLuint n,
- const GLint x[], const GLint y[],
- GLuint colorIndex, const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- BYTE *Mem=Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i];
- *Mem = colorIndex;
- }
- }
- ENDPROFILE(write_mono_ci_pixels)
-}
-
-
-
-/* Write an array of RGBA pixels with a boolean mask. */
-static void write_rgba_pixels( const GLcontext* ctx,
- GLuint n, const GLint x[], const GLint y[],
- const GLubyte rgba[][4], const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- PWMC pwc = Current;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, FLIP(y[i]), x[i],
- rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]);
- DD_RELEASEDC;
- ENDPROFILE(write_rgba_pixels)
-}
-
-
-
-/*
-* Write an array of pixels with a boolean mask. The current color
-* is used for all pixels.
-*/
-static void write_mono_rgba_pixels( const GLcontext* ctx,
- GLuint n,
- const GLint x[], const GLint y[],
- const GLchan color[4],
- const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- PWMC pwc = Current;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, FLIP(y[i]),x[i],color[RCOMP],
- color[GCOMP], color[BCOMP]);
- DD_RELEASEDC;
- ENDPROFILE(write_mono_rgba_pixels)
-}
-
-
-
-/**********************************************************************/
-/***** Read spans/arrays of pixels *****/
-/**********************************************************************/
-
-
-/* Read a horizontal span of color-index pixels. */
-static void read_ci32_span( const GLcontext* ctx, GLuint n, GLint x, GLint y,
- GLuint index[])
-{
- STARTPROFILE
- GLuint i;
- BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- index[i]=Mem[i];
- ENDPROFILE(read_ci32_span)
-}
-
-
-
-
-/* Read an array of color index pixels. */
-static void read_ci32_pixels( const GLcontext* ctx,
- GLuint n, const GLint x[], const GLint y[],
- GLuint indx[], const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- indx[i]=*(Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i]);
- }
- }
- ENDPROFILE(read_ci32_pixels)
-}
-
-
-
-/* Read a horizontal span of color pixels. */
-static void read_rgba_span( const GLcontext* ctx,
- GLuint n, GLint x, GLint y,
- GLubyte rgba[][4] )
-{
- STARTPROFILE
- UINT i;
- COLORREF Color;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- /* y=FLIP(y);*/
- y = Current->height - y - 1;
- for (i=0; i<n; i++) {
- Color=GetPixel(DC,x+i,y);
- rgba[i][RCOMP] = GetRValue(Color);
- rgba[i][GCOMP] = GetGValue(Color);
- rgba[i][BCOMP] = GetBValue(Color);
- rgba[i][ACOMP] = 255;
- }
- DD_RELEASEDC;
-// Brian P. Has mentioned to comment this out.
-// memset(alpha,0,n*sizeof(GLubyte));
- ENDPROFILE(read_rgba_span)
-}
-
-
-/* Read an array of color pixels. */
-static void read_rgba_pixels( const GLcontext* ctx,
- GLuint n, const GLint x[], const GLint y[],
- GLubyte rgba[][4], const GLubyte mask[] )
-{
- STARTPROFILE
- GLuint i;
- COLORREF Color;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- GLint y2 = Current->height - y[i] - 1;
- Color=GetPixel(DC,x[i],y2);
- rgba[i][RCOMP] = GetRValue(Color);
- rgba[i][GCOMP] = GetGValue(Color);
- rgba[i][BCOMP] = GetBValue(Color);
- rgba[i][ACOMP] = 255;
- }
- }
- DD_RELEASEDC;
-// Brian P. has mentioned to comment this out.
-// memset(alpha,0,n*sizeof(GLint));
- ENDPROFILE(read_rgba_pixels)
-}
-
-
-
-/**********************************************************************/
-/**********************************************************************/
-
-
-static const GLubyte *get_string(GLcontext *ctx, GLenum name)
-{
- if (name == GL_RENDERER) {
- return (GLubyte *) "Mesa Windows";
- }
- else {
- return NULL;
- }
-}
-
-
-
-void setup_DD_pointers( GLcontext* ctx )
-{
- ctx->Driver.GetString = get_string;
- ctx->Driver.UpdateState = setup_DD_pointers;
- ctx->Driver.GetBufferSize = buffer_size;
- ctx->Driver.Finish = finish;
- ctx->Driver.Flush = flush;
-
- ctx->Driver.ClearIndex = clear_index;
- ctx->Driver.ClearColor = clear_color;
- ctx->Driver.Clear = clear;
-
- ctx->Driver.Enable = enable;
-
- ctx->Driver.SetDrawBuffer = set_draw_buffer;
- ctx->Driver.SetReadBuffer = set_read_buffer;
- ctx->Driver.GetBufferSize = buffer_size;
-
- ctx->Driver.PointsFunc = choose_points_function(ctx);
- ctx->Driver.LineFunc = choose_line_function(ctx);
- ctx->Driver.TriangleFunc = choose_triangle_function( ctx );
-
- /* Pixel/span writing functions: */
- ctx->Driver.WriteRGBASpan = write_rgba_span;
- ctx->Driver.WriteRGBSpan = write_rgb_span;
- ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span;
- ctx->Driver.WriteRGBAPixels = write_rgba_pixels;
- ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels;
- ctx->Driver.WriteCI32Span = write_ci32_span;
- ctx->Driver.WriteCI8Span = write_ci8_span;
- ctx->Driver.WriteMonoCISpan = write_mono_ci_span;
- ctx->Driver.WriteCI32Pixels = write_ci32_pixels;
- ctx->Driver.WriteMonoCIPixels = write_mono_ci_pixels;
-
- ctx->Driver.ReadCI32Span = read_ci32_span;
- ctx->Driver.ReadRGBASpan = read_rgba_span;
- ctx->Driver.ReadCI32Pixels = read_ci32_pixels;
- ctx->Driver.ReadRGBAPixels = read_rgba_pixels;
-}
-
-
-/**********************************************************************/
-/***** WMesa API Functions *****/
-/**********************************************************************/
-
-
-
-#define PAL_SIZE 256
-static void GetPalette(HPALETTE Pal,RGBQUAD *aRGB)
-{
- STARTPROFILE
- int i;
- HDC hdc;
- struct
- {
- WORD Version;
- WORD NumberOfEntries;
- PALETTEENTRY aEntries[PAL_SIZE];
- } Palette =
- {
- 0x300,
- PAL_SIZE
- };
- hdc=GetDC(NULL);
- if (Pal!=NULL)
- GetPaletteEntries(Pal,0,PAL_SIZE,Palette.aEntries);
- else
- GetSystemPaletteEntries(hdc,0,PAL_SIZE,Palette.aEntries);
- if (GetSystemPaletteUse(hdc) == SYSPAL_NOSTATIC)
- {
- for(i = 0; i <PAL_SIZE; i++)
- Palette.aEntries[i].peFlags = PC_RESERVED;
- Palette.aEntries[255].peRed = 255;
- Palette.aEntries[255].peGreen = 255;
- Palette.aEntries[255].peBlue = 255;
- Palette.aEntries[255].peFlags = 0;
- Palette.aEntries[0].peRed = 0;
- Palette.aEntries[0].peGreen = 0;
- Palette.aEntries[0].peBlue = 0;
- Palette.aEntries[0].peFlags = 0;
- }
- else
- {
- int nStaticColors;
- int nUsableColors;
- nStaticColors = GetDeviceCaps(hdc, NUMCOLORS)/2;
- for (i=0; i<nStaticColors; i++)
- Palette.aEntries[i].peFlags = 0;
- nUsableColors = PAL_SIZE-nStaticColors;
- for (; i<nUsableColors; i++)
- Palette.aEntries[i].peFlags = PC_RESERVED;
- for (; i<PAL_SIZE-nStaticColors; i++)
- Palette.aEntries[i].peFlags = PC_RESERVED;
- for (i=PAL_SIZE-nStaticColors; i<PAL_SIZE; i++)
- Palette.aEntries[i].peFlags = 0;
- }
- ReleaseDC(NULL,hdc);
- for (i=0; i<PAL_SIZE; i++)
- {
- aRGB[i].rgbRed=Palette.aEntries[i].peRed;
- aRGB[i].rgbGreen=Palette.aEntries[i].peGreen;
- aRGB[i].rgbBlue=Palette.aEntries[i].peBlue;
- aRGB[i].rgbReserved=Palette.aEntries[i].peFlags;
- }
- ENDPROFILE(GetPalette)
-}
-
-
-WMesaContext WMesaCreateContext( HWND hWnd, HPALETTE* Pal,
- GLboolean rgb_flag,
- GLboolean db_flag )
-{
- RECT CR;
- WMesaContext c;
- GLboolean true_color_flag;
- c = (struct wmesa_context * ) calloc(1,sizeof(struct wmesa_context));
- if (!c)
- return NULL;
-
- c->Window=hWnd;
- c->hDC = GetDC(hWnd);
- true_color_flag = GetDeviceCaps(c->hDC, BITSPIXEL) > 8;
-#ifdef DDRAW
- if(true_color_flag) c->rgb_flag = rgb_flag = GL_TRUE;
-#endif
-
-
-#ifdef DITHER
- if ((true_color_flag==GL_FALSE) && (rgb_flag == GL_TRUE)){
- c->dither_flag = GL_TRUE;
- c->hPalHalfTone = WinGCreateHalftonePalette();
- }
- else
- c->dither_flag = GL_FALSE;
-#else
- c->dither_flag = GL_FALSE;
-#endif
-
-
- if (rgb_flag==GL_FALSE)
- {
- c->rgb_flag = GL_FALSE;
- // c->pixel = 1;
- c->db_flag = db_flag =GL_TRUE; // WinG requires double buffering
- printf("Single buffer is not supported in color index mode, setting to double buffer.\n");
- }
- else
- {
- c->rgb_flag = GL_TRUE;
- // c->pixel = 0;
- }
- GetClientRect(c->Window,&CR);
- c->width=CR.right;
- c->height=CR.bottom;
- if (db_flag)
- {
- c->db_flag = 1;
- /* Double buffered */
-#ifndef DDRAW
- // if (c->rgb_flag==GL_TRUE && c->dither_flag != GL_TRUE )
- {
- wmCreateBackingStore(c, c->width, c->height);
-
- }
-#endif
- }
- else
- {
- /* Single Buffered */
- if (c->rgb_flag)
- c->db_flag = 0;
- }
-#ifdef DDRAW
- if (DDInit(c,hWnd) == GL_FALSE) {
- free( (void *) c );
- exit(1);
- }
-#endif
-
-
- c->gl_visual = _mesa_create_visual(rgb_flag,
- db_flag, /* db_flag */
- GL_FALSE, /* stereo */
- 8,8,8,8, /* r, g, b, a bits */
- 0, /* index bits */
- 16, /* depth_bits */
- 8, /* stencil_bits */
- 16,16,16,16,/* accum_bits */
- 1);
-
- if (!c->gl_visual) {
- return NULL;
- }
-
- /* allocate a new Mesa context */
- c->gl_ctx = _mesa_create_context( c->gl_visual, NULL, c, GL_TRUE);
-
- if (!c->gl_ctx) {
- _mesa_destroy_visual( c->gl_visual );
- free(c);
- return NULL;
- }
-
- _mesa_enable_sw_extensions(c->gl_ctx);
-
- c->gl_buffer = _mesa_create_framebuffer( c->gl_visual,
- c->gl_visual->DepthBits > 0,
- c->gl_visual->StencilBits > 0,
- c->gl_visual->AccumRedBits > 0,
- c->gl_visual->AlphaBits > 0 );
- if (!c->gl_buffer) {
- _mesa_destroy_visual( c->gl_visual );
- _mesa_destroy_context( c->gl_ctx );
- free(c);
- return NULL;
- }
-
- c->gl_ctx->Driver.UpdateState = setup_DD_pointers;
-
- // setup_DD_pointers(c->gl_ctx);
-
- return c;
-}
-
-void WMesaDestroyContext( void )
-{
- WMesaContext c = Current;
- ReleaseDC(c->Window,c->hDC);
- WC = c;
- if(c->hPalHalfTone != NULL)
- DeleteObject(c->hPalHalfTone);
- _mesa_destroy_visual( c->gl_visual );
- _mesa_destroy_framebuffer( c->gl_buffer );
- _mesa_destroy_context( c->gl_ctx );
-
- if (c->db_flag)
-#ifdef DDRAW
- DDFree(c);
-#else
- wmDeleteBackingStore(c);
-#endif
- free( (void *) c );
- //Following code is added to enable parallel render
- // Parallel render only work in double buffer mode
-#if !defined(NO_PARALLEL)
- if(parallelMachine)
- PRDestroyRenderBuffer();
-#endif
- // End modification
-}
-
-
-
-void /*APIENTRY*/ WMesaMakeCurrent( WMesaContext c )
-{
- if(!c){
- Current = c;
- return;
- }
-
- //
- // A little optimization
- // If it already is current,
- // don't set it again
- //
- if(Current == c)
- return;
-
- //gl_set_context( c->gl_ctx );
- _mesa_make_current(c->gl_ctx, c->gl_buffer);
- setup_DD_pointers(c->gl_ctx);
- Current = c;
- if (Current->gl_ctx->Viewport.Width==0) {
- /* initialize viewport to window size */
- _mesa_set_viewport( Current->gl_ctx,
- 0, 0, Current->width, Current->height );
- }
- if ((c->cColorBits <= 8 ) && (c->rgb_flag == GL_TRUE)){
- WMesaPaletteChange(c->hPalHalfTone);
- }
-}
-
-
-
-void /*APIENTRY*/ WMesaSwapBuffers( void )
-{
- HDC DC = Current->hDC;
- GET_CURRENT_CONTEXT(ctx);
-
- /* If we're swapping the buffer associated with the current context
- * we have to flush any pending rendering commands first.
- */
- if (Current && Current->gl_ctx == ctx)
- _mesa_swapbuffers(ctx);
-
- if (Current->db_flag)
- wmFlush(Current);
-}
-
-
-
-void /*APIENTRY*/ WMesaPaletteChange(HPALETTE Pal)
-{
- int vRet;
- LPPALETTEENTRY pPal;
- if (Current && (Current->rgb_flag==GL_FALSE || Current->dither_flag == GL_TRUE))
- {
- pPal = (PALETTEENTRY *)malloc( 256 * sizeof(PALETTEENTRY));
- Current->hPal=Pal;
- // GetPaletteEntries( Pal, 0, 256, pPal );
- GetPalette( Pal, pPal );
-#ifdef DDRAW
- Current->lpDD->lpVtbl->CreatePalette(Current->lpDD,DDPCAPS_8BIT,
- pPal, &(Current->lpDDPal), NULL);
- if (Current->lpDDPal)
- Current->lpDDSPrimary->lpVtbl->SetPalette(Current->lpDDSPrimary,Current->lpDDPal);
-#else
- vRet = SetDIBColorTable(Current->dib.hDC,0,256,pPal);
-#endif
- free( pPal );
- }
-
-}
-
-
-
-
-static unsigned char threeto8[8] = {
- 0, 0111>>1, 0222>>1, 0333>>1, 0444>>1, 0555>>1, 0666>>1, 0377
-};
-
-static unsigned char twoto8[4] = {
- 0, 0x55, 0xaa, 0xff
-};
-
-static unsigned char oneto8[2] = {
- 0, 255
-};
-
-static unsigned char componentFromIndex(UCHAR i, UINT nbits, UINT shift)
-{
- unsigned char val;
-
- val = i >> shift;
- switch (nbits) {
-
- case 1:
- val &= 0x1;
- return oneto8[val];
-
- case 2:
- val &= 0x3;
- return twoto8[val];
-
- case 3:
- val &= 0x7;
- return threeto8[val];
-
- default:
- return 0;
- }
-}
-
-void /*WINAPI*/ wmCreatePalette( PWMC pwdc )
-{
- /* Create a compressed and re-expanded 3:3:2 palette */
- int i;
- LOGPALETTE *pPal;
- BYTE rb, rs, gb, gs, bb, bs;
-
- pwdc->nColors = 0x100;
-
- pPal = (PLOGPALETTE)malloc(sizeof(LOGPALETTE) + pwdc->nColors * sizeof(PALETTEENTRY));
- memset( pPal, 0, sizeof(LOGPALETTE) + pwdc->nColors * sizeof(PALETTEENTRY) );
-
- pPal->palVersion = 0x300;
-
- rb = REDBITS;
- rs = REDSHIFT;
- gb = GREENBITS;
- gs = GREENSHIFT;
- bb = BLUEBITS;
- bs = BLUESHIFT;
-
- if (pwdc->db_flag) {
-
- /* Need to make two palettes: one for the screen DC and one for the DIB. */
- pPal->palNumEntries = pwdc->nColors;
- for (i = 0; i < pwdc->nColors; i++) {
- pPal->palPalEntry[i].peRed = componentFromIndex( i, rb, rs );
- pPal->palPalEntry[i].peGreen = componentFromIndex( i, gb, gs );
- pPal->palPalEntry[i].peBlue = componentFromIndex( i, bb, bs );
- pPal->palPalEntry[i].peFlags = 0;
- }
- pwdc->hGLPalette = CreatePalette( pPal );
- pwdc->hPalette = CreatePalette( pPal );
- }
-
- else {
- pPal->palNumEntries = pwdc->nColors;
- for (i = 0; i < pwdc->nColors; i++) {
- pPal->palPalEntry[i].peRed = componentFromIndex( i, rb, rs );
- pPal->palPalEntry[i].peGreen = componentFromIndex( i, gb, gs );
- pPal->palPalEntry[i].peBlue = componentFromIndex( i, bb, bs );
- pPal->palPalEntry[i].peFlags = 0;
- }
- pwdc->hGLPalette = CreatePalette( pPal );
- }
-
- free(pPal);
-
-}
-
-void /*WINAPI*/ wmSetPixel(PWMC pwc, int iScanLine, int iPixel, BYTE r, BYTE g, BYTE b)
-{
- if (Current->db_flag) {
- LPBYTE lpb = pwc->pbPixels;
- LPDWORD lpdw;
- LPWORD lpw;
- UINT nBypp = pwc->cColorBits >> 3;
- UINT nOffset = iPixel % nBypp;
-
- // Move the pixel buffer pointer to the scanline that we
- // want to access
-
- // pwc->dib.fFlushed = FALSE;
-
- lpb += pwc->ScanWidth * iScanLine;
- // Now move to the desired pixel
- lpb += iPixel * nBypp;
- lpb = PIXELADDR(iPixel, iScanLine);
- lpdw = (LPDWORD)lpb;
- lpw = (LPWORD)lpb;
-
- if(nBypp == 1){
- if(pwc->dither_flag)
- *lpb = DITHER_RGB_2_8BIT(r,g,b,iScanLine,iPixel);
- else
- *lpb = BGR8(r,g,b);
- }
- else if(nBypp == 2)
- *lpw = BGR16(r,g,b);
- else if (nBypp == 3){
- *lpdw = BGR24(r,g,b);
- }
- else if (nBypp == 4)
- *lpdw = BGR32(r,g,b);
- }
- else{
- SetPixel(Current->hDC, iPixel, iScanLine, RGB(r,g,b));
- DD_RELEASEDC;
- }
-}
-
-void /*WINAPI*/ wmCreateDIBSection(
- HDC hDC,
- PWMC pwc, // handle of device context
- CONST BITMAPINFO *pbmi, // address of structure containing bitmap size, format, and color data
- UINT iUsage // color data type indicator: RGB values or palette indices
- )
-{
- DWORD dwSize = 0;
- DWORD dwScanWidth;
- UINT nBypp = pwc->cColorBits / 8;
- HDC hic;
-
- dwScanWidth = (((pwc->ScanWidth * nBypp)+ 3) & ~3);
-
- pwc->ScanWidth =pwc->pitch = dwScanWidth;
-
- if (stereo_flag)
- pwc->ScanWidth = 2* pwc->pitch;
-
- dwSize = sizeof(BITMAPINFO) + (dwScanWidth * pwc->height);
-
- pwc->dib.hFileMap = CreateFileMapping((HANDLE)PAGE_FILE,
- NULL,
- PAGE_READWRITE | SEC_COMMIT,
- 0,
- dwSize,
- NULL);
-
- if (!pwc->dib.hFileMap)
- return;
-
- pwc->dib.base = MapViewOfFile(pwc->dib.hFileMap,
- FILE_MAP_ALL_ACCESS,
- 0,
- 0,
- 0);
-
- if(!pwc->dib.base){
- CloseHandle(pwc->dib.hFileMap);
- return;
- }
-
- // pwc->pbPixels = pwc->addrOffScreen = ((LPBYTE)pwc->dib.base) + sizeof(BITMAPINFO);
-
- // pwc->dib.hDC = CreateCompatibleDC(hDC);
-
- CopyMemory(pwc->dib.base, pbmi, sizeof(BITMAPINFO));
-
- hic = CreateIC("display", NULL, NULL, NULL);
- pwc->dib.hDC = CreateCompatibleDC(hic);
-
-
- /* pwc->hbmDIB = CreateDIBitmap(hic,
- &(pwc->bmi.bmiHeader),
- CBM_INIT,
- pwc->pbPixels,
- &(pwc->bmi),
- DIB_RGB_COLORS);
- */
- pwc->hbmDIB = CreateDIBSection(hic,
- &(pwc->bmi),
- (iUsage ? DIB_PAL_COLORS : DIB_RGB_COLORS),
- &(pwc->pbPixels),
- pwc->dib.hFileMap,
- 0);
- /*
- pwc->hbmDIB = CreateDIBSection(hic,
- &(pwc->bmi),
- DIB_RGB_COLORS,
- &(pwc->pbPixels),
- pwc->dib.hFileMap,
- 0);
- */
- pwc->ScreenMem = pwc->addrOffScreen = pwc->pbPixels;
- pwc->hOldBitmap = SelectObject(pwc->dib.hDC, pwc->hbmDIB);
-
- DeleteDC(hic);
-
- return;
-
-}
-
-//
-// Blit memory DC to screen DC
-//
-BOOL /*WINAPI*/ wmFlush(PWMC pwc)
-{
- BOOL bRet = 0;
- DWORD dwErr = 0;
-#ifdef DDRAW
- HRESULT ddrval;
-#endif
-
- // Now search through the torus frames and mark used colors
- if(pwc->db_flag){
-#ifdef DDRAW
- if (pwc->lpDDSOffScreen == NULL)
- if(DDCreateOffScreen(pwc) == GL_FALSE)
- return;
-
- pwc->lpDDSOffScreen->lpVtbl->Unlock(pwc->lpDDSOffScreen, NULL);
-
- while( 1 )
- {
- ddrval = pwc->lpDDSPrimary->lpVtbl->Blt( pwc->lpDDSPrimary,
- &(pwc->rectSurface), pwc->lpDDSOffScreen, &(pwc->rectOffScreen), 0, NULL );
-
- if( ddrval == DD_OK )
- {
- break;
- }
- if( ddrval == DDERR_SURFACELOST )
- {
- if(!DDRestoreAll(pwc))
- {
- break;
- }
- }
- if( ddrval != DDERR_WASSTILLDRAWING )
- {
- break;
- }
- }
-
- while (pwc->lpDDSOffScreen->lpVtbl->Lock(pwc->lpDDSOffScreen,
- NULL, &(pwc->ddsd), 0, NULL) == DDERR_WASSTILLDRAWING)
- ;
-
- if(ddrval != DD_OK)
- dwErr = GetLastError();
-#else
- bRet = BitBlt(pwc->hDC, 0, 0, pwc->width, pwc->height,
- pwc->dib.hDC, 0, 0, SRCCOPY);
-#endif
- }
-
- return(TRUE);
-
-}
-
-
-// The following code is added by Li Wei to enable stereo display
-
-#if !defined(NO_STEREO)
-
-void WMesaShowStereo(GLuint list)
-{
-
- GLbitfield mask = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT;
- GLfloat cm[16];
- GLint matrix_mode;
- // Must use double Buffer
- if( ! Current-> db_flag )
- return;
-
-
- glGetIntegerv(GL_MATRIX_MODE,&matrix_mode);
-
- // glPushMatrix(); //****
- WMesaViewport(Current->gl_ctx,0,Current->height/2,Current->width,Current->height/2);
- // Current->gl_ctx->NewState = 0;
-
- // glViewport(0,0,Current->width,Current->height/2);
- if(matrix_mode!=GL_MODELVIEW)
- glMatrixMode(GL_MODELVIEW);
-
- glGetFloatv(GL_MODELVIEW_MATRIX,cm);
- glLoadIdentity();
- gluLookAt(viewDistance/2,0.0,0.0 ,
- viewDistance/2,0.0,-1.0,
- 0.0,1.0,0.0 );
- // glTranslatef(viewDistance/2.0,0.,0.);
- glMultMatrixf( cm );
-
- Current->ScreenMem = Current->pbPixels = Current->addrOffScreen;
- //glPushMatrix();
- glCallList( list );
- //glPopMatrix();
-
- glGetFloatv(GL_MODELVIEW_MATRIX,cm);
- glLoadIdentity();
- gluLookAt(-viewDistance/2,0.0,0.0 ,
- -viewDistance/2,0.0,-1.0,
- 0.0,1.0,0.0 );
- // glTranslatef(-viewDistance/2.0,0.,0.);
- glMultMatrixf(cm);
-
- Current->ScreenMem = Current->pbPixels = Current->addrOffScreen + Current->pitch;
- glCallList(list);
- if(matrix_mode!=GL_MODELVIEW)
- glMatrixMode(matrix_mode);
-
- // glPopMatrix();
- glFlush();
-
- WMesaViewport(Current->gl_ctx,0,0,Current->width,Current->height);
- // Current->gl_ctx->NewState = 0;
- WMesaSwapBuffers();
-
-}
-
-void toggleStereoMode()
-{
- if(!Current->db_flag)
- return;
- if(!stereo_flag){
- stereo_flag = 1;
- if(stereoBuffer==GL_FALSE)
-#if !defined(NO_PARALLEL)
- if(!parallelFlag)
-#endif
- {
- Current->ScanWidth = Current->pitch*2;
- }
- }
- else {
- stereo_flag = 0;
-#if !defined(NO_PARALLEL)
- if(!parallelFlag)
-#endif
- Current->ScanWidth = Current->pitch;
- Current->pbPixels = Current->addrOffScreen;
- }
-}
-
-/* if in stereo mode, the following function is called */
-void glShowStereo(GLuint list)
-{
- WMesaShowStereo(list);
-}
-
-#endif // End if NO_STEREO not defined
-
-#if !defined(NO_PARALLEL)
-
-void toggleParallelMode(void)
-{
- if(!parallelFlag){
- parallelFlag = GL_TRUE;
- if(parallelMachine==GL_FALSE){
- PRCreateRenderBuffer( Current->rgb_flag? GL_RGBA :GL_COLOR_INDEX,
- Current->cColorBits/8,
- Current->width ,Current->height,
- Current->ScanWidth,
- Current->rgb_flag? Current->pbPixels: Current->ScreenMem);
- parallelMachine = GL_TRUE;
- }
- }
- else {
- parallelFlag = GL_FALSE;
- if(parallelMachine==GL_TRUE){
- PRDestroyRenderBuffer();
- parallelMachine=GL_FALSE;
- ReadyForNextFrame = GL_TRUE;
- }
-
- /***********************************************
- // Seems something wrong!!!!
- ************************************************/
-
- WMesaMakeCurrent(Current);
-#if !defined(NO_STEREO)
- stereo_flag = GL_FALSE ;
-#endif
- }
-}
-
-void PRShowRenderResult(void)
-{
- int flag = 0;
- if(!glImageRendered())
- return;
-
- if (parallelFlag)
- {
- WMesaSwapBuffers();
- }
-
-}
-#endif //End if NO_PARALLEL not defined
-
-//end modification
-
-BYTE DITHER_RGB_2_8BIT( int red, int green, int blue, int pixel, int scanline)
-{
- char unsigned redtemp, greentemp, bluetemp, paletteindex;
-
- //*** now, look up each value in the halftone matrix
- //*** using an 8x8 ordered dither.
- redtemp = aDividedBy51[red]
- + (aModulo51[red] > aHalftone8x8[(pixel%8)*8
- + scanline%8]);
- greentemp = aDividedBy51[(char unsigned)green]
- + (aModulo51[green] > aHalftone8x8[
- (pixel%8)*8 + scanline%8]);
- bluetemp = aDividedBy51[(char unsigned)blue]
- + (aModulo51[blue] > aHalftone8x8[
- (pixel%8)*8 +scanline%8]);
-
- //*** recombine the halftoned rgb values into a palette index
- paletteindex =
- redtemp + aTimes6[greentemp] + aTimes36[bluetemp];
-
- //*** and translate through the wing halftone palette
- //*** translation vector to give the correct value.
- return aWinGHalftoneTranslation[paletteindex];
-}
-
-#ifdef DDRAW
-/*
-* restoreAll
-*
-* restore all lost objects
-*/
-HRESULT DDRestoreAll( WMesaContext wc )
-{
- HRESULT ddrval;
-
- ddrval = wc->lpDDSPrimary->lpVtbl->Restore(wc->lpDDSPrimary);
- if( ddrval == DD_OK )
- {
- ddrval = wc->lpDDSOffScreen->lpVtbl->Restore(wc->lpDDSOffScreen);
- }
- return ddrval;
-
-} /* restoreAll */
-
-
- /*
- * This function is called if the initialization function fails
-*/
-BOOL initFail( HWND hwnd, WMesaContext wc )
-{
- DDFree(wc);
- MessageBox( hwnd, "DirectDraw Init FAILED", "", MB_OK );
- return FALSE;
-
-} /* initFail */
-
-
-static void DDDeleteOffScreen(WMesaContext wc)
-{
- if( wc->lpDDSOffScreen != NULL )
- {
- wc->lpDDSOffScreen->lpVtbl->Unlock(wc->lpDDSOffScreen,NULL);
- wc->lpDDSOffScreen->lpVtbl->Release(wc->lpDDSOffScreen);
- wc->lpDDSOffScreen = NULL;
- }
-
-}
-
-static void DDFreePrimarySurface(WMesaContext wc)
-{
- if( wc->lpDDSPrimary != NULL )
- {
- if(wc->db_flag == GL_FALSE)
- wc->lpDDSPrimary->lpVtbl->ReleaseDC(wc->lpDDSPrimary, wc->hDC);
- wc->lpDDSPrimary->lpVtbl->Release(wc->lpDDSPrimary);
- wc->lpDDSPrimary = NULL;
- }
-}
-
-static BOOL DDCreatePrimarySurface(WMesaContext wc)
-{
- HRESULT ddrval;
- DDSCAPS ddscaps;
- wc->ddsd.dwSize = sizeof( wc->ddsd );
- wc->ddsd.dwFlags = DDSD_CAPS;
- wc->ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
-
- ddrval = wc->lpDD->lpVtbl->CreateSurface( wc->lpDD,&(wc->ddsd), &(wc->lpDDSPrimary), NULL );
- if( ddrval != DD_OK )
- {
- return initFail(wc->hwnd , wc);
- }
- if(wc->db_flag == GL_FALSE)
- wc->lpDDSPrimary->lpVtbl->GetDC(wc->lpDDSPrimary, wc->hDC);
- return TRUE;
-}
-
-static BOOL DDCreateOffScreen(WMesaContext wc)
-{
- POINT pt;
- HRESULT ddrval;
- if(wc->lpDD == NULL)
- return FALSE;
- GetClientRect( wc->hwnd, &(wc->rectOffScreen) );
- wc->ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
- wc->ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
- wc->ddsd.dwHeight = wc->rectOffScreen.bottom - wc->rectOffScreen.top;
- wc->ddsd.dwWidth = wc->rectOffScreen.right - wc->rectOffScreen.left;
-
- ddrval = wc->lpDD->lpVtbl->CreateSurface( wc->lpDD, &(wc->ddsd), &(wc->lpDDSOffScreen), NULL );
- if( ddrval != DD_OK )
- {
- return FALSE;
- }
-
- while (wc->lpDDSOffScreen->lpVtbl->Lock(wc->lpDDSOffScreen,NULL, &(wc->ddsd), 0, NULL) == DDERR_WASSTILLDRAWING)
- ;
- // while ((ddrval = wc->lpDDSOffScreen->lpVtbl->Lock(wc->lpDDSOffScreen,NULL, &(wc->ddsd), DDLOCK_SURFACEMEMORYPTR , NULL)) != DD_OK)
- ;
- if(wc->ddsd.lpSurface==NULL)
- return initFail(wc->hwnd, wc);
-
- wc->ScreenMem = wc->pbPixels = wc->addrOffScreen = (PBYTE)(wc->ddsd.lpSurface);
- wc->ScanWidth = wc->pitch = wc->ddsd.lPitch;
- if (stereo_flag)
- wc->ScanWidth = wc->ddsd.lPitch*2;
-
- GetClientRect( wc->hwnd, &(wc->rectSurface) );
- pt.x = pt.y = 0;
- ClientToScreen( wc->hwnd, &pt );
- OffsetRect(&(wc->rectSurface), pt.x, pt.y);
- wmSetPixelFormat(wc, wc->hDC);
- return TRUE;
-}
-
-/*
-* doInit - do work required for every instance of the application:
-* create the window, initialize data
-*/
-static BOOL DDInit( WMesaContext wc, HWND hwnd)
-{
- HRESULT ddrval;
- DWORD dwFrequency;
-
- LPDIRECTDRAW lpDD; // DirectDraw object
- LPDIRECTDRAW2 lpDD2;
-
-
- wc->fullScreen = displayOptions.fullScreen;
- wc->gMode = displayOptions.mode;
- wc->hwnd = hwnd;
- stereo_flag = displayOptions.stereo;
- if(wc->db_flag!= GL_TRUE)
- stereo_flag = GL_FALSE;
- /*
- * create the main DirectDraw object
- */
- ddrval = DirectDrawCreate( NULL, &(wc->lpDD), NULL );
- if( ddrval != DD_OK )
- {
- return initFail(hwnd,wc);
- }
-
- // Get exclusive mode if requested
- if(wc->fullScreen)
- {
- ddrval = wc->lpDD->lpVtbl->SetCooperativeLevel( wc->lpDD, hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
- }
- else
- {
- ddrval = wc->lpDD->lpVtbl->SetCooperativeLevel( wc->lpDD, hwnd, DDSCL_NORMAL );
- }
- if( ddrval != DD_OK )
- {
- return initFail(hwnd , wc);
- }
-
-
- /* ddrval = wc->lpDD->lpVtbl->QueryInterface(wc->lpDD, IID_IDirectDraw2,
- (LPVOID *)((wc->lpDD2)));
-
- */
- if(ddrval != DD_OK)
- return initFail(hwnd , wc);
-
-
- //ddrval = wc->lpDD->lpVtbl->GetDisplayMode( wc->lpDD, &(wc->ddsd));
- // wc->lpDD2->lpVtbl->GetMonitorFrequency(wc->lpDD, &dwFrequency);
- switch( wc->gMode )
- {
- case 1: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 640, 480, displayOptions.bpp); break;
- case 2: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 800, 600, displayOptions.bpp); break;
- case 3: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 1024, 768, displayOptions.bpp); break;
- case 4: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 1152, 864, displayOptions.bpp); break;
- case 5: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 1280, 1024, displayOptions.bpp); break;
- }
-
- if( ddrval != DD_OK )
- {
- printf("Can't modify display mode, current mode used\n");
- // return initFail(hwnd , wc);
- }
- //ddrval = wc->lpDD->lpVtbl->GetDisplayMode( wc->lpDD, &(wc->ddsd));
- switch(ddrval){
- case DDERR_INVALIDOBJECT:
- break;
- case DDERR_INVALIDPARAMS:
- break;
- case DDERR_UNSUPPORTEDMODE:
- ;
- }
-
- if(DDCreatePrimarySurface(wc) == GL_FALSE)
- return initFail(hwnd, wc);
-
- if(wc->db_flag)
- return DDCreateOffScreen(wc);
-} /* DDInit */
-
-static void DDFree( WMesaContext wc)
-{
- if( wc->lpDD != NULL )
- {
- DDFreePrimarySurface(wc);
- DDDeleteOffScreen(wc);
- wc->lpDD->lpVtbl->Release(wc->lpDD);
- wc->lpDD = NULL;
- }
- // Clean up the screen on exit
- RedrawWindow( NULL, NULL, NULL, RDW_INVALIDATE | RDW_ERASE |
- RDW_ALLCHILDREN );
-
-}
-#endif
-
-void WMesaMove(void)
-{
- WMesaContext wc = Current;
- POINT pt;
- if (Current != NULL){
- GetClientRect( wc->hwnd, &(wc->rectSurface) );
- pt.x = pt.y = 0;
- ClientToScreen( wc->hwnd, &pt );
- OffsetRect(&(wc->rectSurface), pt.x, pt.y);
- }
-}
-
-
-
-/*
-* Like PACK_8A8B8G8R() but don't use alpha. This is usually an acceptable
-* shortcut.
-*/
-#define PACK_8B8G8R( R, G, B ) ( ((B) << 16) | ((G) << 8) | (R) )
-
-
-/**********************************************************************/
-/*** Triangle rendering ***/
-/**********************************************************************/
-
-/*
- * XImage, smooth, depth-buffered, PF_8A8B8G8R triangle.
- */
-static void smooth_8A8B8G8R_z_triangle( GLcontext *ctx,
- GLuint v0, GLuint v1, GLuint v2,
- GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = PACK_8B8G8R( FixedToInt(ffr), FixedToInt(ffg), \
- FixedToInt(ffb) ); \
- zRow[i] = z; \
- } \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- ffz += fdzdx; \
- } \
- }
-
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, smooth, depth-buffered, PF_8R8G8B triangle.
-*/
-static void smooth_8R8G8B_z_triangle( GLcontext *ctx,
- GLuint v0, GLuint v1, GLuint v2,
- GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = PACK_8R8G8B( FixedToInt(ffr), FixedToInt(ffg), \
- FixedToInt(ffb) ); \
- zRow[i] = z; \
- } \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-
-/*
-* XImage, smooth, depth-buffered, PF_5R6G5B triangle.
-*/
-static void smooth_5R6G5B_z_triangle( GLcontext *ctx,
- GLuint v0, GLuint v1, GLuint v2,
- GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)
-#define PIXEL_TYPE GLushort
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = PACK_5R6G5B( FixedToInt(ffr), FixedToInt(ffg), \
- FixedToInt(ffb) ); \
- zRow[i] = z; \
- } \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-/*
-* XImage, flat, depth-buffered, PF_8A8B8G8R triangle.
-*/
-static void flat_8A8B8G8R_z_triangle( GLcontext *ctx, GLuint v0,
- GLuint v1, GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- unsigned long p = PACK_8B8G8R( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = p; \
- zRow[i] = z; \
- } \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, flat, depth-buffered, PF_8R8G8B triangle.
-*/
-static void flat_8R8G8B_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- unsigned long p = PACK_8R8G8B( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = p; \
- zRow[i] = z; \
- } \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, flat, depth-buffered, PF_5R6G5B triangle.
-*/
-static void flat_5R6G5B_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)
-#define PIXEL_TYPE GLushort
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- unsigned long p = PACK_5R6G5B( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = p; \
- zRow[i] = z; \
- } \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, smooth, NON-depth-buffered, PF_8A8B8G8R triangle.
-*/
-static void smooth_8A8B8G8R_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = PACK_8B8G8R( FixedToInt(ffr), FixedToInt(ffg), \
- FixedToInt(ffb) ); \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, smooth, NON-depth-buffered, PF_8R8G8B triangle.
-*/
-static void smooth_8R8G8B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = PACK_8R8G8B( FixedToInt(ffr), FixedToInt(ffg), \
- FixedToInt(ffb) ); \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, smooth, NON-depth-buffered, PF_5R6G5B triangle.
-*/
-static void smooth_5R6G5B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)
-#define PIXEL_TYPE GLushort
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = PACK_5R6G5B( FixedToInt(ffr), FixedToInt(ffg), \
- FixedToInt(ffb) ); \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-
-/*
-* XImage, flat, NON-depth-buffered, PF_8A8B8G8R triangle.
-*/
-static void flat_8A8B8G8R_triangle( GLcontext *ctx, GLuint v0,
- GLuint v1, GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- unsigned long p = PACK_8B8G8R( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = p; \
- } \
- }
-
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, flat, NON-depth-buffered, PF_8R8G8B triangle.
-*/
-static void flat_8R8G8B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)
-#define PIXEL_TYPE GLuint
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- unsigned long p = PACK_8R8G8B( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = p; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, flat, NON-depth-buffered, PF_5R6G5B triangle.
-*/
-static void flat_5R6G5B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)
-#define PIXEL_TYPE GLushort
- //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- unsigned long p = PACK_5R6G5B( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = p; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, smooth, depth-buffered, 8-bit PF_LOOKUP triangle.
-*/
-
-static void smooth_ci_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define INTERP_INDEX 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = FixedToInt(ffi); \
- zRow[i] = z; \
- } \
- ffi += fdidx; \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, flat, depth-buffered, 8-bit PF_LOOKUP triangle.
-*/
-
-static void flat_ci_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- GLuint index = VB->IndexPtr->data[pv]; \
- (*ctx->Driver.Index)( ctx, index );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, len = RIGHT-LEFT; \
- for (i=0;i<len;i++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = index; \
- zRow[i] = z; \
- } \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-
-/*
-* XImage, smooth, NON-depth-buffered, 8-bit PF_LOOKUP triangle.
-*/
-
-static void smooth_ci_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define INTERP_INDEX 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = FixedToInt(ffi); \
- ffi += fdidx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-/*
-* XImage, flat, NON-depth-buffered, 8-bit PF_LOOKUP triangle.
-*/
-static void flat_ci_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
-#define INTERP_Z 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define SETUP_CODE \
- GLuint index = VB->IndexPtr->data[pv]; \
- (*ctx->Driver.Index)( ctx, index );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx; \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- *pixel = index; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-/*
-* XImage, smooth, depth-buffered, 8-bit, PF_DITHER8 triangle.
-*/
-static void smooth_DITHER8_z_triangle( GLcontext *ctx,
- GLuint v0, GLuint v1, GLuint v2,
- GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
- DITHER_RGB_TO_8BIT_SETUP
-#define INTERP_Z 1
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, xx = LEFT, yy = FLIP(Y), len = RIGHT-LEFT; \
- for (i=0;i<len;i++,xx++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- DITHER_RGB_TO_8BIT( FixedToInt(ffr), FixedToInt(ffg), \
- FixedToInt(ffb), xx, yy); \
- pRow[i] = pixelDithered; \
- zRow[i] = z; \
- } \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-/*
-* XImage, flat, depth-buffered, 8-bit PF_DITHER triangle.
-*/
-static void flat_DITHER8_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
- DITHER_RGB_TO_8BIT_SETUP
-#define INTERP_Z 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint i, xx = LEFT, yy = FLIP(Y), len = RIGHT-LEFT; \
- for (i=0;i<len;i++,xx++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- DITHER_RGB_TO_8BIT( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2], xx, yy); \
- pRow[i] = pixelDithered; \
- zRow[i] = z; \
- } \
- ffz += fdzdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-/*
-* XImage, smooth, NON-depth-buffered, 8-bit PF_DITHER triangle.
-*/
-static void smooth_DITHER8_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
- DITHER_RGB_TO_8BIT_SETUP
-#define INTERP_RGB 1
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx, yy = FLIP(Y); \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- DITHER_RGB_TO_8BIT( VB->ColorPtr->data[pv][0], VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2], xx, yy);\
- *pixel = pixelDithered; \
- ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-/*
-* XImage, flat, NON-depth-buffered, 8-bit PF_DITHER triangle.
-*/
-
-static void flat_DITHER8_triangle( GLcontext *ctx, GLuint v0, GLuint v1,
- GLuint v2, GLuint pv )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
- DITHER_RGB_TO_8BIT_SETUP
-#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)
-#define PIXEL_TYPE GLubyte
-#define BYTES_PER_ROW (wmesa->ScanWidth)
-
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
- { \
- GLint xx, yy = FLIP(Y); \
- PIXEL_TYPE *pixel = pRow; \
- for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- DITHER_RGB_TO_8BIT( VB->ColorPtr->data[pv][0], \
- VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2], xx, yy); \
- *pixel = pixelDithered; \
- } \
- }
-#ifdef __MINGW32__
- #include "tritemp.h"
-#else
-
- #ifdef WIN32
- #include "..\tritemp.h"
- #else
- #include "tritemp.h"
- #endif
-#endif
-}
-
-
-
-
-static triangle_func choose_triangle_function( GLcontext *ctx )
-{
- WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;
- int depth = wmesa->cColorBits;
-
- if (ctx->Polygon.SmoothFlag) return NULL;
- if (ctx->Texture._ReallyEnabled) return NULL;
- if (!wmesa->db_flag) return NULL;
- /*if (wmesa->xm_buffer->buffer==XIMAGE)*/ {
- if ( ctx->Light.ShadeModel==GL_SMOOTH
- && ctx->_RasterMask==DEPTH_BIT
- && ctx->Depth.Func==GL_LESS
- && ctx->Depth.Mask==GL_TRUE
- && ctx->Polygon.StippleFlag==GL_FALSE) {
- switch (wmesa->pixelformat) {
- case PF_8A8B8G8R:
- return smooth_8A8B8G8R_z_triangle;
- case PF_8R8G8B:
- return smooth_8R8G8B_z_triangle;
- case PF_5R6G5B:
- return smooth_5R6G5B_z_triangle;
- case PF_DITHER8:
- return smooth_DITHER8_z_triangle;
- case PF_INDEX8:
- return smooth_ci_z_triangle;
- default:
- return NULL;
- }
- }
- if ( ctx->Light.ShadeModel==GL_FLAT
- && ctx->_RasterMask==DEPTH_BIT
- && ctx->Depth.Func==GL_LESS
- && ctx->Depth.Mask==GL_TRUE
- && ctx->Polygon.StippleFlag==GL_FALSE) {
- switch (wmesa->pixelformat) {
- case PF_8A8B8G8R:
- return flat_8A8B8G8R_z_triangle;
- case PF_8R8G8B:
- return flat_8R8G8B_z_triangle;
- case PF_5R6G5B:
- return flat_5R6G5B_z_triangle;
- case PF_DITHER8:
- return flat_DITHER8_z_triangle;
- case PF_INDEX8:
- return flat_ci_z_triangle;
- default:
- return NULL;
- }
- }
- if ( ctx->_RasterMask==0 /* no depth test */
- && ctx->Light.ShadeModel==GL_SMOOTH
- && ctx->Polygon.StippleFlag==GL_FALSE) {
- switch (wmesa->pixelformat) {
- case PF_8A8B8G8R:
- return smooth_8A8B8G8R_triangle;
- case PF_8R8G8B:
- return smooth_8R8G8B_triangle;
- case PF_5R6G5B:
- return smooth_5R6G5B_triangle;
- case PF_DITHER8:
- return smooth_DITHER8_triangle;
- case PF_INDEX8:
- return smooth_ci_triangle;
- default:
- return NULL;
- }
- }
-
- if ( ctx->_RasterMask==0 /* no depth test */
- && ctx->Light.ShadeModel==GL_FLAT
- && ctx->Polygon.StippleFlag==GL_FALSE) {
- switch (wmesa->pixelformat) {
- case PF_8A8B8G8R:
- return flat_8A8B8G8R_triangle;
- case PF_8R8G8B:
- return flat_8R8G8B_triangle;
- case PF_5R6G5B:
- return flat_5R6G5B_triangle;
- case PF_DITHER8:
- return flat_DITHER8_triangle;
- case PF_INDEX8:
- return flat_ci_triangle;
- default:
- return NULL;
- }
- }
-
- return NULL;
- }
-}
-
-/*
-* Define a new viewport and reallocate auxillary buffers if the size of
-* the window (color buffer) has changed.
-*/
-void WMesaViewport( GLcontext *ctx,
- GLint x, GLint y, GLsizei width, GLsizei height )
-{
- /* Save viewport */
- ctx->Viewport.X = x;
- ctx->Viewport.Width = width;
- ctx->Viewport.Y = y;
- ctx->Viewport.Height = height;
-
- /* compute scale and bias values */
-/* Pre-Keith 3.1 changes
- ctx->Viewport.Map.m[Sx] = (GLfloat) width / 2.0F;
- ctx->Viewport.Map.m[Tx] = ctx->Viewport.Sx + x;
- ctx->Viewport.Map.m[Sy] = (GLfloat) height / 2.0F;
- ctx->Viewport.Map.m[Ty] = ctx->Viewport.Sy + y;
-*/
- ctx->Viewport.WindowMap.m[MAT_SX] = (GLfloat) width / 2.0F;
- ctx->Viewport.WindowMap.m[MAT_TX] = ctx->Viewport.WindowMap.m[MAT_SX] + x;
- ctx->Viewport.WindowMap.m[MAT_SY] = (GLfloat) height / 2.0F;
- ctx->Viewport.WindowMap.m[MAT_TY] = ctx->Viewport.WindowMap.m[MAT_SY] + y;
-}
+/* $Id: wmesa.c,v 1.18 2001/09/14 22:19:19 brianp Exp $ */\r
+\r
+/*\r
+ * Windows (Win32) device driver for Mesa 3.4\r
+ *\r
+ * Original author:\r
+ *\r
+ * Copyright (C) 1996- Li Wei\r
+ * Address : Institute of Artificial Intelligence\r
+ * : & Robotics\r
+ * : Xi'an Jiaotong University\r
+ * Email : liwei@aiar.xjtu.edu.cn\r
+ * Web page : http://sun.aiar.xjtu.edu.cn\r
+ *\r
+ * This file and its associations are partially borrowed from the\r
+ * Windows NT driver for Mesa 1.8 , written by Mark Leaming\r
+ * (mark@rsinc.com).\r
+ */\r
+\r
+\r
+#define WMESA_STEREO_C\r
+\r
+#include <windows.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <GL/wmesa.h>\r
+#include "mesa_extend.h"\r
+#include "colors.h"\r
+#include "macros.h"\r
+#include "context.h"\r
+#include "dd.h"\r
+//#include "xform.h"\r
+//#include "vb.h"\r
+#include "matrix.h"\r
+#include "depth.h"\r
+#include "wmesadef.h"\r
+\r
+#pragma warning ( disable : 4100 4133 4761 )\r
+\r
+#ifdef PROFILE\r
+// #include "profile.h"\r
+#endif\r
+\r
+#ifdef DITHER\r
+#include <wing.h>\r
+#endif\r
+\r
+#ifdef __CYGWIN32__\r
+#include "macros.h"\r
+#include <string.h>\r
+#define CopyMemory memcpy\r
+#endif\r
+\r
+#if !defined(NO_STEREO)\r
+\r
+#include "gl\glu.h"\r
+#include "stereo.h"\r
+\r
+#endif\r
+#if !defined(NO_PARALLEL)\r
+ #include "parallel.h"\r
+#endif\r
+\r
+struct DISPLAY_OPTIONS displayOptions;\r
+\r
+GLenum stereoCompile = GL_FALSE ;\r
+GLenum stereoShowing = GL_FALSE ;\r
+GLenum stereoBuffer = GL_FALSE;\r
+#if !defined(NO_STEREO)\r
+GLint displayList = MAXIMUM_DISPLAY_LIST ;\r
+#endif\r
+GLint stereo_flag = 0 ;\r
+\r
+/* end of added code*/\r
+\r
+static PWMC Current = NULL;\r
+WMesaContext WC = NULL;\r
+\r
+#ifdef NDEBUG\r
+#define assert(ignore) ((void) 0)\r
+#else\r
+void Mesa_Assert(void *Cond,void *File,unsigned Line)\r
+{\r
+ char Msg[512];\r
+ sprintf(Msg,"%s %s %d",Cond,File,Line);\r
+ MessageBox(NULL,Msg,"Assertion failed.",MB_OK);\r
+ exit(1);\r
+}\r
+#define assert(e) if (!e) Mesa_Assert(#e,__FILE__,__LINE__);\r
+#endif\r
+\r
+//#define DD_GETDC (Current->hDC )\r
+#define DD_GETDC ((Current->db_flag) ? Current->dib.hDC : Current->hDC )\r
+//#define DD_GETDC ((Current->db_flag) ? Current->hDCPrimary : Current->hDCBack )\r
+#define DD_RELEASEDC\r
+\r
+//#define BEGINGDICALL if(Current->rgb_flag)wmFlushBits(Current);\r
+#define BEGINGDICALL\r
+//#define ENDGDICALL if(Current->rgb_flag)wmGetBits(Current);\r
+#define ENDGDICALL\r
+\r
+//#define FLIP(Y) (Current->dither_flag? Y : Current->height-(Y)-1)\r
+//#define FLIP(Y) (Current->height-(Y)-1)\r
+//#define FLIP(Y) Y\r
+/*\r
+ * XXX Why only flip Y coord if single buffered???\r
+ */\r
+#define FLIP(Y) (Current->db_flag? Y: Current->height-(Y)-1)\r
+#define STARTPROFILE\r
+#define ENDPROFILE(PARA)\r
+\r
+#define DITHER_RGB_TO_8BIT_SETUP \\r
+GLubyte pixelDithered;\r
+\r
+#define DITHER_RGB_TO_8BIT(red, green, blue, pixel, scanline) \\r
+{ \\r
+ char unsigned redtemp, greentemp, bluetemp, paletteindex; \\r
+ redtemp = aDividedBy51[red] \\r
+ + (aModulo51[red] > aHalftone8x8[(pixel%8)*8 \\r
+ + scanline%8]); \\r
+ greentemp = aDividedBy51[(char unsigned)green] \\r
+ + (aModulo51[green] > aHalftone8x8[ \\r
+ (pixel%8)*8 + scanline%8]); \\r
+ bluetemp = aDividedBy51[(char unsigned)blue] \\r
+ + (aModulo51[blue] > aHalftone8x8[ \\r
+ (pixel%8)*8 +scanline%8]); \\r
+ paletteindex = redtemp + aTimes6[greentemp] + aTimes36[bluetemp]; \\r
+ pixelDithered = aWinGHalftoneTranslation[paletteindex]; \\r
+}\r
+\r
+\r
+#ifdef DDRAW\r
+static BOOL DDInit( WMesaContext wc, HWND hwnd);\r
+static void DDFree( WMesaContext wc);\r
+static HRESULT DDRestoreAll( WMesaContext wc );\r
+static void DDDeleteOffScreen(WMesaContext wc);\r
+static BOOL DDCreateOffScreen(WMesaContext wc);\r
+#endif\r
+\r
+static void FlushToFile(PWMC pwc, PSTR szFile);\r
+\r
+BOOL wmCreateBackingStore(PWMC pwc, long lxSize, long lySize);\r
+BOOL wmDeleteBackingStore(PWMC pwc);\r
+void wmCreatePalette( PWMC pwdc );\r
+BOOL wmSetDibColors(PWMC pwc);\r
+void wmSetPixel(PWMC pwc, int iScanLine, int iPixel, BYTE r, BYTE g, BYTE b);\r
+\r
+void wmCreateDIBSection(\r
+ HDC hDC,\r
+ PWMC pwc, // handle of device context\r
+ CONST BITMAPINFO *pbmi, // address of structure containing bitmap size, format, and color data\r
+ UINT iUsage // color data type indicator: RGB values or palette indices\r
+ );\r
+\r
+\r
+void WMesaViewport( GLcontext *ctx,\r
+ GLint x, GLint y, GLsizei width, GLsizei height );\r
+\r
+\r
+//static triangle_func choose_triangle_function( GLcontext *ctx );\r
+\r
+\r
+static void wmSetPixelFormat( PWMC wc, HDC hDC)\r
+{\r
+ if(wc->rgb_flag)\r
+ wc->cColorBits = GetDeviceCaps(hDC, BITSPIXEL);\r
+ else\r
+ wc->cColorBits = 8;\r
+ switch(wc->cColorBits){\r
+ case 8:\r
+ if(wc->dither_flag != GL_TRUE)\r
+ wc->pixelformat = PF_INDEX8;\r
+ else\r
+ wc->pixelformat = PF_DITHER8;\r
+ break;\r
+ case 16:\r
+ wc->pixelformat = PF_5R6G5B;\r
+ break;\r
+ case 32:\r
+ wc->pixelformat = PF_8R8G8B;\r
+ break;\r
+ default:\r
+ wc->pixelformat = PF_BADFORMAT;\r
+ }\r
+}\r
+\r
+//\r
+// This function sets the color table of a DIB section\r
+// to match that of the destination DC\r
+//\r
+BOOL /*WINAPI*/ wmSetDibColors(PWMC pwc)\r
+{\r
+ RGBQUAD *pColTab, *pRGB;\r
+ PALETTEENTRY *pPal, *pPE;\r
+ int i, nColors;\r
+ BOOL bRet=TRUE;\r
+ DWORD dwErr=0;\r
+\r
+ /* Build a color table in the DIB that maps to the\r
+ selected palette in the DC.\r
+ */\r
+ nColors = 1 << pwc->cColorBits;\r
+ pPal = (PALETTEENTRY *)malloc( nColors * sizeof(PALETTEENTRY));\r
+ memset( pPal, 0, nColors * sizeof(PALETTEENTRY) );\r
+ GetPaletteEntries( pwc->hGLPalette, 0, nColors, pPal );\r
+ pColTab = (RGBQUAD *)malloc( nColors * sizeof(RGBQUAD));\r
+ for (i = 0, pRGB = pColTab, pPE = pPal; i < nColors; i++, pRGB++, pPE++) {\r
+ pRGB->rgbRed = pPE->peRed;\r
+ pRGB->rgbGreen = pPE->peGreen;\r
+ pRGB->rgbBlue = pPE->peBlue;\r
+ }\r
+ if(pwc->db_flag)\r
+ bRet = SetDIBColorTable(pwc->dib.hDC, 0, nColors, pColTab );\r
+\r
+ if(!bRet)\r
+ dwErr = GetLastError();\r
+\r
+ free( pColTab );\r
+ free( pPal );\r
+\r
+ return(bRet);\r
+}\r
+\r
+\r
+//\r
+// Free up the dib section that was created\r
+//\r
+BOOL wmDeleteBackingStore(PWMC pwc)\r
+{\r
+ SelectObject(pwc->dib.hDC, pwc->hOldBitmap);\r
+ DeleteDC(pwc->dib.hDC);\r
+ DeleteObject(pwc->hbmDIB);\r
+ UnmapViewOfFile(pwc->dib.base);\r
+ CloseHandle(pwc->dib.hFileMap);\r
+ return TRUE;\r
+}\r
+\r
+\r
+//\r
+// This function creates the DIB section that is used for combined\r
+// GL and GDI calls\r
+//\r
+BOOL /*WINAPI*/ wmCreateBackingStore(PWMC pwc, long lxSize, long lySize)\r
+{\r
+ HDC hdc = pwc->hDC;\r
+ LPBITMAPINFO pbmi = &(pwc->bmi);\r
+ int iUsage;\r
+\r
+ pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
+ pbmi->bmiHeader.biWidth = lxSize;\r
+ pbmi->bmiHeader.biHeight= -lySize;\r
+ pbmi->bmiHeader.biPlanes = 1;\r
+ if(pwc->rgb_flag)\r
+ pbmi->bmiHeader.biBitCount = GetDeviceCaps(pwc->hDC, BITSPIXEL);\r
+ else\r
+ pbmi->bmiHeader.biBitCount = 8;\r
+ pbmi->bmiHeader.biCompression = BI_RGB;\r
+ pbmi->bmiHeader.biSizeImage = 0;\r
+ pbmi->bmiHeader.biXPelsPerMeter = 0;\r
+ pbmi->bmiHeader.biYPelsPerMeter = 0;\r
+ pbmi->bmiHeader.biClrUsed = 0;\r
+ pbmi->bmiHeader.biClrImportant = 0;\r
+\r
+ iUsage = (pbmi->bmiHeader.biBitCount <= 8) ? DIB_PAL_COLORS : DIB_RGB_COLORS;\r
+\r
+ pwc->cColorBits = pbmi->bmiHeader.biBitCount;\r
+ pwc->ScanWidth = pwc->pitch = lxSize;\r
+\r
+ wmCreateDIBSection(hdc, pwc, pbmi, iUsage);\r
+\r
+ if ((iUsage == DIB_PAL_COLORS) && !(pwc->hGLPalette)) {\r
+ wmCreatePalette( pwc );\r
+ wmSetDibColors( pwc );\r
+ }\r
+ wmSetPixelFormat(pwc, pwc->hDC);\r
+ return(TRUE);\r
+\r
+}\r
+\r
+\r
+//\r
+// This function copies one scan line in a DIB section to another\r
+//\r
+BOOL WINAPI wmSetDIBits(PWMC pwc, UINT uiScanWidth, UINT uiNumScans, UINT nBypp, UINT uiNewWidth, LPBYTE pBits)\r
+{\r
+ UINT uiScans = 0;\r
+ LPBYTE pDest = pwc->pbPixels;\r
+ DWORD dwNextScan = uiScanWidth;\r
+ DWORD dwNewScan = uiNewWidth;\r
+ DWORD dwScanWidth = (uiScanWidth * nBypp);\r
+\r
+ //\r
+ // We need to round up to the nearest DWORD\r
+ // and multiply by the number of bytes per\r
+ // pixel\r
+ //\r
+ dwNextScan = (((dwNextScan * nBypp)+ 3) & ~3);\r
+ dwNewScan = (((dwNewScan * nBypp)+ 3) & ~3);\r
+\r
+ for(uiScans = 0; uiScans < uiNumScans; uiScans++){\r
+ CopyMemory(pDest, pBits, dwScanWidth);\r
+ pBits += dwNextScan;\r
+ pDest += dwNewScan;\r
+ }\r
+\r
+ return(TRUE);\r
+\r
+}\r
+\r
+\r
+BOOL wmFlush(PWMC pwc);\r
+\r
+/*\r
+* Useful macros:\r
+Modified from file osmesa.c\r
+*/\r
+\r
+\r
+#define PIXELADDR(X,Y) ((GLubyte *)Current->pbPixels + (Current->height-Y-1)* Current->ScanWidth + (X)*nBypp)\r
+#define PIXELADDR1( X, Y ) \\r
+((GLubyte *)wmesa->pbPixels + (wmesa->height-Y-1)* wmesa->ScanWidth + (X))\r
+#define PIXELADDR2( X, Y ) \\r
+((GLubyte *)wmesa->pbPixels + (wmesa->height-Y-1)* wmesa->ScanWidth + (X)*2)\r
+#define PIXELADDR4( X, Y ) \\r
+((GLubyte *)wmesa->pbPixels + (wmesa->height-Y-1)* wmesa->ScanWidth + (X)*4)\r
+\r
+\r
+BYTE DITHER_RGB_2_8BIT( int r, int g, int b, int x, int y);\r
+\r
+/* Finish all pending operations and synchronize. */\r
+static void finish(GLcontext* ctx)\r
+{\r
+ /* No op */\r
+}\r
+\r
+\r
+//\r
+// We cache all gl draw routines until a flush is made\r
+//\r
+static void flush(GLcontext* ctx)\r
+{\r
+ STARTPROFILE\r
+ if((Current->rgb_flag /*&& !(Current->dib.fFlushed)*/&&!(Current->db_flag))\r
+ ||(!Current->rgb_flag))\r
+ {\r
+ wmFlush(Current);\r
+ }\r
+ ENDPROFILE(flush)\r
+\r
+}\r
+\r
+\r
+\r
+/*\r
+* Set the color index used to clear the color buffer.\r
+*/\r
+static void clear_index(GLcontext* ctx, GLuint index)\r
+{\r
+ STARTPROFILE\r
+ Current->clearpixel = index;\r
+ ENDPROFILE(clear_index)\r
+}\r
+\r
+\r
+\r
+/*\r
+* Set the color used to clear the color buffer.\r
+*/\r
+static void clear_color( GLcontext* ctx, const GLchan color[4] )\r
+{\r
+ STARTPROFILE\r
+ Current->clearpixel = RGB(color[0], color[1], color[2]);\r
+ ENDPROFILE(clear_color)\r
+}\r
+\r
+\r
+\r
+/*\r
+* Clear the specified region of the color buffer using the clear color\r
+* or index as specified by one of the two functions above.\r
+*/\r
+//static void clear(GLcontext* ctx,\r
+// GLboolean all,GLint x, GLint y, GLint width, GLint height )\r
+// TODO: I modified this function to match the prototype in\r
+// dd.h. (swansma@geocities.com)\r
+\r
+static GLbitfield clear(GLcontext* ctx, GLbitfield mask,\r
+ GLboolean all, GLint x, GLint y, GLint width, GLint height)\r
+{\r
+ DWORD dwColor;\r
+ WORD wColor;\r
+ BYTE bColor;\r
+ LPDWORD lpdw = (LPDWORD)Current->pbPixels;\r
+ LPWORD lpw = (LPWORD)Current->pbPixels;\r
+ LPBYTE lpb = Current->pbPixels;\r
+ int lines;\r
+\r
+ STARTPROFILE\r
+\r
+ if (all){\r
+ x=y=0;\r
+ width=Current->width;\r
+ height=Current->height;\r
+ }\r
+ if(Current->db_flag==GL_TRUE){\r
+ UINT nBypp = Current->cColorBits / 8;\r
+ int i = 0;\r
+ int iSize = 0;\r
+\r
+ if(nBypp ==1 ){\r
+ /* Need rectification */\r
+ iSize = Current->width/4;\r
+ bColor = BGR8(GetRValue(Current->clearpixel),\r
+ GetGValue(Current->clearpixel),\r
+ GetBValue(Current->clearpixel));\r
+ wColor = MAKEWORD(bColor,bColor);\r
+ dwColor = MAKELONG(wColor, wColor);\r
+ }\r
+ if(nBypp == 2){\r
+ iSize = Current->width / 2;\r
+ wColor = BGR16(GetRValue(Current->clearpixel),\r
+ GetGValue(Current->clearpixel),\r
+ GetBValue(Current->clearpixel));\r
+ dwColor = MAKELONG(wColor, wColor);\r
+ }\r
+ else if(nBypp == 4){\r
+ iSize = Current->width;\r
+ dwColor = BGR32(GetRValue(Current->clearpixel),\r
+ GetGValue(Current->clearpixel),\r
+ GetBValue(Current->clearpixel));\r
+ }\r
+\r
+ while(i < iSize){\r
+ *lpdw = dwColor;\r
+ lpdw++;\r
+ i++;\r
+ }\r
+\r
+ //\r
+ // This is the 24bit case\r
+ //\r
+ if (nBypp == 3) {\r
+ iSize = Current->width *3/4;\r
+ dwColor = BGR24(GetRValue(Current->clearpixel),\r
+ GetGValue(Current->clearpixel),\r
+ GetBValue(Current->clearpixel));\r
+ while(i < iSize){\r
+ *lpdw = dwColor;\r
+ lpb += nBypp;\r
+ lpdw = (LPDWORD)lpb;\r
+ i++;\r
+ }\r
+ }\r
+\r
+ i = 0;\r
+ if (stereo_flag)\r
+ lines = height /2;\r
+ else\r
+ lines = height;\r
+ do {\r
+ memcpy(lpb, Current->pbPixels, iSize*4);\r
+ lpb += Current->ScanWidth;\r
+ i++;\r
+ }\r
+ while (i<lines-1);\r
+ }\r
+ else { // For single buffer\r
+ HDC DC=DD_GETDC;\r
+ HPEN Pen=CreatePen(PS_SOLID,1,Current->clearpixel);\r
+ HBRUSH Brush=CreateSolidBrush(Current->clearpixel);\r
+ HPEN Old_Pen=SelectObject(DC,Pen);\r
+ HBRUSH Old_Brush=SelectObject(DC,Brush);\r
+ Rectangle(DC,x,y,x+width,y+height);\r
+ SelectObject(DC,Old_Pen);\r
+ SelectObject(DC,Old_Brush);\r
+ DeleteObject(Pen);\r
+ DeleteObject(Brush);\r
+ DD_RELEASEDC;\r
+ }\r
+\r
+\r
+\r
+ ENDPROFILE(clear)\r
+\r
+ return mask; // TODO: I doubt this is correct. dd.h doesn't explain what this should\r
+ // be...\r
+}\r
+\r
+\r
+\r
+static void enable( GLcontext* ctx, GLenum pname, GLboolean enable )\r
+{\r
+ if (!Current)\r
+ return;\r
+\r
+ if (pname == GL_DITHER) {\r
+ if(enable == GL_FALSE){\r
+ Current->dither_flag = GL_FALSE;\r
+ if(Current->cColorBits == 8)\r
+ Current->pixelformat = PF_INDEX8;\r
+ }\r
+ else{\r
+ if (Current->rgb_flag && Current->cColorBits == 8){\r
+ Current->pixelformat = PF_DITHER8;\r
+ Current->dither_flag = GL_TRUE;\r
+ }\r
+ else\r
+ Current->dither_flag = GL_FALSE;\r
+ }\r
+ }\r
+}\r
+\r
+\r
+\r
+static GLboolean set_draw_buffer( GLcontext* ctx, GLenum mode )\r
+{\r
+ STARTPROFILE\r
+ /* TODO: this could be better */\r
+ if (mode==GL_FRONT_LEFT || mode==GL_BACK_LEFT) {\r
+ return GL_TRUE;\r
+ }\r
+ else {\r
+ return GL_FALSE;\r
+ }\r
+ ENDPROFILE(set_draw_buffer)\r
+}\r
+\r
+\r
+static void set_read_buffer(GLcontext *ctx, GLframebuffer *colorBuffer,\r
+ GLenum buffer )\r
+{\r
+ /* XXX todo */\r
+ return;\r
+}\r
+\r
+\r
+\r
+/* Return characteristics of the output buffer. */\r
+static void buffer_size( GLcontext* ctx, GLuint *width, GLuint *height )\r
+{\r
+ int New_Size;\r
+ RECT CR;\r
+\r
+ STARTPROFILE\r
+ GetClientRect(Current->Window,&CR);\r
+\r
+ *width=CR.right;\r
+ *height=CR.bottom;\r
+\r
+ New_Size=((*width)!=Current->width) || ((*height)!=Current->height);\r
+\r
+ if (New_Size){\r
+ Current->width=*width;\r
+ Current->height=*height;\r
+ Current->ScanWidth=Current->width;\r
+ if ((Current->ScanWidth%sizeof(long))!=0)\r
+ Current->ScanWidth+=(sizeof(long)-(Current->ScanWidth%sizeof(long)));\r
+\r
+ if (Current->db_flag){\r
+#ifdef DDRAW\r
+ DDDeleteOffScreen(Current);\r
+ DDCreateOffScreen(Current);\r
+#else\r
+ if (Current->rgb_flag==GL_TRUE && Current->dither_flag!=GL_TRUE){\r
+ wmDeleteBackingStore(Current);\r
+ wmCreateBackingStore(Current, Current->width, Current->height);\r
+ }\r
+#endif\r
+ }\r
+\r
+ // Resize OsmesaBuffer if in Parallel mode\r
+#if !defined(NO_PARALLEL)\r
+ if(parallelFlag)\r
+ PRSizeRenderBuffer(Current->width, Current->height,Current->ScanWidth,\r
+ Current->rgb_flag == GL_TRUE ? Current->pbPixels: Current->ScreenMem);\r
+#endif\r
+ }\r
+ ENDPROFILE(buffer_size)\r
+}\r
+\r
+\r
+\r
+/**********************************************************************/\r
+/***** Accelerated point, line, polygon rendering *****/\r
+/**********************************************************************/\r
+\r
+\r
+static void fast_rgb_points( GLcontext* ctx, GLuint first, GLuint last )\r
+{\r
+#if 0\r
+ GLuint i;\r
+ // HDC DC=DD_GETDC;\r
+ PWMC pwc = Current;\r
+\r
+ STARTPROFILE\r
+\r
+ if (0 /*Current->gl_ctx->VB->MonoColor*/) {\r
+ /* all drawn with current color */\r
+ for (i=first;i<=last;i++) {\r
+ if (!Current->gl_ctx->VB->ClipMask[i]) {\r
+ int x, y;\r
+ x = (GLint) Current->gl_ctx->VB->Win.data[i][0];\r
+ y = FLIP( (GLint) Current->gl_ctx->VB->Win.data[i][1] );\r
+ wmSetPixel(pwc, y,x,GetRValue(Current->pixel),\r
+ GetGValue(Current->pixel), GetBValue(Current->pixel));\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ /* draw points of different colors */\r
+ for (i=first;i<=last;i++) {\r
+ if (!Current->gl_ctx->VB->ClipMask[i]) {\r
+ int x, y;\r
+ unsigned long pixel=RGB(Current->gl_ctx->VB->ColorPtr->data[i][0]*255.0,\r
+ Current->gl_ctx->VB->ColorPtr->data[i][1]*255.0,\r
+ Current->gl_ctx->VB->ColorPtr->data[i][2]*255.0);\r
+ x = (GLint) Current->gl_ctx->VB->Win.data[i][0];\r
+ y = FLIP( (GLint) Current->gl_ctx->VB->Win.data[i][1] );\r
+ wmSetPixel(pwc, y,x,Current->gl_ctx->VB->ColorPtr->data[i][0]*255.0,\r
+ Current->gl_ctx->VB->ColorPtr->data[i][1]*255.0,\r
+ Current->gl_ctx->VB->ColorPtr->data[i][2]*255.0);\r
+ }\r
+ }\r
+ }\r
+ // DD_RELEASEDC;\r
+ ENDPROFILE(fast_rgb_points)\r
+#endif\r
+}\r
+\r
+\r
+\r
+/* Return pointer to accerated points function */\r
+extern /*points_func*/ choose_points_function( GLcontext* ctx )\r
+{\r
+#if 0\r
+ STARTPROFILE\r
+ if (ctx->Point.Size==1.0 && !ctx->Point.SmoothFlag && ctx->_RasterMask==0\r
+ && !ctx->Texture._ReallyEnabled && ctx->Visual->RGBAflag) {\r
+ ENDPROFILE(choose_points_function)\r
+ return fast_rgb_points;\r
+ }\r
+ else {\r
+ ENDPROFILE(choose_points_function)\r
+ return NULL;\r
+ }\r
+#endif\r
+}\r
+\r
+\r
+\r
+/* Draw a line using the color specified by Current->gl_ctx->VB->ColorPtr->data[pv] */\r
+static void fast_flat_rgb_line( GLcontext* ctx, GLuint v0, GLuint v1, GLuint pv )\r
+{\r
+#if 0\r
+ STARTPROFILE\r
+ int x0, y0, x1, y1;\r
+ unsigned long pixel;\r
+ HDC DC=DD_GETDC;\r
+ HPEN Pen;\r
+ HPEN Old_Pen;\r
+\r
+ if (0 /*Current->gl_ctx->VB->MonoColor*/) {\r
+ pixel = Current->pixel; /* use current color */\r
+ }\r
+ else {\r
+ pixel = RGB(Current->gl_ctx->VB->ColorPtr->data[pv][0]*255.0, Current->gl_ctx->VB->ColorPtr->data[pv][1]*255.0, Current->gl_ctx->VB->ColorPtr->data[pv][2]*255.0);\r
+ }\r
+\r
+ x0 = (int) Current->gl_ctx->VB->Win.data[v0][0];\r
+ y0 = FLIP( (int) Current->gl_ctx->VB->Win.data[v0][1] );\r
+ x1 = (int) Current->gl_ctx->VB->Win.data[v1][0];\r
+ y1 = FLIP( (int) Current->gl_ctx->VB->Win.data[v1][1] );\r
+\r
+\r
+ BEGINGDICALL\r
+\r
+ Pen=CreatePen(PS_SOLID,1,pixel);\r
+ Old_Pen=SelectObject(DC,Pen);\r
+ MoveToEx(DC,x0,y0,NULL);\r
+ LineTo(DC,x1,y1);\r
+ SelectObject(DC,Old_Pen);\r
+ DeleteObject(Pen);\r
+ DD_RELEASEDC;\r
+\r
+ ENDGDICALL\r
+\r
+ ENDPROFILE(fast_flat_rgb_line)\r
+#endif\r
+}\r
+\r
+\r
+\r
+/* Return pointer to accerated line function */\r
+static /*line_func*/ choose_line_function( GLcontext* ctx )\r
+{\r
+#if 0\r
+ STARTPROFILE\r
+ if (ctx->Line.Width==1.0 && !ctx->Line.SmoothFlag && !ctx->Line.StippleFlag\r
+ && ctx->Light.ShadeModel==GL_FLAT && ctx->_RasterMask==0\r
+ && !ctx->Texture._ReallyEnabled && Current->rgb_flag) {\r
+ ENDPROFILE(choose_line_function)\r
+ return fast_flat_rgb_line;\r
+ }\r
+ else {\r
+ ENDPROFILE(choose_line_function)\r
+ return NULL;\r
+ }\r
+#endif\r
+}\r
+\r
+\r
+/**********************************************************************/\r
+/***** Span-based pixel drawing *****/\r
+/**********************************************************************/\r
+\r
+\r
+/* Write a horizontal span of 32-bit color-index pixels with a boolean mask. */\r
+static void write_ci32_span( const GLcontext* ctx,\r
+ GLuint n, GLint x, GLint y,\r
+ const GLuint index[],\r
+ const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;\r
+ assert(Current->rgb_flag==GL_FALSE);\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ Mem[i]=index[i];\r
+ ENDPROFILE(write_ci32_span)\r
+}\r
+\r
+\r
+/* Write a horizontal span of 8-bit color-index pixels with a boolean mask. */\r
+static void write_ci8_span( const GLcontext* ctx,\r
+ GLuint n, GLint x, GLint y,\r
+ const GLubyte index[],\r
+ const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;\r
+ assert(Current->rgb_flag==GL_FALSE);\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ Mem[i]=index[i];\r
+ ENDPROFILE(write_ci8_span)\r
+}\r
+\r
+\r
+\r
+/*\r
+* Write a horizontal span of pixels with a boolean mask. The current\r
+* color index is used for all pixels.\r
+*/\r
+static void write_mono_ci_span(const GLcontext* ctx,\r
+ GLuint n,GLint x,GLint y,\r
+ GLuint colorIndex, const GLubyte mask[])\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;\r
+ assert(Current->rgb_flag==GL_FALSE);\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ Mem[i]=colorIndex;\r
+ ENDPROFILE(write_mono_ci_span)\r
+}\r
+\r
+/*\r
+ * To improve the performance of this routine, frob the data into an actual\r
+ * scanline and call bitblt on the complete scan line instead of SetPixel.\r
+ */\r
+\r
+/* Write a horizontal span of RGBA color pixels with a boolean mask. */\r
+static void write_rgba_span( const GLcontext* ctx, GLuint n, GLint x, GLint y,\r
+ const GLubyte rgba[][4], const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ PWMC pwc = Current;\r
+\r
+ if (pwc->rgb_flag==GL_TRUE)\r
+ {\r
+ GLuint i;\r
+ HDC DC=DD_GETDC;\r
+ y=FLIP(y);\r
+ if (mask) {\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ wmSetPixel(pwc, y, x + i, rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]);\r
+ }\r
+ else {\r
+ for (i=0; i<n; i++)\r
+ wmSetPixel(pwc, y, x + i, rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] );\r
+ }\r
+ DD_RELEASEDC;\r
+ }\r
+ else\r
+ {\r
+ GLuint i;\r
+ BYTE *Mem=Current->ScreenMem+y*Current->ScanWidth+x;\r
+ y = FLIP(y);\r
+ if (mask) {\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]));\r
+ }\r
+ else {\r
+ for (i=0; i<n; i++)\r
+ Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]));\r
+ }\r
+ }\r
+ ENDPROFILE(write_rgba_span)\r
+\r
+}\r
+\r
+/* Write a horizontal span of RGB color pixels with a boolean mask. */\r
+static void write_rgb_span( const GLcontext* ctx,\r
+ GLuint n, GLint x, GLint y,\r
+ const GLubyte rgb[][3], const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ PWMC pwc = Current;\r
+\r
+ if (pwc->rgb_flag==GL_TRUE)\r
+ {\r
+ GLuint i;\r
+ HDC DC=DD_GETDC;\r
+ y=FLIP(y);\r
+ if (mask) {\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ wmSetPixel(pwc, y, x + i, rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP]);\r
+ }\r
+ else {\r
+ for (i=0; i<n; i++)\r
+ wmSetPixel(pwc, y, x + i, rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP] );\r
+ }\r
+ DD_RELEASEDC;\r
+ }\r
+ else\r
+ {\r
+ GLuint i;\r
+ BYTE *Mem=Current->ScreenMem+y*Current->ScanWidth+x;\r
+ y = FLIP(y);\r
+ if (mask) {\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP]));\r
+ }\r
+ else {\r
+ for (i=0; i<n; i++)\r
+ Mem[i] = GetNearestPaletteIndex(Current->hPal,RGB(rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP]));\r
+ }\r
+ }\r
+ ENDPROFILE(write_rgb_span)\r
+\r
+}\r
+\r
+/*\r
+* Write a horizontal span of pixels with a boolean mask. The current color\r
+* is used for all pixels.\r
+*/\r
+static void write_mono_rgba_span( const GLcontext* ctx,\r
+ GLuint n, GLint x, GLint y,\r
+ const GLchan color[4], const GLubyte mask[])\r
+{\r
+ ULONG pixel = RGB( color[RCOMP], color[GCOMP], color[BCOMP] );\r
+ STARTPROFILE\r
+ GLuint i;\r
+ HDC DC=DD_GETDC;\r
+ PWMC pwc = Current;\r
+ assert(Current->rgb_flag==GL_TRUE);\r
+ y=FLIP(y);\r
+ if(Current->rgb_flag==GL_TRUE){\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ // Trying\r
+ wmSetPixel(pwc,y,x+i,color[RCOMP], color[GCOMP], color[BCOMP]);\r
+ }\r
+ else {\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ SetPixel(DC, y, x+i, pixel);\r
+ }\r
+ DD_RELEASEDC;\r
+ ENDPROFILE(write_mono_rgba_span)\r
+}\r
+\r
+\r
+\r
+/**********************************************************************/\r
+/***** Array-based pixel drawing *****/\r
+/**********************************************************************/\r
+\r
+\r
+/* Write an array of 32-bit index pixels with a boolean mask. */\r
+static void write_ci32_pixels( const GLcontext* ctx,\r
+ GLuint n, const GLint x[], const GLint y[],\r
+ const GLuint index[], const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ assert(Current->rgb_flag==GL_FALSE);\r
+ for (i=0; i<n; i++) {\r
+ if (mask[i]) {\r
+ BYTE *Mem=Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i];\r
+ *Mem = index[i];\r
+ }\r
+ }\r
+ ENDPROFILE(write_ci32_pixels)\r
+}\r
+\r
+\r
+\r
+/*\r
+* Write an array of pixels with a boolean mask. The current color\r
+* index is used for all pixels.\r
+*/\r
+static void write_mono_ci_pixels( const GLcontext* ctx,\r
+ GLuint n,\r
+ const GLint x[], const GLint y[],\r
+ GLuint colorIndex, const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ assert(Current->rgb_flag==GL_FALSE);\r
+ for (i=0; i<n; i++) {\r
+ if (mask[i]) {\r
+ BYTE *Mem=Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i];\r
+ *Mem = colorIndex;\r
+ }\r
+ }\r
+ ENDPROFILE(write_mono_ci_pixels)\r
+}\r
+\r
+\r
+\r
+/* Write an array of RGBA pixels with a boolean mask. */\r
+static void write_rgba_pixels( const GLcontext* ctx,\r
+ GLuint n, const GLint x[], const GLint y[],\r
+ const GLubyte rgba[][4], const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ PWMC pwc = Current;\r
+ HDC DC=DD_GETDC;\r
+ assert(Current->rgb_flag==GL_TRUE);\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ wmSetPixel(pwc, FLIP(y[i]), x[i],\r
+ rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]);\r
+ DD_RELEASEDC;\r
+ ENDPROFILE(write_rgba_pixels)\r
+}\r
+\r
+\r
+\r
+/*\r
+* Write an array of pixels with a boolean mask. The current color\r
+* is used for all pixels.\r
+*/\r
+static void write_mono_rgba_pixels( const GLcontext* ctx,\r
+ GLuint n,\r
+ const GLint x[], const GLint y[],\r
+ const GLchan color[4],\r
+ const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ PWMC pwc = Current;\r
+ HDC DC=DD_GETDC;\r
+ assert(Current->rgb_flag==GL_TRUE);\r
+ for (i=0; i<n; i++)\r
+ if (mask[i])\r
+ wmSetPixel(pwc, FLIP(y[i]),x[i],color[RCOMP],\r
+ color[GCOMP], color[BCOMP]);\r
+ DD_RELEASEDC;\r
+ ENDPROFILE(write_mono_rgba_pixels)\r
+}\r
+\r
+\r
+\r
+/**********************************************************************/\r
+/***** Read spans/arrays of pixels *****/\r
+/**********************************************************************/\r
+\r
+\r
+/* Read a horizontal span of color-index pixels. */\r
+static void read_ci32_span( const GLcontext* ctx, GLuint n, GLint x, GLint y,\r
+ GLuint index[])\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;\r
+ assert(Current->rgb_flag==GL_FALSE);\r
+ for (i=0; i<n; i++)\r
+ index[i]=Mem[i];\r
+ ENDPROFILE(read_ci32_span)\r
+}\r
+\r
+\r
+\r
+\r
+/* Read an array of color index pixels. */\r
+static void read_ci32_pixels( const GLcontext* ctx,\r
+ GLuint n, const GLint x[], const GLint y[],\r
+ GLuint indx[], const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ assert(Current->rgb_flag==GL_FALSE);\r
+ for (i=0; i<n; i++) {\r
+ if (mask[i]) {\r
+ indx[i]=*(Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i]);\r
+ }\r
+ }\r
+ ENDPROFILE(read_ci32_pixels)\r
+}\r
+\r
+\r
+\r
+/* Read a horizontal span of color pixels. */\r
+static void read_rgba_span( const GLcontext* ctx,\r
+ GLuint n, GLint x, GLint y,\r
+ GLubyte rgba[][4] )\r
+{\r
+ STARTPROFILE\r
+ UINT i;\r
+ COLORREF Color;\r
+ HDC DC=DD_GETDC;\r
+ assert(Current->rgb_flag==GL_TRUE);\r
+ /* y=FLIP(y);*/\r
+ y = Current->height - y - 1;\r
+ for (i=0; i<n; i++) {\r
+ Color=GetPixel(DC,x+i,y);\r
+ rgba[i][RCOMP] = GetRValue(Color);\r
+ rgba[i][GCOMP] = GetGValue(Color);\r
+ rgba[i][BCOMP] = GetBValue(Color);\r
+ rgba[i][ACOMP] = 255;\r
+ }\r
+ DD_RELEASEDC;\r
+// Brian P. Has mentioned to comment this out.\r
+// memset(alpha,0,n*sizeof(GLubyte));\r
+ ENDPROFILE(read_rgba_span)\r
+}\r
+\r
+\r
+/* Read an array of color pixels. */\r
+static void read_rgba_pixels( const GLcontext* ctx,\r
+ GLuint n, const GLint x[], const GLint y[],\r
+ GLubyte rgba[][4], const GLubyte mask[] )\r
+{\r
+ STARTPROFILE\r
+ GLuint i;\r
+ COLORREF Color;\r
+ HDC DC=DD_GETDC;\r
+ assert(Current->rgb_flag==GL_TRUE);\r
+ for (i=0; i<n; i++) {\r
+ if (mask[i]) {\r
+ GLint y2 = Current->height - y[i] - 1;\r
+ Color=GetPixel(DC,x[i],y2);\r
+ rgba[i][RCOMP] = GetRValue(Color);\r
+ rgba[i][GCOMP] = GetGValue(Color);\r
+ rgba[i][BCOMP] = GetBValue(Color);\r
+ rgba[i][ACOMP] = 255;\r
+ }\r
+ }\r
+ DD_RELEASEDC;\r
+// Brian P. has mentioned to comment this out.\r
+// memset(alpha,0,n*sizeof(GLint));\r
+ ENDPROFILE(read_rgba_pixels)\r
+}\r
+\r
+\r
+\r
+/**********************************************************************/\r
+/**********************************************************************/\r
+\r
+\r
+static const GLubyte *get_string(GLcontext *ctx, GLenum name)\r
+{\r
+ if (name == GL_RENDERER) {\r
+ return (GLubyte *) "Mesa Windows";\r
+ }\r
+ else {\r
+ return NULL;\r
+ }\r
+}\r
+\r
+\r
+\r
+void setup_DD_pointers( GLcontext* ctx )\r
+{\r
+#if 0\r
+ ctx->Driver.GetString = get_string;\r
+ ctx->Driver.UpdateState = setup_DD_pointers;\r
+ ctx->Driver.GetBufferSize = buffer_size;\r
+ ctx->Driver.Finish = finish;\r
+ ctx->Driver.Flush = flush;\r
+\r
+ ctx->Driver.ClearIndex = clear_index;\r
+ ctx->Driver.ClearColor = clear_color;\r
+ ctx->Driver.Clear = clear;\r
+\r
+ ctx->Driver.Enable = enable;\r
+\r
+ ctx->Driver.SetDrawBuffer = set_draw_buffer;\r
+ ctx->Driver.SetReadBuffer = set_read_buffer;\r
+ ctx->Driver.GetBufferSize = buffer_size;\r
+\r
+ ctx->Driver.PointsFunc = choose_points_function(ctx);\r
+ ctx->Driver.LineFunc = choose_line_function(ctx);\r
+ ctx->Driver.TriangleFunc = choose_triangle_function( ctx );\r
+\r
+ /* Pixel/span writing functions: */\r
+ ctx->Driver.WriteRGBASpan = write_rgba_span;\r
+ ctx->Driver.WriteRGBSpan = write_rgb_span;\r
+ ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span;\r
+ ctx->Driver.WriteRGBAPixels = write_rgba_pixels;\r
+ ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels;\r
+ ctx->Driver.WriteCI32Span = write_ci32_span;\r
+ ctx->Driver.WriteCI8Span = write_ci8_span;\r
+ ctx->Driver.WriteMonoCISpan = write_mono_ci_span;\r
+ ctx->Driver.WriteCI32Pixels = write_ci32_pixels;\r
+ ctx->Driver.WriteMonoCIPixels = write_mono_ci_pixels;\r
+\r
+ ctx->Driver.ReadCI32Span = read_ci32_span;\r
+ ctx->Driver.ReadRGBASpan = read_rgba_span;\r
+ ctx->Driver.ReadCI32Pixels = read_ci32_pixels;\r
+ ctx->Driver.ReadRGBAPixels = read_rgba_pixels;\r
+#endif\r
+}\r
+\r
+\r
+/**********************************************************************/\r
+/***** WMesa API Functions *****/\r
+/**********************************************************************/\r
+\r
+\r
+\r
+#define PAL_SIZE 256\r
+static void GetPalette(HPALETTE Pal,RGBQUAD *aRGB)\r
+{\r
+ STARTPROFILE\r
+ int i;\r
+ HDC hdc;\r
+ struct\r
+ {\r
+ WORD Version;\r
+ WORD NumberOfEntries;\r
+ PALETTEENTRY aEntries[PAL_SIZE];\r
+ } Palette =\r
+ {\r
+ 0x300,\r
+ PAL_SIZE\r
+ };\r
+ hdc=GetDC(NULL);\r
+ if (Pal!=NULL)\r
+ GetPaletteEntries(Pal,0,PAL_SIZE,Palette.aEntries);\r
+ else\r
+ GetSystemPaletteEntries(hdc,0,PAL_SIZE,Palette.aEntries);\r
+ if (GetSystemPaletteUse(hdc) == SYSPAL_NOSTATIC)\r
+ {\r
+ for(i = 0; i <PAL_SIZE; i++)\r
+ Palette.aEntries[i].peFlags = PC_RESERVED;\r
+ Palette.aEntries[255].peRed = 255;\r
+ Palette.aEntries[255].peGreen = 255;\r
+ Palette.aEntries[255].peBlue = 255;\r
+ Palette.aEntries[255].peFlags = 0;\r
+ Palette.aEntries[0].peRed = 0;\r
+ Palette.aEntries[0].peGreen = 0;\r
+ Palette.aEntries[0].peBlue = 0;\r
+ Palette.aEntries[0].peFlags = 0;\r
+ }\r
+ else\r
+ {\r
+ int nStaticColors;\r
+ int nUsableColors;\r
+ nStaticColors = GetDeviceCaps(hdc, NUMCOLORS)/2;\r
+ for (i=0; i<nStaticColors; i++)\r
+ Palette.aEntries[i].peFlags = 0;\r
+ nUsableColors = PAL_SIZE-nStaticColors;\r
+ for (; i<nUsableColors; i++)\r
+ Palette.aEntries[i].peFlags = PC_RESERVED;\r
+ for (; i<PAL_SIZE-nStaticColors; i++)\r
+ Palette.aEntries[i].peFlags = PC_RESERVED;\r
+ for (i=PAL_SIZE-nStaticColors; i<PAL_SIZE; i++)\r
+ Palette.aEntries[i].peFlags = 0;\r
+ }\r
+ ReleaseDC(NULL,hdc);\r
+ for (i=0; i<PAL_SIZE; i++)\r
+ {\r
+ aRGB[i].rgbRed=Palette.aEntries[i].peRed;\r
+ aRGB[i].rgbGreen=Palette.aEntries[i].peGreen;\r
+ aRGB[i].rgbBlue=Palette.aEntries[i].peBlue;\r
+ aRGB[i].rgbReserved=Palette.aEntries[i].peFlags;\r
+ }\r
+ ENDPROFILE(GetPalette)\r
+}\r
+\r
+\r
+WMesaContext WMesaCreateContext( HWND hWnd, HPALETTE* Pal,\r
+ GLboolean rgb_flag,\r
+ GLboolean db_flag )\r
+{\r
+ RECT CR;\r
+ WMesaContext c;\r
+ GLboolean true_color_flag;\r
+ c = (struct wmesa_context * ) calloc(1,sizeof(struct wmesa_context));\r
+ if (!c)\r
+ return NULL;\r
+\r
+ c->Window=hWnd;\r
+ c->hDC = GetDC(hWnd);\r
+ true_color_flag = GetDeviceCaps(c->hDC, BITSPIXEL) > 8;\r
+#ifdef DDRAW\r
+ if(true_color_flag) c->rgb_flag = rgb_flag = GL_TRUE;\r
+#endif\r
+\r
+\r
+#ifdef DITHER\r
+ if ((true_color_flag==GL_FALSE) && (rgb_flag == GL_TRUE)){\r
+ c->dither_flag = GL_TRUE;\r
+ c->hPalHalfTone = WinGCreateHalftonePalette();\r
+ }\r
+ else\r
+ c->dither_flag = GL_FALSE;\r
+#else\r
+ c->dither_flag = GL_FALSE;\r
+#endif\r
+\r
+\r
+ if (rgb_flag==GL_FALSE)\r
+ {\r
+ c->rgb_flag = GL_FALSE;\r
+ // c->pixel = 1;\r
+ c->db_flag = db_flag =GL_TRUE; // WinG requires double buffering\r
+ printf("Single buffer is not supported in color index mode, setting to double buffer.\n");\r
+ }\r
+ else\r
+ {\r
+ c->rgb_flag = GL_TRUE;\r
+ // c->pixel = 0;\r
+ }\r
+ GetClientRect(c->Window,&CR);\r
+ c->width=CR.right;\r
+ c->height=CR.bottom;\r
+ if (db_flag)\r
+ {\r
+ c->db_flag = 1;\r
+ /* Double buffered */\r
+#ifndef DDRAW\r
+ // if (c->rgb_flag==GL_TRUE && c->dither_flag != GL_TRUE )\r
+ {\r
+ wmCreateBackingStore(c, c->width, c->height);\r
+\r
+ }\r
+#endif\r
+ }\r
+ else\r
+ {\r
+ /* Single Buffered */\r
+ if (c->rgb_flag)\r
+ c->db_flag = 0;\r
+ }\r
+#ifdef DDRAW\r
+ if (DDInit(c,hWnd) == GL_FALSE) {\r
+ free( (void *) c );\r
+ exit(1);\r
+ }\r
+#endif\r
+\r
+\r
+ c->gl_visual = _mesa_create_visual(rgb_flag,\r
+ db_flag, /* db_flag */\r
+ GL_FALSE, /* stereo */\r
+ 8,8,8,8, /* r, g, b, a bits */\r
+ 0, /* index bits */\r
+ 16, /* depth_bits */\r
+ 8, /* stencil_bits */\r
+ 16,16,16,16,/* accum_bits */\r
+ 1);\r
+\r
+ if (!c->gl_visual) {\r
+ return NULL;\r
+ }\r
+\r
+ /* allocate a new Mesa context */\r
+ c->gl_ctx = _mesa_create_context( c->gl_visual, NULL, c, GL_TRUE);\r
+\r
+ if (!c->gl_ctx) {\r
+ _mesa_destroy_visual( c->gl_visual );\r
+ free(c);\r
+ return NULL;\r
+ }\r
+\r
+ _mesa_enable_sw_extensions(c->gl_ctx);\r
+#if 0\r
+ c->gl_buffer = _mesa_create_framebuffer( c->gl_visual,\r
+ c->gl_visual->DepthBits > 0,\r
+ c->gl_visual->StencilBits > 0,\r
+ c->gl_visual->AccumRedBits > 0,\r
+ c->gl_visual->AlphaBits > 0 );\r
+#endif\r
+ c->gl_buffer = NULL; /* TEMP */\r
+ if (!c->gl_buffer) {\r
+ _mesa_destroy_visual( c->gl_visual );\r
+ _mesa_destroy_context( c->gl_ctx );\r
+ free(c);\r
+ return NULL;\r
+ }\r
+\r
+ c->gl_ctx->Driver.UpdateState = setup_DD_pointers;\r
+\r
+ // setup_DD_pointers(c->gl_ctx);\r
+\r
+ return c;\r
+}\r
+\r
+void WMesaDestroyContext( void )\r
+{\r
+ WMesaContext c = Current;\r
+ ReleaseDC(c->Window,c->hDC);\r
+ WC = c;\r
+ if(c->hPalHalfTone != NULL)\r
+ DeleteObject(c->hPalHalfTone);\r
+ _mesa_destroy_visual( c->gl_visual );\r
+ _mesa_destroy_framebuffer( c->gl_buffer );\r
+ _mesa_destroy_context( c->gl_ctx );\r
+\r
+ if (c->db_flag)\r
+#ifdef DDRAW\r
+ DDFree(c);\r
+#else\r
+ wmDeleteBackingStore(c);\r
+#endif\r
+ free( (void *) c );\r
+ //Following code is added to enable parallel render\r
+ // Parallel render only work in double buffer mode\r
+#if !defined(NO_PARALLEL)\r
+ if(parallelMachine)\r
+ PRDestroyRenderBuffer();\r
+#endif\r
+ // End modification\r
+}\r
+\r
+\r
+\r
+void /*APIENTRY*/ WMesaMakeCurrent( WMesaContext c )\r
+{\r
+ if(!c){\r
+ Current = c;\r
+ return;\r
+ }\r
+\r
+ //\r
+ // A little optimization\r
+ // If it already is current,\r
+ // don't set it again\r
+ //\r
+ if(Current == c)\r
+ return;\r
+\r
+ //gl_set_context( c->gl_ctx );\r
+ _mesa_make_current(c->gl_ctx, c->gl_buffer);\r
+ setup_DD_pointers(c->gl_ctx);\r
+ Current = c;\r
+ if (Current->gl_ctx->Viewport.Width==0) {\r
+ /* initialize viewport to window size */\r
+ _mesa_set_viewport( Current->gl_ctx,\r
+ 0, 0, Current->width, Current->height );\r
+ }\r
+ if ((c->cColorBits <= 8 ) && (c->rgb_flag == GL_TRUE)){\r
+ WMesaPaletteChange(c->hPalHalfTone);\r
+ }\r
+}\r
+\r
+\r
+\r
+void /*APIENTRY*/ WMesaSwapBuffers( void )\r
+{\r
+ HDC DC = Current->hDC;\r
+ GET_CURRENT_CONTEXT(ctx);\r
+\r
+ /* If we're swapping the buffer associated with the current context\r
+ * we have to flush any pending rendering commands first.\r
+ */\r
+ if (Current && Current->gl_ctx == ctx)\r
+ _mesa_swapbuffers(ctx);\r
+\r
+ if (Current->db_flag)\r
+ wmFlush(Current);\r
+}\r
+\r
+\r
+\r
+void /*APIENTRY*/ WMesaPaletteChange(HPALETTE Pal)\r
+{\r
+ int vRet;\r
+ LPPALETTEENTRY pPal;\r
+ if (Current && (Current->rgb_flag==GL_FALSE || Current->dither_flag == GL_TRUE))\r
+ {\r
+ pPal = (PALETTEENTRY *)malloc( 256 * sizeof(PALETTEENTRY));\r
+ Current->hPal=Pal;\r
+ // GetPaletteEntries( Pal, 0, 256, pPal );\r
+ GetPalette( Pal, pPal );\r
+#ifdef DDRAW\r
+ Current->lpDD->lpVtbl->CreatePalette(Current->lpDD,DDPCAPS_8BIT,\r
+ pPal, &(Current->lpDDPal), NULL);\r
+ if (Current->lpDDPal)\r
+ Current->lpDDSPrimary->lpVtbl->SetPalette(Current->lpDDSPrimary,Current->lpDDPal);\r
+#else\r
+ vRet = SetDIBColorTable(Current->dib.hDC,0,256,pPal);\r
+#endif\r
+ free( pPal );\r
+ }\r
+\r
+}\r
+\r
+\r
+\r
+\r
+static unsigned char threeto8[8] = {\r
+ 0, 0111>>1, 0222>>1, 0333>>1, 0444>>1, 0555>>1, 0666>>1, 0377\r
+};\r
+\r
+static unsigned char twoto8[4] = {\r
+ 0, 0x55, 0xaa, 0xff\r
+};\r
+\r
+static unsigned char oneto8[2] = {\r
+ 0, 255\r
+};\r
+\r
+static unsigned char componentFromIndex(UCHAR i, UINT nbits, UINT shift)\r
+{\r
+ unsigned char val;\r
+\r
+ val = i >> shift;\r
+ switch (nbits) {\r
+\r
+ case 1:\r
+ val &= 0x1;\r
+ return oneto8[val];\r
+\r
+ case 2:\r
+ val &= 0x3;\r
+ return twoto8[val];\r
+\r
+ case 3:\r
+ val &= 0x7;\r
+ return threeto8[val];\r
+\r
+ default:\r
+ return 0;\r
+ }\r
+}\r
+\r
+void /*WINAPI*/ wmCreatePalette( PWMC pwdc )\r
+{\r
+ /* Create a compressed and re-expanded 3:3:2 palette */\r
+ int i;\r
+ LOGPALETTE *pPal;\r
+ BYTE rb, rs, gb, gs, bb, bs;\r
+\r
+ pwdc->nColors = 0x100;\r
+\r
+ pPal = (PLOGPALETTE)malloc(sizeof(LOGPALETTE) + pwdc->nColors * sizeof(PALETTEENTRY));\r
+ memset( pPal, 0, sizeof(LOGPALETTE) + pwdc->nColors * sizeof(PALETTEENTRY) );\r
+\r
+ pPal->palVersion = 0x300;\r
+\r
+ rb = REDBITS;\r
+ rs = REDSHIFT;\r
+ gb = GREENBITS;\r
+ gs = GREENSHIFT;\r
+ bb = BLUEBITS;\r
+ bs = BLUESHIFT;\r
+\r
+ if (pwdc->db_flag) {\r
+\r
+ /* Need to make two palettes: one for the screen DC and one for the DIB. */\r
+ pPal->palNumEntries = pwdc->nColors;\r
+ for (i = 0; i < pwdc->nColors; i++) {\r
+ pPal->palPalEntry[i].peRed = componentFromIndex( i, rb, rs );\r
+ pPal->palPalEntry[i].peGreen = componentFromIndex( i, gb, gs );\r
+ pPal->palPalEntry[i].peBlue = componentFromIndex( i, bb, bs );\r
+ pPal->palPalEntry[i].peFlags = 0;\r
+ }\r
+ pwdc->hGLPalette = CreatePalette( pPal );\r
+ pwdc->hPalette = CreatePalette( pPal );\r
+ }\r
+\r
+ else {\r
+ pPal->palNumEntries = pwdc->nColors;\r
+ for (i = 0; i < pwdc->nColors; i++) {\r
+ pPal->palPalEntry[i].peRed = componentFromIndex( i, rb, rs );\r
+ pPal->palPalEntry[i].peGreen = componentFromIndex( i, gb, gs );\r
+ pPal->palPalEntry[i].peBlue = componentFromIndex( i, bb, bs );\r
+ pPal->palPalEntry[i].peFlags = 0;\r
+ }\r
+ pwdc->hGLPalette = CreatePalette( pPal );\r
+ }\r
+\r
+ free(pPal);\r
+\r
+}\r
+\r
+void /*WINAPI*/ wmSetPixel(PWMC pwc, int iScanLine, int iPixel, BYTE r, BYTE g, BYTE b)\r
+{\r
+ if (Current->db_flag) {\r
+ LPBYTE lpb = pwc->pbPixels;\r
+ LPDWORD lpdw;\r
+ LPWORD lpw;\r
+ UINT nBypp = pwc->cColorBits >> 3;\r
+ UINT nOffset = iPixel % nBypp;\r
+\r
+ // Move the pixel buffer pointer to the scanline that we\r
+ // want to access\r
+\r
+ // pwc->dib.fFlushed = FALSE;\r
+\r
+ lpb += pwc->ScanWidth * iScanLine;\r
+ // Now move to the desired pixel\r
+ lpb += iPixel * nBypp;\r
+ lpb = PIXELADDR(iPixel, iScanLine);\r
+ lpdw = (LPDWORD)lpb;\r
+ lpw = (LPWORD)lpb;\r
+\r
+ if(nBypp == 1){\r
+ if(pwc->dither_flag)\r
+ *lpb = DITHER_RGB_2_8BIT(r,g,b,iScanLine,iPixel);\r
+ else\r
+ *lpb = BGR8(r,g,b);\r
+ }\r
+ else if(nBypp == 2)\r
+ *lpw = BGR16(r,g,b);\r
+ else if (nBypp == 3){\r
+ *lpdw = BGR24(r,g,b);\r
+ }\r
+ else if (nBypp == 4)\r
+ *lpdw = BGR32(r,g,b);\r
+ }\r
+ else{\r
+ SetPixel(Current->hDC, iPixel, iScanLine, RGB(r,g,b));\r
+ DD_RELEASEDC;\r
+ }\r
+}\r
+\r
+void /*WINAPI*/ wmCreateDIBSection(\r
+ HDC hDC,\r
+ PWMC pwc, // handle of device context\r
+ CONST BITMAPINFO *pbmi, // address of structure containing bitmap size, format, and color data\r
+ UINT iUsage // color data type indicator: RGB values or palette indices\r
+ )\r
+{\r
+ DWORD dwSize = 0;\r
+ DWORD dwScanWidth;\r
+ UINT nBypp = pwc->cColorBits / 8;\r
+ HDC hic;\r
+\r
+ dwScanWidth = (((pwc->ScanWidth * nBypp)+ 3) & ~3);\r
+\r
+ pwc->ScanWidth =pwc->pitch = dwScanWidth;\r
+\r
+ if (stereo_flag)\r
+ pwc->ScanWidth = 2* pwc->pitch;\r
+\r
+ dwSize = sizeof(BITMAPINFO) + (dwScanWidth * pwc->height);\r
+\r
+ pwc->dib.hFileMap = CreateFileMapping((HANDLE)PAGE_FILE,\r
+ NULL,\r
+ PAGE_READWRITE | SEC_COMMIT,\r
+ 0,\r
+ dwSize,\r
+ NULL);\r
+\r
+ if (!pwc->dib.hFileMap)\r
+ return;\r
+\r
+ pwc->dib.base = MapViewOfFile(pwc->dib.hFileMap,\r
+ FILE_MAP_ALL_ACCESS,\r
+ 0,\r
+ 0,\r
+ 0);\r
+\r
+ if(!pwc->dib.base){\r
+ CloseHandle(pwc->dib.hFileMap);\r
+ return;\r
+ }\r
+\r
+ // pwc->pbPixels = pwc->addrOffScreen = ((LPBYTE)pwc->dib.base) + sizeof(BITMAPINFO);\r
+\r
+ // pwc->dib.hDC = CreateCompatibleDC(hDC);\r
+\r
+ CopyMemory(pwc->dib.base, pbmi, sizeof(BITMAPINFO));\r
+\r
+ hic = CreateIC("display", NULL, NULL, NULL);\r
+ pwc->dib.hDC = CreateCompatibleDC(hic);\r
+\r
+\r
+ /* pwc->hbmDIB = CreateDIBitmap(hic,\r
+ &(pwc->bmi.bmiHeader),\r
+ CBM_INIT,\r
+ pwc->pbPixels,\r
+ &(pwc->bmi),\r
+ DIB_RGB_COLORS);\r
+ */\r
+ pwc->hbmDIB = CreateDIBSection(hic,\r
+ &(pwc->bmi),\r
+ (iUsage ? DIB_PAL_COLORS : DIB_RGB_COLORS),\r
+ &(pwc->pbPixels),\r
+ pwc->dib.hFileMap,\r
+ 0);\r
+ /*\r
+ pwc->hbmDIB = CreateDIBSection(hic,\r
+ &(pwc->bmi),\r
+ DIB_RGB_COLORS,\r
+ &(pwc->pbPixels),\r
+ pwc->dib.hFileMap,\r
+ 0);\r
+ */\r
+ pwc->ScreenMem = pwc->addrOffScreen = pwc->pbPixels;\r
+ pwc->hOldBitmap = SelectObject(pwc->dib.hDC, pwc->hbmDIB);\r
+\r
+ DeleteDC(hic);\r
+\r
+ return;\r
+\r
+}\r
+\r
+//\r
+// Blit memory DC to screen DC\r
+//\r
+BOOL /*WINAPI*/ wmFlush(PWMC pwc)\r
+{\r
+ BOOL bRet = 0;\r
+ DWORD dwErr = 0;\r
+#ifdef DDRAW\r
+ HRESULT ddrval;\r
+#endif\r
+\r
+ // Now search through the torus frames and mark used colors\r
+ if(pwc->db_flag){\r
+#ifdef DDRAW\r
+ if (pwc->lpDDSOffScreen == NULL)\r
+ if(DDCreateOffScreen(pwc) == GL_FALSE)\r
+ return;\r
+\r
+ pwc->lpDDSOffScreen->lpVtbl->Unlock(pwc->lpDDSOffScreen, NULL);\r
+\r
+ while( 1 )\r
+ {\r
+ ddrval = pwc->lpDDSPrimary->lpVtbl->Blt( pwc->lpDDSPrimary,\r
+ &(pwc->rectSurface), pwc->lpDDSOffScreen, &(pwc->rectOffScreen), 0, NULL );\r
+\r
+ if( ddrval == DD_OK )\r
+ {\r
+ break;\r
+ }\r
+ if( ddrval == DDERR_SURFACELOST )\r
+ {\r
+ if(!DDRestoreAll(pwc))\r
+ {\r
+ break;\r
+ }\r
+ }\r
+ if( ddrval != DDERR_WASSTILLDRAWING )\r
+ {\r
+ break;\r
+ }\r
+ }\r
+\r
+ while (pwc->lpDDSOffScreen->lpVtbl->Lock(pwc->lpDDSOffScreen,\r
+ NULL, &(pwc->ddsd), 0, NULL) == DDERR_WASSTILLDRAWING)\r
+ ;\r
+\r
+ if(ddrval != DD_OK)\r
+ dwErr = GetLastError();\r
+#else\r
+ bRet = BitBlt(pwc->hDC, 0, 0, pwc->width, pwc->height,\r
+ pwc->dib.hDC, 0, 0, SRCCOPY);\r
+#endif\r
+ }\r
+\r
+ return(TRUE);\r
+\r
+}\r
+\r
+\r
+// The following code is added by Li Wei to enable stereo display\r
+\r
+#if !defined(NO_STEREO)\r
+\r
+void WMesaShowStereo(GLuint list)\r
+{\r
+\r
+ GLbitfield mask = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT;\r
+ GLfloat cm[16];\r
+ GLint matrix_mode;\r
+ // Must use double Buffer\r
+ if( ! Current-> db_flag )\r
+ return;\r
+\r
+\r
+ glGetIntegerv(GL_MATRIX_MODE,&matrix_mode);\r
+\r
+ // glPushMatrix(); //****\r
+ WMesaViewport(Current->gl_ctx,0,Current->height/2,Current->width,Current->height/2);\r
+ // Current->gl_ctx->NewState = 0;\r
+\r
+ // glViewport(0,0,Current->width,Current->height/2);\r
+ if(matrix_mode!=GL_MODELVIEW)\r
+ glMatrixMode(GL_MODELVIEW);\r
+\r
+ glGetFloatv(GL_MODELVIEW_MATRIX,cm);\r
+ glLoadIdentity();\r
+ gluLookAt(viewDistance/2,0.0,0.0 ,\r
+ viewDistance/2,0.0,-1.0,\r
+ 0.0,1.0,0.0 );\r
+ // glTranslatef(viewDistance/2.0,0.,0.);\r
+ glMultMatrixf( cm );\r
+\r
+ Current->ScreenMem = Current->pbPixels = Current->addrOffScreen;\r
+ //glPushMatrix();\r
+ glCallList( list );\r
+ //glPopMatrix();\r
+\r
+ glGetFloatv(GL_MODELVIEW_MATRIX,cm);\r
+ glLoadIdentity();\r
+ gluLookAt(-viewDistance/2,0.0,0.0 ,\r
+ -viewDistance/2,0.0,-1.0,\r
+ 0.0,1.0,0.0 );\r
+ // glTranslatef(-viewDistance/2.0,0.,0.);\r
+ glMultMatrixf(cm);\r
+\r
+ Current->ScreenMem = Current->pbPixels = Current->addrOffScreen + Current->pitch;\r
+ glCallList(list);\r
+ if(matrix_mode!=GL_MODELVIEW)\r
+ glMatrixMode(matrix_mode);\r
+\r
+ // glPopMatrix();\r
+ glFlush();\r
+\r
+ WMesaViewport(Current->gl_ctx,0,0,Current->width,Current->height);\r
+ // Current->gl_ctx->NewState = 0;\r
+ WMesaSwapBuffers();\r
+\r
+}\r
+\r
+void toggleStereoMode()\r
+{\r
+ if(!Current->db_flag)\r
+ return;\r
+ if(!stereo_flag){\r
+ stereo_flag = 1;\r
+ if(stereoBuffer==GL_FALSE)\r
+#if !defined(NO_PARALLEL)\r
+ if(!parallelFlag)\r
+#endif\r
+ {\r
+ Current->ScanWidth = Current->pitch*2;\r
+ }\r
+ }\r
+ else {\r
+ stereo_flag = 0;\r
+#if !defined(NO_PARALLEL)\r
+ if(!parallelFlag)\r
+#endif\r
+ Current->ScanWidth = Current->pitch;\r
+ Current->pbPixels = Current->addrOffScreen;\r
+ }\r
+}\r
+\r
+/* if in stereo mode, the following function is called */\r
+void glShowStereo(GLuint list)\r
+{\r
+ WMesaShowStereo(list);\r
+}\r
+\r
+#endif // End if NO_STEREO not defined\r
+\r
+#if !defined(NO_PARALLEL)\r
+\r
+void toggleParallelMode(void)\r
+{\r
+ if(!parallelFlag){\r
+ parallelFlag = GL_TRUE;\r
+ if(parallelMachine==GL_FALSE){\r
+ PRCreateRenderBuffer( Current->rgb_flag? GL_RGBA :GL_COLOR_INDEX,\r
+ Current->cColorBits/8,\r
+ Current->width ,Current->height,\r
+ Current->ScanWidth,\r
+ Current->rgb_flag? Current->pbPixels: Current->ScreenMem);\r
+ parallelMachine = GL_TRUE;\r
+ }\r
+ }\r
+ else {\r
+ parallelFlag = GL_FALSE;\r
+ if(parallelMachine==GL_TRUE){\r
+ PRDestroyRenderBuffer();\r
+ parallelMachine=GL_FALSE;\r
+ ReadyForNextFrame = GL_TRUE;\r
+ }\r
+\r
+ /***********************************************\r
+ // Seems something wrong!!!!\r
+ ************************************************/\r
+\r
+ WMesaMakeCurrent(Current);\r
+#if !defined(NO_STEREO)\r
+ stereo_flag = GL_FALSE ;\r
+#endif\r
+ }\r
+}\r
+\r
+void PRShowRenderResult(void)\r
+{\r
+ int flag = 0;\r
+ if(!glImageRendered())\r
+ return;\r
+\r
+ if (parallelFlag)\r
+ {\r
+ WMesaSwapBuffers();\r
+ }\r
+\r
+}\r
+#endif //End if NO_PARALLEL not defined\r
+\r
+//end modification\r
+\r
+BYTE DITHER_RGB_2_8BIT( int red, int green, int blue, int pixel, int scanline)\r
+{\r
+ char unsigned redtemp, greentemp, bluetemp, paletteindex;\r
+\r
+ //*** now, look up each value in the halftone matrix\r
+ //*** using an 8x8 ordered dither.\r
+ redtemp = aDividedBy51[red]\r
+ + (aModulo51[red] > aHalftone8x8[(pixel%8)*8\r
+ + scanline%8]);\r
+ greentemp = aDividedBy51[(char unsigned)green]\r
+ + (aModulo51[green] > aHalftone8x8[\r
+ (pixel%8)*8 + scanline%8]);\r
+ bluetemp = aDividedBy51[(char unsigned)blue]\r
+ + (aModulo51[blue] > aHalftone8x8[\r
+ (pixel%8)*8 +scanline%8]);\r
+\r
+ //*** recombine the halftoned rgb values into a palette index\r
+ paletteindex =\r
+ redtemp + aTimes6[greentemp] + aTimes36[bluetemp];\r
+\r
+ //*** and translate through the wing halftone palette\r
+ //*** translation vector to give the correct value.\r
+ return aWinGHalftoneTranslation[paletteindex];\r
+}\r
+\r
+#ifdef DDRAW\r
+/*\r
+* restoreAll\r
+*\r
+* restore all lost objects\r
+*/\r
+HRESULT DDRestoreAll( WMesaContext wc )\r
+{\r
+ HRESULT ddrval;\r
+\r
+ ddrval = wc->lpDDSPrimary->lpVtbl->Restore(wc->lpDDSPrimary);\r
+ if( ddrval == DD_OK )\r
+ {\r
+ ddrval = wc->lpDDSOffScreen->lpVtbl->Restore(wc->lpDDSOffScreen);\r
+ }\r
+ return ddrval;\r
+\r
+} /* restoreAll */\r
+\r
+\r
+ /*\r
+ * This function is called if the initialization function fails\r
+*/\r
+BOOL initFail( HWND hwnd, WMesaContext wc )\r
+{\r
+ DDFree(wc);\r
+ MessageBox( hwnd, "DirectDraw Init FAILED", "", MB_OK );\r
+ return FALSE;\r
+\r
+} /* initFail */\r
+\r
+\r
+static void DDDeleteOffScreen(WMesaContext wc)\r
+{\r
+ if( wc->lpDDSOffScreen != NULL )\r
+ {\r
+ wc->lpDDSOffScreen->lpVtbl->Unlock(wc->lpDDSOffScreen,NULL);\r
+ wc->lpDDSOffScreen->lpVtbl->Release(wc->lpDDSOffScreen);\r
+ wc->lpDDSOffScreen = NULL;\r
+ }\r
+\r
+}\r
+\r
+static void DDFreePrimarySurface(WMesaContext wc)\r
+{\r
+ if( wc->lpDDSPrimary != NULL )\r
+ {\r
+ if(wc->db_flag == GL_FALSE)\r
+ wc->lpDDSPrimary->lpVtbl->ReleaseDC(wc->lpDDSPrimary, wc->hDC);\r
+ wc->lpDDSPrimary->lpVtbl->Release(wc->lpDDSPrimary);\r
+ wc->lpDDSPrimary = NULL;\r
+ }\r
+}\r
+\r
+static BOOL DDCreatePrimarySurface(WMesaContext wc)\r
+{\r
+ HRESULT ddrval;\r
+ DDSCAPS ddscaps;\r
+ wc->ddsd.dwSize = sizeof( wc->ddsd );\r
+ wc->ddsd.dwFlags = DDSD_CAPS;\r
+ wc->ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;\r
+\r
+ ddrval = wc->lpDD->lpVtbl->CreateSurface( wc->lpDD,&(wc->ddsd), &(wc->lpDDSPrimary), NULL );\r
+ if( ddrval != DD_OK )\r
+ {\r
+ return initFail(wc->hwnd , wc);\r
+ }\r
+ if(wc->db_flag == GL_FALSE)\r
+ wc->lpDDSPrimary->lpVtbl->GetDC(wc->lpDDSPrimary, wc->hDC);\r
+ return TRUE;\r
+}\r
+\r
+static BOOL DDCreateOffScreen(WMesaContext wc)\r
+{\r
+ POINT pt;\r
+ HRESULT ddrval;\r
+ if(wc->lpDD == NULL)\r
+ return FALSE;\r
+ GetClientRect( wc->hwnd, &(wc->rectOffScreen) );\r
+ wc->ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;\r
+ wc->ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;\r
+ wc->ddsd.dwHeight = wc->rectOffScreen.bottom - wc->rectOffScreen.top;\r
+ wc->ddsd.dwWidth = wc->rectOffScreen.right - wc->rectOffScreen.left;\r
+\r
+ ddrval = wc->lpDD->lpVtbl->CreateSurface( wc->lpDD, &(wc->ddsd), &(wc->lpDDSOffScreen), NULL );\r
+ if( ddrval != DD_OK )\r
+ {\r
+ return FALSE;\r
+ }\r
+\r
+ while (wc->lpDDSOffScreen->lpVtbl->Lock(wc->lpDDSOffScreen,NULL, &(wc->ddsd), 0, NULL) == DDERR_WASSTILLDRAWING)\r
+ ;\r
+ // while ((ddrval = wc->lpDDSOffScreen->lpVtbl->Lock(wc->lpDDSOffScreen,NULL, &(wc->ddsd), DDLOCK_SURFACEMEMORYPTR , NULL)) != DD_OK)\r
+ ;\r
+ if(wc->ddsd.lpSurface==NULL)\r
+ return initFail(wc->hwnd, wc);\r
+\r
+ wc->ScreenMem = wc->pbPixels = wc->addrOffScreen = (PBYTE)(wc->ddsd.lpSurface);\r
+ wc->ScanWidth = wc->pitch = wc->ddsd.lPitch;\r
+ if (stereo_flag)\r
+ wc->ScanWidth = wc->ddsd.lPitch*2;\r
+\r
+ GetClientRect( wc->hwnd, &(wc->rectSurface) );\r
+ pt.x = pt.y = 0;\r
+ ClientToScreen( wc->hwnd, &pt );\r
+ OffsetRect(&(wc->rectSurface), pt.x, pt.y);\r
+ wmSetPixelFormat(wc, wc->hDC);\r
+ return TRUE;\r
+}\r
+\r
+/*\r
+* doInit - do work required for every instance of the application:\r
+* create the window, initialize data\r
+*/\r
+static BOOL DDInit( WMesaContext wc, HWND hwnd)\r
+{\r
+ HRESULT ddrval;\r
+ DWORD dwFrequency;\r
+\r
+ LPDIRECTDRAW lpDD; // DirectDraw object\r
+ LPDIRECTDRAW2 lpDD2;\r
+\r
+\r
+ wc->fullScreen = displayOptions.fullScreen;\r
+ wc->gMode = displayOptions.mode;\r
+ wc->hwnd = hwnd;\r
+ stereo_flag = displayOptions.stereo;\r
+ if(wc->db_flag!= GL_TRUE)\r
+ stereo_flag = GL_FALSE;\r
+ /*\r
+ * create the main DirectDraw object\r
+ */\r
+ ddrval = DirectDrawCreate( NULL, &(wc->lpDD), NULL );\r
+ if( ddrval != DD_OK )\r
+ {\r
+ return initFail(hwnd,wc);\r
+ }\r
+\r
+ // Get exclusive mode if requested\r
+ if(wc->fullScreen)\r
+ {\r
+ ddrval = wc->lpDD->lpVtbl->SetCooperativeLevel( wc->lpDD, hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );\r
+ }\r
+ else\r
+ {\r
+ ddrval = wc->lpDD->lpVtbl->SetCooperativeLevel( wc->lpDD, hwnd, DDSCL_NORMAL );\r
+ }\r
+ if( ddrval != DD_OK )\r
+ {\r
+ return initFail(hwnd , wc);\r
+ }\r
+\r
+\r
+ /* ddrval = wc->lpDD->lpVtbl->QueryInterface(wc->lpDD, IID_IDirectDraw2,\r
+ (LPVOID *)((wc->lpDD2)));\r
+\r
+ */\r
+ if(ddrval != DD_OK)\r
+ return initFail(hwnd , wc);\r
+\r
+\r
+ //ddrval = wc->lpDD->lpVtbl->GetDisplayMode( wc->lpDD, &(wc->ddsd));\r
+ // wc->lpDD2->lpVtbl->GetMonitorFrequency(wc->lpDD, &dwFrequency);\r
+ switch( wc->gMode )\r
+ {\r
+ case 1: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 640, 480, displayOptions.bpp); break;\r
+ case 2: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 800, 600, displayOptions.bpp); break;\r
+ case 3: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 1024, 768, displayOptions.bpp); break;\r
+ case 4: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 1152, 864, displayOptions.bpp); break;\r
+ case 5: ddrval = wc->lpDD->lpVtbl->SetDisplayMode( wc->lpDD, 1280, 1024, displayOptions.bpp); break;\r
+ }\r
+\r
+ if( ddrval != DD_OK )\r
+ {\r
+ printf("Can't modify display mode, current mode used\n");\r
+ // return initFail(hwnd , wc);\r
+ }\r
+ //ddrval = wc->lpDD->lpVtbl->GetDisplayMode( wc->lpDD, &(wc->ddsd));\r
+ switch(ddrval){\r
+ case DDERR_INVALIDOBJECT:\r
+ break;\r
+ case DDERR_INVALIDPARAMS:\r
+ break;\r
+ case DDERR_UNSUPPORTEDMODE:\r
+ ;\r
+ }\r
+\r
+ if(DDCreatePrimarySurface(wc) == GL_FALSE)\r
+ return initFail(hwnd, wc);\r
+\r
+ if(wc->db_flag)\r
+ return DDCreateOffScreen(wc);\r
+} /* DDInit */\r
+\r
+static void DDFree( WMesaContext wc)\r
+{\r
+ if( wc->lpDD != NULL )\r
+ {\r
+ DDFreePrimarySurface(wc);\r
+ DDDeleteOffScreen(wc);\r
+ wc->lpDD->lpVtbl->Release(wc->lpDD);\r
+ wc->lpDD = NULL;\r
+ }\r
+ // Clean up the screen on exit\r
+ RedrawWindow( NULL, NULL, NULL, RDW_INVALIDATE | RDW_ERASE |\r
+ RDW_ALLCHILDREN );\r
+\r
+}\r
+#endif\r
+\r
+void WMesaMove(void)\r
+{\r
+ WMesaContext wc = Current;\r
+ POINT pt;\r
+ if (Current != NULL){\r
+ GetClientRect( wc->hwnd, &(wc->rectSurface) );\r
+ pt.x = pt.y = 0;\r
+ ClientToScreen( wc->hwnd, &pt );\r
+ OffsetRect(&(wc->rectSurface), pt.x, pt.y);\r
+ }\r
+}\r
+\r
+\r
+\r
+/*\r
+* Like PACK_8A8B8G8R() but don't use alpha. This is usually an acceptable\r
+* shortcut.\r
+*/\r
+#define PACK_8B8G8R( R, G, B ) ( ((B) << 16) | ((G) << 8) | (R) )\r
+\r
+\r
+/**********************************************************************/\r
+/*** Triangle rendering ***/\r
+/**********************************************************************/\r
+\r
+/*\r
+ * XImage, smooth, depth-buffered, PF_8A8B8G8R triangle.\r
+ */\r
+static void smooth_8A8B8G8R_z_triangle( GLcontext *ctx,\r
+ GLuint v0, GLuint v1, GLuint v2,\r
+ GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define DEPTH_TYPE DEFAULT_SOFTWARE_DEPTH_TYPE\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = PACK_8B8G8R( FixedToInt(ffr), FixedToInt(ffg), \\r
+ FixedToInt(ffb) ); \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, smooth, depth-buffered, PF_8R8G8B triangle.\r
+*/\r
+static void smooth_8R8G8B_z_triangle( GLcontext *ctx,\r
+ GLuint v0, GLuint v1, GLuint v2,\r
+ GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = PACK_8R8G8B( FixedToInt(ffr), FixedToInt(ffg), \\r
+ FixedToInt(ffb) ); \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+\r
+/*\r
+* XImage, smooth, depth-buffered, PF_5R6G5B triangle.\r
+*/\r
+static void smooth_5R6G5B_z_triangle( GLcontext *ctx,\r
+ GLuint v0, GLuint v1, GLuint v2,\r
+ GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)\r
+#define PIXEL_TYPE GLushort\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = PACK_5R6G5B( FixedToInt(ffr), FixedToInt(ffg), \\r
+ FixedToInt(ffb) ); \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+/*\r
+* XImage, flat, depth-buffered, PF_8A8B8G8R triangle.\r
+*/\r
+static void flat_8A8B8G8R_z_triangle( GLcontext *ctx, GLuint v0,\r
+ GLuint v1, GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ unsigned long p = PACK_8B8G8R( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = p; \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, flat, depth-buffered, PF_8R8G8B triangle.\r
+*/\r
+static void flat_8R8G8B_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ unsigned long p = PACK_8R8G8B( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = p; \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, flat, depth-buffered, PF_5R6G5B triangle.\r
+*/\r
+static void flat_5R6G5B_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)\r
+#define PIXEL_TYPE GLushort\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ unsigned long p = PACK_5R6G5B( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = p; \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, smooth, NON-depth-buffered, PF_8A8B8G8R triangle.\r
+*/\r
+static void smooth_8A8B8G8R_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = PACK_8B8G8R( FixedToInt(ffr), FixedToInt(ffg), \\r
+ FixedToInt(ffb) ); \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, smooth, NON-depth-buffered, PF_8R8G8B triangle.\r
+*/\r
+static void smooth_8R8G8B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = PACK_8R8G8B( FixedToInt(ffr), FixedToInt(ffg), \\r
+ FixedToInt(ffb) ); \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, smooth, NON-depth-buffered, PF_5R6G5B triangle.\r
+*/\r
+static void smooth_5R6G5B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)\r
+#define PIXEL_TYPE GLushort\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = PACK_5R6G5B( FixedToInt(ffr), FixedToInt(ffg), \\r
+ FixedToInt(ffb) ); \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+\r
+/*\r
+* XImage, flat, NON-depth-buffered, PF_8A8B8G8R triangle.\r
+*/\r
+static void flat_8A8B8G8R_triangle( GLcontext *ctx, GLuint v0,\r
+ GLuint v1, GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ unsigned long p = PACK_8B8G8R( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = p; \\r
+ } \\r
+ }\r
+\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, flat, NON-depth-buffered, PF_8R8G8B triangle.\r
+*/\r
+static void flat_8R8G8B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR4(X,Y)\r
+#define PIXEL_TYPE GLuint\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ unsigned long p = PACK_8R8G8B( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = p; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, flat, NON-depth-buffered, PF_5R6G5B triangle.\r
+*/\r
+static void flat_5R6G5B_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR2(X,Y)\r
+#define PIXEL_TYPE GLushort\r
+ //#define BYTES_PER_ROW (wmesa->xm_buffer->backimage->bytes_per_line)\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ unsigned long p = PACK_5R6G5B( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2] );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = p; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, smooth, depth-buffered, 8-bit PF_LOOKUP triangle.\r
+*/\r
+\r
+static void smooth_ci_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define INTERP_INDEX 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = FixedToInt(ffi); \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffi += fdidx; \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, flat, depth-buffered, 8-bit PF_LOOKUP triangle.\r
+*/\r
+\r
+static void flat_ci_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ GLuint index = VB->IndexPtr->data[pv]; \\r
+ (*ctx->Driver.Index)( ctx, index );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ pRow[i] = index; \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+\r
+/*\r
+* XImage, smooth, NON-depth-buffered, 8-bit PF_LOOKUP triangle.\r
+*/\r
+\r
+static void smooth_ci_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define INTERP_INDEX 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = FixedToInt(ffi); \\r
+ ffi += fdidx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+/*\r
+* XImage, flat, NON-depth-buffered, 8-bit PF_LOOKUP triangle.\r
+*/\r
+static void flat_ci_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+#define INTERP_Z 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define SETUP_CODE \\r
+ GLuint index = VB->IndexPtr->data[pv]; \\r
+ (*ctx->Driver.Index)( ctx, index );\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx; \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ *pixel = index; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+/*\r
+* XImage, smooth, depth-buffered, 8-bit, PF_DITHER8 triangle.\r
+*/\r
+static void smooth_DITHER8_z_triangle( GLcontext *ctx,\r
+ GLuint v0, GLuint v1, GLuint v2,\r
+ GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+ DITHER_RGB_TO_8BIT_SETUP\r
+#define INTERP_Z 1\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, xx = LEFT, yy = FLIP(Y), len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++,xx++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ DITHER_RGB_TO_8BIT( FixedToInt(ffr), FixedToInt(ffg), \\r
+ FixedToInt(ffb), xx, yy); \\r
+ pRow[i] = pixelDithered; \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+/*\r
+* XImage, flat, depth-buffered, 8-bit PF_DITHER triangle.\r
+*/\r
+static void flat_DITHER8_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+ DITHER_RGB_TO_8BIT_SETUP\r
+#define INTERP_Z 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint i, xx = LEFT, yy = FLIP(Y), len = RIGHT-LEFT; \\r
+ for (i=0;i<len;i++,xx++) { \\r
+ GLdepth z = FixedToDepth(ffz); \\r
+ if (z < zRow[i]) { \\r
+ DITHER_RGB_TO_8BIT( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2], xx, yy); \\r
+ pRow[i] = pixelDithered; \\r
+ zRow[i] = z; \\r
+ } \\r
+ ffz += fdzdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+/*\r
+* XImage, smooth, NON-depth-buffered, 8-bit PF_DITHER triangle.\r
+*/\r
+static void smooth_DITHER8_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+ DITHER_RGB_TO_8BIT_SETUP\r
+#define INTERP_RGB 1\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx, yy = FLIP(Y); \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ DITHER_RGB_TO_8BIT( VB->ColorPtr->data[pv][0], VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2], xx, yy);\\r
+ *pixel = pixelDithered; \\r
+ ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+/*\r
+* XImage, flat, NON-depth-buffered, 8-bit PF_DITHER triangle.\r
+*/\r
+\r
+static void flat_DITHER8_triangle( GLcontext *ctx, GLuint v0, GLuint v1,\r
+ GLuint v2, GLuint pv )\r
+{\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+ DITHER_RGB_TO_8BIT_SETUP\r
+#define PIXEL_ADDRESS(X,Y) PIXELADDR1(X,Y)\r
+#define PIXEL_TYPE GLubyte\r
+#define BYTES_PER_ROW (wmesa->ScanWidth)\r
+\r
+#define INNER_LOOP( LEFT, RIGHT, Y ) \\r
+ { \\r
+ GLint xx, yy = FLIP(Y); \\r
+ PIXEL_TYPE *pixel = pRow; \\r
+ for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \\r
+ DITHER_RGB_TO_8BIT( VB->ColorPtr->data[pv][0], \\r
+ VB->ColorPtr->data[pv][1], VB->ColorPtr->data[pv][2], xx, yy); \\r
+ *pixel = pixelDithered; \\r
+ } \\r
+ }\r
+#ifdef __MINGW32__\r
+ #include "tritemp.h"\r
+#else\r
+\r
+ #ifdef WIN32\r
+// #include "..\tritemp.h"\r
+ #else\r
+ #include "tritemp.h"\r
+ #endif\r
+#endif\r
+}\r
+\r
+\r
+\r
+\r
+static /*triangle_func*/ choose_triangle_function( GLcontext *ctx )\r
+{\r
+#if 0\r
+ WMesaContext wmesa = (WMesaContext) ctx->DriverCtx;\r
+ int depth = wmesa->cColorBits;\r
+\r
+ if (ctx->Polygon.SmoothFlag) return NULL;\r
+ if (ctx->Texture._ReallyEnabled) return NULL;\r
+ if (!wmesa->db_flag) return NULL;\r
+ /*if (wmesa->xm_buffer->buffer==XIMAGE)*/ {\r
+ if ( ctx->Light.ShadeModel==GL_SMOOTH\r
+ && ctx->_RasterMask==DEPTH_BIT\r
+ && ctx->Depth.Func==GL_LESS\r
+ && ctx->Depth.Mask==GL_TRUE\r
+ && ctx->Polygon.StippleFlag==GL_FALSE) {\r
+ switch (wmesa->pixelformat) {\r
+ case PF_8A8B8G8R:\r
+ return smooth_8A8B8G8R_z_triangle;\r
+ case PF_8R8G8B:\r
+ return smooth_8R8G8B_z_triangle;\r
+ case PF_5R6G5B:\r
+ return smooth_5R6G5B_z_triangle;\r
+ case PF_DITHER8:\r
+ return smooth_DITHER8_z_triangle;\r
+ case PF_INDEX8:\r
+ return smooth_ci_z_triangle;\r
+ default:\r
+ return NULL;\r
+ }\r
+ }\r
+ if ( ctx->Light.ShadeModel==GL_FLAT\r
+ && ctx->_RasterMask==DEPTH_BIT\r
+ && ctx->Depth.Func==GL_LESS\r
+ && ctx->Depth.Mask==GL_TRUE\r
+ && ctx->Polygon.StippleFlag==GL_FALSE) {\r
+ switch (wmesa->pixelformat) {\r
+ case PF_8A8B8G8R:\r
+ return flat_8A8B8G8R_z_triangle;\r
+ case PF_8R8G8B:\r
+ return flat_8R8G8B_z_triangle;\r
+ case PF_5R6G5B:\r
+ return flat_5R6G5B_z_triangle;\r
+ case PF_DITHER8:\r
+ return flat_DITHER8_z_triangle;\r
+ case PF_INDEX8:\r
+ return flat_ci_z_triangle;\r
+ default:\r
+ return NULL;\r
+ }\r
+ }\r
+ if ( ctx->_RasterMask==0 /* no depth test */\r
+ && ctx->Light.ShadeModel==GL_SMOOTH\r
+ && ctx->Polygon.StippleFlag==GL_FALSE) {\r
+ switch (wmesa->pixelformat) {\r
+ case PF_8A8B8G8R:\r
+ return smooth_8A8B8G8R_triangle;\r
+ case PF_8R8G8B:\r
+ return smooth_8R8G8B_triangle;\r
+ case PF_5R6G5B:\r
+ return smooth_5R6G5B_triangle;\r
+ case PF_DITHER8:\r
+ return smooth_DITHER8_triangle;\r
+ case PF_INDEX8:\r
+ return smooth_ci_triangle;\r
+ default:\r
+ return NULL;\r
+ }\r
+ }\r
+\r
+ if ( ctx->_RasterMask==0 /* no depth test */\r
+ && ctx->Light.ShadeModel==GL_FLAT\r
+ && ctx->Polygon.StippleFlag==GL_FALSE) {\r
+ switch (wmesa->pixelformat) {\r
+ case PF_8A8B8G8R:\r
+ return flat_8A8B8G8R_triangle;\r
+ case PF_8R8G8B:\r
+ return flat_8R8G8B_triangle;\r
+ case PF_5R6G5B:\r
+ return flat_5R6G5B_triangle;\r
+ case PF_DITHER8:\r
+ return flat_DITHER8_triangle;\r
+ case PF_INDEX8:\r
+ return flat_ci_triangle;\r
+ default:\r
+ return NULL;\r
+ }\r
+ }\r
+\r
+ return NULL;\r
+ }\r
+#endif\r
+}\r
+\r
+/*\r
+* Define a new viewport and reallocate auxillary buffers if the size of\r
+* the window (color buffer) has changed.\r
+*/\r
+void WMesaViewport( GLcontext *ctx,\r
+ GLint x, GLint y, GLsizei width, GLsizei height )\r
+{\r
+#if 0\r
+ /* Save viewport */\r
+ ctx->Viewport.X = x;\r
+ ctx->Viewport.Width = width;\r
+ ctx->Viewport.Y = y;\r
+ ctx->Viewport.Height = height;\r
+\r
+ /* compute scale and bias values */\r
+/* Pre-Keith 3.1 changes\r
+ ctx->Viewport.Map.m[Sx] = (GLfloat) width / 2.0F;\r
+ ctx->Viewport.Map.m[Tx] = ctx->Viewport.Sx + x;\r
+ ctx->Viewport.Map.m[Sy] = (GLfloat) height / 2.0F;\r
+ ctx->Viewport.Map.m[Ty] = ctx->Viewport.Sy + y;\r
+*/\r
+ ctx->Viewport.WindowMap.m[MAT_SX] = (GLfloat) width / 2.0F;\r
+ ctx->Viewport.WindowMap.m[MAT_TX] = ctx->Viewport.WindowMap.m[MAT_SX] + x;\r
+ ctx->Viewport.WindowMap.m[MAT_SY] = (GLfloat) height / 2.0F;\r
+ ctx->Viewport.WindowMap.m[MAT_TY] = ctx->Viewport.WindowMap.m[MAT_SY] + y;\r
+#endif\r
+}\r