Win32 updates (Karl Schultz)
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 14 Sep 2001 22:19:18 +0000 (22:19 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 14 Sep 2001 22:19:18 +0000 (22:19 +0000)
16 files changed:
include/GL/glext.h
include/GL/glu.h
include/GL/glutf90.h
progs/demos/Makefile.win [new file with mode: 0644]
src/glu/sgi/Makefile.win [new file with mode: 0644]
src/glu/sgi/glu.def [new file with mode: 0644]
src/glu/sgi/libutil/project.c
src/glut/glx/Makefile.win
src/glut/glx/glut.def [new file with mode: 0644]
src/glut/glx/win32_x11.h
src/mesa/drivers/osmesa/Makefile.win [new file with mode: 0644]
src/mesa/drivers/windows/wgl.c
src/mesa/drivers/windows/wmesa.c
src/mesa/main/Makefile.win
src/mesa/main/dispatch.c
src/mesa/main/mesa.def

index 66fad47..7694695 100644 (file)
-#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
index 65df77b..4049eed 100644 (file)
@@ -256,65 +256,65 @@ typedef struct GLUtesselator GLUtriangulatorObj;
 /* Internal convenience typedefs */
 typedef void (*_GLUfuncptr)();
 
-extern void gluBeginCurve (GLUnurbs* nurb);
-extern void gluBeginPolygon (GLUtesselator* tess);
-extern void gluBeginSurface (GLUnurbs* nurb);
-extern void gluBeginTrim (GLUnurbs* nurb);
-extern GLint gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-extern GLint gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
-extern GLint gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-extern GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
-extern GLint gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-extern GLint gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-extern GLboolean gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
-extern void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
-extern void gluDeleteNurbsRenderer (GLUnurbs* nurb);
-extern void gluDeleteQuadric (GLUquadric* quad);
-extern void gluDeleteTess (GLUtesselator* tess);
-extern void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
-extern void gluEndCurve (GLUnurbs* nurb);
-extern void gluEndPolygon (GLUtesselator* tess);
-extern void gluEndSurface (GLUnurbs* nurb);
-extern void gluEndTrim (GLUnurbs* nurb);
-extern const GLubyte * gluErrorString (GLenum error);
-extern void gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
-extern const GLubyte * gluGetString (GLenum name);
-extern void gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
-extern void gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
-extern void gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
-extern GLUnurbs* gluNewNurbsRenderer (void);
-extern GLUquadric* gluNewQuadric (void);
-extern GLUtesselator* gluNewTess (void);
-extern void gluNextContour (GLUtesselator* tess, GLenum type);
-extern void gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
-extern void gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
-extern void gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
-extern void gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
-extern void gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
-extern void gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
-extern void gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
-extern void gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
-extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
-extern void gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
-extern GLint gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
-extern void gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
-extern void gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
-extern void gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
-extern void gluQuadricNormals (GLUquadric* quad, GLenum normal);
-extern void gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
-extern void gluQuadricTexture (GLUquadric* quad, GLboolean texture);
-extern GLint gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
-extern void gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
-extern void gluTessBeginContour (GLUtesselator* tess);
-extern void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
-extern void gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
-extern void gluTessEndContour (GLUtesselator* tess);
-extern void gluTessEndPolygon (GLUtesselator* tess);
-extern void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
-extern void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
-extern void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
-extern GLint gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
-extern GLint gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble near, GLdouble far, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
+GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb);
+GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
+GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
+GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
+GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad);
+GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
+GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb);
+GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb);
+GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error);
+GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
+GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name);
+GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
+GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
+GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
+GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void);
+GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void);
+GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void);
+GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
+GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
+GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
+GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
+GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
+GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
+GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
+GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
+GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
+GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
+GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
+GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
+GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
+GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
+GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
+GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
+GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
+GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
+GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
+GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
+GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess);
+GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
+GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
+GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
+GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
+GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble near, GLdouble far, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
 
 #ifdef __cplusplus
 }
index 46f1979..7dc1d67 100644 (file)
@@ -1,81 +1,81 @@
-#ifndef __glutf90_h__
-#define __glutf90_h__
-
-/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */
-
-/* This program is freely distributable without licensing fees
-   and is provided without guarantee or warrantee expressed or
-   implied. This program is -not- in the public domain. */
-
-/* This header provides the binding interface for William Mitchell's
-   f90gl Fortran 90 GLUT binding.  Other GLUT language bindings
-   can and should use this interace. */
-
-/* I appreciate the guidance from William Mitchell
-   (mitchell@cam.nist.gov) in developing this friend interface
-   for use by the f90gl package.  See ../../README.fortran */
-
-#include <GL/glut.h>
-
-/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */
-/* NOTE These values are part of a binary interface for the f90gl Fortran
-   90 binding and so must NOT changes (additions are allowed). */
-
-/* GLUTwindow callbacks. */
-#define GLUT_FCB_DISPLAY         0    /* GLUTdisplayFCB */
-#define GLUT_FCB_RESHAPE         1    /* GLUTreshapeFCB */
-#define GLUT_FCB_MOUSE           2    /* GLUTmouseFCB */
-#define GLUT_FCB_MOTION          3    /* GLUTmotionFCB */
-#define GLUT_FCB_PASSIVE         4    /* GLUTpassiveFCB */
-#define GLUT_FCB_ENTRY           5    /* GLUTentryFCB */
-#define GLUT_FCB_KEYBOARD        6    /* GLUTkeyboardFCB */
-#define GLUT_FCB_KEYBOARD_UP     7    /* GLUTkeyboardFCB */
-#define GLUT_FCB_WINDOW_STATUS   8    /* GLUTwindowStatusFCB */
-#define GLUT_FCB_VISIBILITY      9    /* GLUTvisibilityFCB */
-#define GLUT_FCB_SPECIAL         10   /* GLUTspecialFCB */
-#define GLUT_FCB_SPECIAL_UP      11   /* GLUTspecialFCB */
-#define GLUT_FCB_BUTTON_BOX      12   /* GLUTbuttonBoxFCB */
-#define GLUT_FCB_DIALS           13   /* GLUTdialsFCB */
-#define GLUT_FCB_SPACE_MOTION    14   /* GLUTspaceMotionFCB */
-#define GLUT_FCB_SPACE_ROTATE    15   /* GLUTspaceRotateFCB */
-#define GLUT_FCB_SPACE_BUTTON    16   /* GLUTspaceButtonFCB */
-#define GLUT_FCB_TABLET_MOTION   17   /* GLUTtabletMotionFCB */
-#define GLUT_FCB_TABLET_BUTTON   18   /* GLUTtabletButtonFCB */
-#define GLUT_FCB_JOYSTICK        19   /* GLUTjoystickFCB */
-/* Non-GLUTwindow callbacks. */
-#define GLUT_FCB_OVERLAY_DISPLAY 100  /* GLUTdisplayFCB */
-#define GLUT_FCB_SELECT          101  /* GLUTselectFCB */
-#define GLUT_FCB_TIMER           102  /* GLUTtimerFCB */
-
-/* GLUT Fortran callback function types. */
-typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void);
-typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *);
-/* NOTE the pressed key is int, not unsigned char for Fortran! */
-typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTentryFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *);
-typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z);
-
-typedef void (GLUTCALLBACK *GLUTselectFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *);
-typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *);  /* DEPRICATED. */
-typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);
-typedef void (GLUTCALLBACK *GLUTidleFCB) (void);
-
-/* Functions that set and return Fortran callback functions. */
-extern void* GLUTAPIENTRY __glutGetFCB(int which);
-extern void GLUTAPIENTRY __glutSetFCB(int which, void *func);
-
-#endif  /* __glutf90_h__ */
+#ifndef __glutf90_h__\r
+#define __glutf90_h__\r
+\r
+/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */\r
+\r
+/* This program is freely distributable without licensing fees \r
+   and is provided without guarantee or warrantee expressed or \r
+   implied. This program is -not- in the public domain. */\r
+\r
+/* This header provides the binding interface for William Mitchell's\r
+   f90gl Fortran 90 GLUT binding.  Other GLUT language bindings\r
+   can and should use this interace. */\r
+\r
+/* I appreciate the guidance from William Mitchell\r
+   (mitchell@cam.nist.gov) in developing this friend interface\r
+   for use by the f90gl package.  See ../../README.fortran */\r
+\r
+#include <GL/glut.h>\r
+\r
+/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */\r
+/* NOTE These values are part of a binary interface for the f90gl Fortran\r
+   90 binding and so must NOT changes (additions are allowed). */\r
+\r
+/* GLUTwindow callbacks. */\r
+#define GLUT_FCB_DISPLAY         0    /* GLUTdisplayFCB */\r
+#define GLUT_FCB_RESHAPE         1    /* GLUTreshapeFCB */\r
+#define GLUT_FCB_MOUSE           2    /* GLUTmouseFCB */\r
+#define GLUT_FCB_MOTION          3    /* GLUTmotionFCB */\r
+#define GLUT_FCB_PASSIVE         4    /* GLUTpassiveFCB */\r
+#define GLUT_FCB_ENTRY           5    /* GLUTentryFCB */\r
+#define GLUT_FCB_KEYBOARD        6    /* GLUTkeyboardFCB */\r
+#define GLUT_FCB_KEYBOARD_UP     7    /* GLUTkeyboardFCB */\r
+#define GLUT_FCB_WINDOW_STATUS   8    /* GLUTwindowStatusFCB */\r
+#define GLUT_FCB_VISIBILITY      9    /* GLUTvisibilityFCB */\r
+#define GLUT_FCB_SPECIAL         10   /* GLUTspecialFCB */\r
+#define GLUT_FCB_SPECIAL_UP      11   /* GLUTspecialFCB */\r
+#define GLUT_FCB_BUTTON_BOX      12   /* GLUTbuttonBoxFCB */\r
+#define GLUT_FCB_DIALS           13   /* GLUTdialsFCB */\r
+#define GLUT_FCB_SPACE_MOTION    14   /* GLUTspaceMotionFCB */\r
+#define GLUT_FCB_SPACE_ROTATE    15   /* GLUTspaceRotateFCB */\r
+#define GLUT_FCB_SPACE_BUTTON    16   /* GLUTspaceButtonFCB */\r
+#define GLUT_FCB_TABLET_MOTION   17   /* GLUTtabletMotionFCB */\r
+#define GLUT_FCB_TABLET_BUTTON   18   /* GLUTtabletButtonFCB */\r
+#define GLUT_FCB_JOYSTICK        19   /* GLUTjoystickFCB */\r
+/* Non-GLUTwindow callbacks. */\r
+#define GLUT_FCB_OVERLAY_DISPLAY 100  /* GLUTdisplayFCB */\r
+#define GLUT_FCB_SELECT          101  /* GLUTselectFCB */\r
+#define GLUT_FCB_TIMER           102  /* GLUTtimerFCB */\r
+\r
+/* GLUT Fortran callback function types. */\r
+typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void);\r
+typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *);\r
+/* NOTE the pressed key is int, not unsigned char for Fortran! */\r
+typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTentryFCB) (int *);\r
+typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *);\r
+typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *);\r
+typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z);\r
+\r
+typedef void (GLUTCALLBACK *GLUTselectFCB) (int *);\r
+typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *);\r
+typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *);  /* DEPRICATED. */\r
+typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *);\r
+typedef void (GLUTCALLBACK *GLUTidleFCB) (void);\r
+\r
+/* Functions that set and return Fortran callback functions. */\r
+GLUTAPI void* APIENTRY __glutGetFCB(int which);\r
+GLUTAPI void APIENTRY __glutSetFCB(int which, void *func);\r
+\r
+#endif  /* __glutf90_h__ */\r
diff --git a/progs/demos/Makefile.win b/progs/demos/Makefile.win
new file mode 100644 (file)
index 0000000..9cb089e
--- /dev/null
@@ -0,0 +1,86 @@
+# $Id: Makefile.win,v 1.1 2001/09/14 22:19:18 brianp Exp $\r
+\r
+# Mesa 3-D graphics library\r
+# Version:  3.5\r
+# Copyright (C) 1995-2001  Brian Paul\r
+\r
+# Makefile for GLUT-based demo programs for Windows\r
+\r
+!include <win32.mak>\r
+\r
+##### MACROS #####\r
+\r
+TOP    = ..\r
+INCDIR = ..\include\r
+LIBDIR = ..\lib\r
+\r
+PROGS = anisotropic \\r
+       bounce \\r
+       clearspd \\r
+       cubemap \\r
+       drawpix \\r
+       fire \\r
+       gamma \\r
+       gears \\r
+       geartrain \\r
+       glinfo \\r
+       gloss \\r
+       gltestperf \\r
+       glutfx \\r
+       isosurf \\r
+       ipers \\r
+       lodbias \\r
+       morph3d \\r
+       multiarb \\r
+       occlude \\r
+       osdemo \\r
+       paltex \\r
+       pixeltex \\r
+       pointblast \\r
+       ray \\r
+       readpix \\r
+       reflect \\r
+       renormal \\r
+       shadowtex \\r
+       spectex \\r
+       stex3d \\r
+       teapot \\r
+       terrain \\r
+       tessdemo \\r
+       texcyl \\r
+       texdown \\r
+       texenv \\r
+       texobj \\r
+       trispd \\r
+       tunnel \\r
+       tunnel2 \\r
+       winpos\r
+\r
+SRCS =\r
+OSMESASRCS = osdemo.c\r
+\r
+!include "../mesawin32.mak"\r
+\r
+##### TARGETS #####\r
+\r
+clean::\r
+\r
+realclean::\r
+\r
+targets: readtex.c readtex.h $(PROGS)\r
+\r
+# remove comments when we get non-osmesa pgm working\r
+#$(EXES) : $*.obj $(DEPLIBS)\r
+#      echo $@\r
+#      $(link) -out:$@ $** $(LIBS)\r
+\r
+$(OSMESAEXES) : $*.obj $(DEPLIBS)\r
+       echo $@\r
+       $(link) -out:$@ $** $(LIBS) $(EXTRALIBS)\r
+\r
+readtex.c:\r
+       @copy ../util/readtex.c .\r
+\r
+readtex.h:\r
+       @copy ../util/readtex.c .\r
+\r
diff --git a/src/glu/sgi/Makefile.win b/src/glu/sgi/Makefile.win
new file mode 100644 (file)
index 0000000..1d239e7
--- /dev/null
@@ -0,0 +1,156 @@
+# Makefile for Win32\r
+\r
+#\r
+# Sept 12, 2001\r
+# Note: The nurbs code is not being built at this time.\r
+# If you want to work on it, uncomment the definitions\r
+# noted below to try to compile the sources.\r
+# There are numerous problems, some of which may be solved\r
+# by setting some #defines.\r
+#\r
+\r
+!include <win32.mak>\r
+\r
+.SUFFIXES : .cc\r
+\r
+TOP = ..\r
+\r
+GLU_SRCS_CC = \\r
+       libnurbs\interface\bezierEval.cc \\r
+       libnurbs\interface\bezierPatch.cc \\r
+       libnurbs\interface\bezierPatchMesh.cc \\r
+       libnurbs\interface\glcurveval.cc \\r
+       libnurbs\interface\glinterface.cc \\r
+       libnurbs\interface\glrenderer.cc \\r
+       libnurbs\interface\glsurfeval.cc \\r
+       libnurbs\interface\incurveeval.cc \\r
+       libnurbs\interface\insurfeval.cc \\r
+       libnurbs\internals\arc.cc \\r
+       libnurbs\internals\arcsorter.cc \\r
+       libnurbs\internals\arctess.cc \\r
+       libnurbs\internals\backend.cc \\r
+       libnurbs\internals\basiccrveval.cc \\r
+       libnurbs\internals\basicsurfeval.cc \\r
+       libnurbs\internals\bin.cc \\r
+       libnurbs\internals\bufpool.cc \\r
+       libnurbs\internals\cachingeval.cc \\r
+       libnurbs\internals\ccw.cc \\r
+       libnurbs\internals\coveandtiler.cc \\r
+       libnurbs\internals\curve.cc \\r
+       libnurbs\internals\curvelist.cc \\r
+       libnurbs\internals\curvesub.cc \\r
+       libnurbs\internals\dataTransform.cc \\r
+       libnurbs\internals\displaylist.cc \\r
+       libnurbs\internals\flist.cc \\r
+       libnurbs\internals\flistsorter.cc \\r
+       libnurbs\internals\hull.cc \\r
+       libnurbs\internals\intersect.cc \\r
+       libnurbs\internals\knotvector.cc \\r
+       libnurbs\internals\mapdesc.cc \\r
+       libnurbs\internals\mapdescv.cc \\r
+       libnurbs\internals\maplist.cc \\r
+       libnurbs\internals\mesher.cc \\r
+       libnurbs\internals\monoTriangulationBackend.cc \\r
+       libnurbs\internals\monotonizer.cc \\r
+       libnurbs\internals\mycode.cc \\r
+       libnurbs\internals\nurbsinterfac.cc \\r
+       libnurbs\internals\nurbstess.cc \\r
+       libnurbs\internals\patch.cc \\r
+       libnurbs\internals\patchlist.cc \\r
+       libnurbs\internals\quilt.cc \\r
+       libnurbs\internals\reader.cc \\r
+       libnurbs\internals\renderhints.cc \\r
+       libnurbs\internals\slicer.cc \\r
+       libnurbs\internals\sorter.cc \\r
+       libnurbs\internals\splitarcs.cc \\r
+       libnurbs\internals\subdivider.cc \\r
+       libnurbs\internals\tobezier.cc \\r
+       libnurbs\internals\trimline.cc \\r
+       libnurbs\internals\trimregion.cc \\r
+       libnurbs\internals\trimvertpool.cc \\r
+       libnurbs\internals\uarray.cc \\r
+       libnurbs\internals\varray.cc \\r
+       libnurbs\nurbtess\directedLine.cc \\r
+       libnurbs\nurbtess\gridWrap.cc \\r
+       libnurbs\nurbtess\monoChain.cc \\r
+       libnurbs\nurbtess\monoPolyPart.cc \\r
+       libnurbs\nurbtess\monoTriangulation.cc \\r
+       libnurbs\nurbtess\partitionX.cc \\r
+       libnurbs\nurbtess\partitionY.cc \\r
+       libnurbs\nurbtess\polyDBG.cc \\r
+       libnurbs\nurbtess\polyUtil.cc \\r
+       libnurbs\nurbtess\primitiveStream.cc \\r
+       libnurbs\nurbtess\quicksort.cc \\r
+       libnurbs\nurbtess\rectBlock.cc \\r
+       libnurbs\nurbtess\sampleComp.cc \\r
+       libnurbs\nurbtess\sampleCompBot.cc \\r
+       libnurbs\nurbtess\sampleCompRight.cc \\r
+       libnurbs\nurbtess\sampleCompTop.cc \\r
+       libnurbs\nurbtess\sampleMonoPoly.cc \\r
+       libnurbs\nurbtess\sampledLine.cc \\r
+       libnurbs\nurbtess\searchTree.cc\r
+\r
+GLU_SRCS = \\r
+       libtess\dict.c \\r
+       libtess\geom.c \\r
+       libtess\memalloc.c \\r
+       libtess\mesh.c \\r
+       libtess\normal.c \\r
+       libtess\priorityq.c \\r
+       libtess\render.c \\r
+       libtess\sweep.c \\r
+       libtess\tess.c \\r
+       libtess\tessmono.c \\r
+       libutil\error.c \\r
+       libutil\glue.c \\r
+       libutil\mipmap.c \\r
+       libutil\project.c \\r
+       libutil\quad.c \\r
+       libutil\registry.c\r
+\r
+SRCS   = $(GLU_SRCS)\r
+\r
+GLUDLL = glu32.dll\r
+\r
+all    : gludll install\r
+\r
+!include "$(TOP)/mesawin32.mak"\r
+\r
+gludll : $(GLUDLL)\r
+\r
+CFLAGS = $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -Iinclude -DBUILD_GL32\r
+LFLAGS = $(dlllflags) $(LFLAGS)\r
+\r
+OBJS   = $(GLU_SRCS:.c=.obj)\r
+LIBS   = ../lib/opengl32.lib winmm.lib $(guilibsdll)\r
+\r
+# Uncomment these definitions to try to compile the NURBS code.\r
+#OBJS  = $(GLU_SRCS_CC:.cc=.obj) $(GLU_SRCS:.c=.obj)\r
+#NURBSINC = -Ilibnurbs\interface -Ilibnurbs\internals -Ilibnurbs\nurbtess \r
+#CFLAGS  = $(CFLAGS) $(NURBSINC)\r
+\r
+$(GLUDLL)      : $(OBJS) glu.def\r
+       $(link) $(LFLAGS) -out:$(GLUDLL) -def:glu.def $(OBJS) $(LIBS)\r
+\r
+install        : $(GLUDLL)\r
+       @echo "copying Mesa GLU dynamic link library to system directory..."\r
+       -copy $(GLUDLL) $(TOP)\lib\r
+       @echo "copying Mesa GLU import library to library directory..."\r
+       -copy $(GLU) $(TOP)\lib\r
+\r
+clean  ::\r
+       @del /f libtess\*.obj libutil\*.obj \r
+       @del /f libnurbs\interface\*.obj libnurbs\internals\*.obj \r
+       @del /f libnurbs\nurbtess\*.obj\r
+\r
+# override default inference rule with one that writes the object to\r
+# the correct subdir. \r
+\r
+.c.obj :\r
+       $(cc) $(CFLAGS) -I. $< /Fo$*.obj\r
+\r
+# /TP is needed for C++ files because MS compiler\r
+# does not recognize .cc as a C++ file.\r
+\r
+.cc.obj        :\r
+       $(cc) $(CFLAGS) -I. $< /TP /Fo$*.obj\r
diff --git a/src/glu/sgi/glu.def b/src/glu/sgi/glu.def
new file mode 100644 (file)
index 0000000..19da640
--- /dev/null
@@ -0,0 +1,46 @@
+DESCRIPTION 'Mesa GLU (OpenGL work-alike) for Win32'
+VERSION 3.5
+
+EXPORTS
+       gluBeginPolygon
+       gluBuild1DMipmapLevels
+       gluBuild1DMipmaps
+       gluBuild2DMipmapLevels
+       gluBuild2DMipmaps
+       gluBuild3DMipmapLevels
+       gluBuild3DMipmaps
+       gluCheckExtension
+       gluCylinder
+       gluDeleteQuadric
+       gluDeleteTess
+       gluDisk
+       gluEndPolygon
+       gluErrorString
+       gluGetString
+       gluGetTessProperty
+       gluLookAt
+       gluNewQuadric
+       gluNewTess
+       gluNextContour
+       gluOrtho2D
+       gluPartialDisk
+       gluPerspective
+       gluPickMatrix
+       gluProject
+       gluQuadricCallback
+       gluQuadricDrawStyle
+       gluQuadricNormals
+       gluQuadricOrientation
+       gluQuadricTexture
+       gluScaleImage
+       gluSphere
+       gluTessBeginContour
+       gluTessBeginPolygon
+       gluTessCallback
+       gluTessEndContour
+       gluTessEndPolygon
+       gluTessNormal
+       gluTessProperty
+       gluTessVertex
+       gluUnProject
+       gluUnProject4
index f67c878..4d98194 100644 (file)
-/*
-** 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: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. 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.
-**
-** $Date: 2001/07/16 15:46:42 $ $Revision: 1.2 $
-** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libutil/project.c,v 1.2 2001/07/16 15:46:42 brianp Exp $
-*/
-
-#include "gluos.h"
-#include <math.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "gluint.h"
-
-/*
-** Make m an identity matrix
-*/
-static void __gluMakeIdentityd(GLdouble m[16])
-{
-    m[0+4*0] = 1; m[0+4*1] = 0; m[0+4*2] = 0; m[0+4*3] = 0;
-    m[1+4*0] = 0; m[1+4*1] = 1; m[1+4*2] = 0; m[1+4*3] = 0;
-    m[2+4*0] = 0; m[2+4*1] = 0; m[2+4*2] = 1; m[2+4*3] = 0;
-    m[3+4*0] = 0; m[3+4*1] = 0; m[3+4*2] = 0; m[3+4*3] = 1;
-}
-
-static void __gluMakeIdentityf(GLfloat m[16])
-{
-    m[0+4*0] = 1; m[0+4*1] = 0; m[0+4*2] = 0; m[0+4*3] = 0;
-    m[1+4*0] = 0; m[1+4*1] = 1; m[1+4*2] = 0; m[1+4*3] = 0;
-    m[2+4*0] = 0; m[2+4*1] = 0; m[2+4*2] = 1; m[2+4*3] = 0;
-    m[3+4*0] = 0; m[3+4*1] = 0; m[3+4*2] = 0; m[3+4*3] = 1;
-}
-
-void GLAPIENTRY
-gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)
-{
-    glOrtho(left, right, bottom, top, -1, 1);
-}
-
-#define __glPi 3.14159265358979323846
-
-void GLAPIENTRY
-gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)
-{
-    GLdouble m[4][4];
-    double sine, cotangent, deltaZ;
-    double radians = fovy / 2 * __glPi / 180;
-
-    deltaZ = zFar - zNear;
-    sine = sin(radians);
-    if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) {
-       return;
-    }
-    cotangent = COS(radians) / sine;
-
-    __gluMakeIdentityd(&m[0][0]);
-    m[0][0] = cotangent / aspect;
-    m[1][1] = cotangent;
-    m[2][2] = -(zFar + zNear) / deltaZ;
-    m[2][3] = -1;
-    m[3][2] = -2 * zNear * zFar / deltaZ;
-    m[3][3] = 0;
-    glMultMatrixd(&m[0][0]);
-}
-
-static void normalize(float v[3])
-{
-    float r;
-
-    r = sqrt( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] );
-    if (r == 0.0) return;
-
-    v[0] /= r;
-    v[1] /= r;
-    v[2] /= r;
-}
-
-static void cross(float v1[3], float v2[3], float result[3])
-{
-    result[0] = v1[1]*v2[2] - v1[2]*v2[1];
-    result[1] = v1[2]*v2[0] - v1[0]*v2[2];
-    result[2] = v1[0]*v2[1] - v1[1]*v2[0];
-}
-
-void GLAPIENTRY
-gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx,
-         GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy,
-         GLdouble upz)
-{
-    int i;
-    float forward[3], side[3], up[3];
-    GLfloat m[4][4];
-
-    forward[0] = centerx - eyex;
-    forward[1] = centery - eyey;
-    forward[2] = centerz - eyez;
-
-    up[0] = upx;
-    up[1] = upy;
-    up[2] = upz;
-
-    normalize(forward);
-
-    /* Side = forward x up */
-    cross(forward, up, side);
-    normalize(side);
-
-    /* Recompute up as: up = side x forward */
-    cross(side, forward, up);
-
-    __gluMakeIdentityf(&m[0][0]);
-    m[0][0] = side[0];
-    m[1][0] = side[1];
-    m[2][0] = side[2];
-
-    m[0][1] = up[0];
-    m[1][1] = up[1];
-    m[2][1] = up[2];
-
-    m[0][2] = -forward[0];
-    m[1][2] = -forward[1];
-    m[2][2] = -forward[2];
-
-    glMultMatrixf(&m[0][0]);
-    glTranslated(-eyex, -eyey, -eyez);
-}
-
-static void __gluMultMatrixVecd(const GLdouble matrix[16], const GLdouble in[4],
-                     GLdouble out[4])
-{
-    int i;
-
-    for (i=0; i<4; i++) {
-       out[i] = 
-           in[0] * matrix[0*4+i] +
-           in[1] * matrix[1*4+i] +
-           in[2] * matrix[2*4+i] +
-           in[3] * matrix[3*4+i];
-    }
-}
-
-/*
-** inverse = invert(src)
-*/
-static int __gluInvertMatrixd(const GLdouble src[16], GLdouble inverse[16])
-{
-    int i, j, k, swap;
-    double t;
-    GLdouble temp[4][4];
-
-    for (i=0; i<4; i++) {
-       for (j=0; j<4; j++) {
-           temp[i][j] = src[i*4+j];
-       }
-    }
-    __gluMakeIdentityd(inverse);
-
-    for (i = 0; i < 4; i++) {
-       /*
-       ** Look for largest element in column
-       */
-       swap = i;
-       for (j = i + 1; j < 4; j++) {
-           if (fabs(temp[j][i]) > fabs(temp[i][i])) {
-               swap = j;
-           }
-       }
-
-       if (swap != i) {
-           /*
-           ** Swap rows.
-           */
-           for (k = 0; k < 4; k++) {
-               t = temp[i][k];
-               temp[i][k] = temp[swap][k];
-               temp[swap][k] = t;
-
-               t = inverse[i*4+k];
-               inverse[i*4+k] = inverse[swap*4+k];
-               inverse[swap*4+k] = t;
-           }
-       }
-
-       if (temp[i][i] == 0) {
-           /*
-           ** No non-zero pivot.  The matrix is singular, which shouldn't
-           ** happen.  This means the user gave us a bad matrix.
-           */
-           return GL_FALSE;
-       }
-
-       t = temp[i][i];
-       for (k = 0; k < 4; k++) {
-           temp[i][k] /= t;
-           inverse[i*4+k] /= t;
-       }
-       for (j = 0; j < 4; j++) {
-           if (j != i) {
-               t = temp[j][i];
-               for (k = 0; k < 4; k++) {
-                   temp[j][k] -= temp[i][k]*t;
-                   inverse[j*4+k] -= inverse[i*4+k]*t;
-               }
-           }
-       }
-    }
-    return GL_TRUE;
-}
-
-static void __gluMultMatricesd(const GLdouble a[16], const GLdouble b[16],
-                               GLdouble r[16])
-{
-    int i, j;
-
-    for (i = 0; i < 4; i++) {
-       for (j = 0; j < 4; j++) {
-           r[i*4+j] = 
-               a[i*4+0]*b[0*4+j] +
-               a[i*4+1]*b[1*4+j] +
-               a[i*4+2]*b[2*4+j] +
-               a[i*4+3]*b[3*4+j];
-       }
-    }
-}
-
-GLint GLAPIENTRY
-gluProject(GLdouble objx, GLdouble objy, GLdouble objz, 
-             const GLdouble modelMatrix[16], 
-             const GLdouble projMatrix[16],
-              const GLint viewport[4],
-             GLdouble *winx, GLdouble *winy, GLdouble *winz)
-{
-    double in[4];
-    double out[4];
-
-    in[0]=objx;
-    in[1]=objy;
-    in[2]=objz;
-    in[3]=1.0;
-    __gluMultMatrixVecd(modelMatrix, in, out);
-    __gluMultMatrixVecd(projMatrix, out, in);
-    if (in[3] == 0.0) return(GL_FALSE);
-    in[0] /= in[3];
-    in[1] /= in[3];
-    in[2] /= in[3];
-    /* Map x, y and z to range 0-1 */
-    in[0] = in[0] * 0.5 + 0.5;
-    in[1] = in[1] * 0.5 + 0.5;
-    in[2] = in[2] * 0.5 + 0.5;
-
-    /* Map x,y to viewport */
-    in[0] = in[0] * viewport[2] + viewport[0];
-    in[1] = in[1] * viewport[3] + viewport[1];
-
-    *winx=in[0];
-    *winy=in[1];
-    *winz=in[2];
-    return(GL_TRUE);
-}
-
-GLint GLAPIENTRY
-gluUnProject(GLdouble winx, GLdouble winy, GLdouble winz,
-               const GLdouble modelMatrix[16], 
-               const GLdouble projMatrix[16],
-                const GLint viewport[4],
-               GLdouble *objx, GLdouble *objy, GLdouble *objz)
-{
-    double finalMatrix[16];
-    double in[4];
-    double out[4];
-
-    __gluMultMatricesd(modelMatrix, projMatrix, finalMatrix);
-    if (!__gluInvertMatrixd(finalMatrix, finalMatrix)) return(GL_FALSE);
-
-    in[0]=winx;
-    in[1]=winy;
-    in[2]=winz;
-    in[3]=1.0;
-
-    /* Map x and y from window coordinates */
-    in[0] = (in[0] - viewport[0]) / viewport[2];
-    in[1] = (in[1] - viewport[1]) / viewport[3];
-
-    /* Map to range -1 to 1 */
-    in[0] = in[0] * 2 - 1;
-    in[1] = in[1] * 2 - 1;
-    in[2] = in[2] * 2 - 1;
-
-    __gluMultMatrixVecd(finalMatrix, in, out);
-    if (out[3] == 0.0) return(GL_FALSE);
-    out[0] /= out[3];
-    out[1] /= out[3];
-    out[2] /= out[3];
-    *objx = out[0];
-    *objy = out[1];
-    *objz = out[2];
-    return(GL_TRUE);
-}
-
-GLint GLAPIENTRY
-gluUnProject4(GLdouble winx, GLdouble winy, GLdouble winz, GLdouble clipw,
-             const GLdouble modelMatrix[16], 
-             const GLdouble projMatrix[16],
-             const GLint viewport[4],
-             GLclampd near, GLclampd farVal,               
-             GLdouble *objx, GLdouble *objy, GLdouble *objz,
-             GLdouble *objw)
-{
-    double finalMatrix[16];
-    double in[4];
-    double out[4];
-
-    __gluMultMatricesd(modelMatrix, projMatrix, finalMatrix);
-    if (!__gluInvertMatrixd(finalMatrix, finalMatrix)) return(GL_FALSE);
-
-    in[0]=winx;
-    in[1]=winy;
-    in[2]=winz;
-    in[3]=clipw;
-
-    /* Map x and y from window coordinates */
-    in[0] = (in[0] - viewport[0]) / viewport[2];
-    in[1] = (in[1] - viewport[1]) / viewport[3];
-    in[2] = (in[2] - near) / (farVal - near);
-
-    /* Map to range -1 to 1 */
-    in[0] = in[0] * 2 - 1;
-    in[1] = in[1] * 2 - 1;
-    in[2] = in[2] * 2 - 1;
-
-    __gluMultMatrixVecd(finalMatrix, in, out);
-    if (out[3] == 0.0) return(GL_FALSE);
-    *objx = out[0];
-    *objy = out[1];
-    *objz = out[2];
-    *objw = out[3];
-    return(GL_TRUE);
-}
-
-void GLAPIENTRY
-gluPickMatrix(GLdouble x, GLdouble y, GLdouble deltax, GLdouble deltay,
-                 GLint viewport[4])
-{
-    if (deltax <= 0 || deltay <= 0) { 
-       return;
-    }
-
-    /* Translate and scale the picked region to the entire window */
-    glTranslatef((viewport[2] - 2 * (x - viewport[0])) / deltax,
-           (viewport[3] - 2 * (y - viewport[1])) / deltay, 0);
-    glScalef(viewport[2] / deltax, viewport[3] / deltay, 1.0);
-}
+/*\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: The application programming interfaces\r
+** established by SGI in conjunction with the Original Code are The\r
+** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\r
+** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\r
+** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\r
+** Window System(R) (Version 1.3), released October 19, 1998. This software\r
+** was created using the OpenGL(R) version 1.2.1 Sample Implementation\r
+** published by SGI, but has not been independently verified as being\r
+** compliant with the OpenGL(R) version 1.2.1 Specification.\r
+**\r
+** $Date: 2001/09/14 22:19:19 $ $Revision: 1.3 $\r
+** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libutil/project.c,v 1.3 2001/09/14 22:19:19 brianp Exp $\r
+*/\r
+\r
+#include "gluos.h"\r
+#include <math.h>\r
+#include <GL/gl.h>\r
+#include <GL/glu.h>\r
+#include "gluint.h"\r
+\r
+/*\r
+** Make m an identity matrix\r
+*/\r
+static void __gluMakeIdentityd(GLdouble m[16])\r
+{\r
+    m[0+4*0] = 1; m[0+4*1] = 0; m[0+4*2] = 0; m[0+4*3] = 0;\r
+    m[1+4*0] = 0; m[1+4*1] = 1; m[1+4*2] = 0; m[1+4*3] = 0;\r
+    m[2+4*0] = 0; m[2+4*1] = 0; m[2+4*2] = 1; m[2+4*3] = 0;\r
+    m[3+4*0] = 0; m[3+4*1] = 0; m[3+4*2] = 0; m[3+4*3] = 1;\r
+}\r
+\r
+static void __gluMakeIdentityf(GLfloat m[16])\r
+{\r
+    m[0+4*0] = 1; m[0+4*1] = 0; m[0+4*2] = 0; m[0+4*3] = 0;\r
+    m[1+4*0] = 0; m[1+4*1] = 1; m[1+4*2] = 0; m[1+4*3] = 0;\r
+    m[2+4*0] = 0; m[2+4*1] = 0; m[2+4*2] = 1; m[2+4*3] = 0;\r
+    m[3+4*0] = 0; m[3+4*1] = 0; m[3+4*2] = 0; m[3+4*3] = 1;\r
+}\r
+\r
+void GLAPIENTRY\r
+gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)\r
+{\r
+    glOrtho(left, right, bottom, top, -1, 1);\r
+}\r
+\r
+#define __glPi 3.14159265358979323846\r
+\r
+void GLAPIENTRY\r
+gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)\r
+{\r
+    GLdouble m[4][4];\r
+    double sine, cotangent, deltaZ;\r
+    double radians = fovy / 2 * __glPi / 180;\r
+\r
+    deltaZ = zFar - zNear;\r
+    sine = sin(radians);\r
+    if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) {\r
+       return;\r
+    }\r
+    cotangent = COS(radians) / sine;\r
+\r
+    __gluMakeIdentityd(&m[0][0]);\r
+    m[0][0] = cotangent / aspect;\r
+    m[1][1] = cotangent;\r
+    m[2][2] = -(zFar + zNear) / deltaZ;\r
+    m[2][3] = -1;\r
+    m[3][2] = -2 * zNear * zFar / deltaZ;\r
+    m[3][3] = 0;\r
+    glMultMatrixd(&m[0][0]);\r
+}\r
+\r
+static void normalize(float v[3])\r
+{\r
+    float r;\r
+\r
+    r = sqrt( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] );\r
+    if (r == 0.0) return;\r
+\r
+    v[0] /= r;\r
+    v[1] /= r;\r
+    v[2] /= r;\r
+}\r
+\r
+static void cross(float v1[3], float v2[3], float result[3])\r
+{\r
+    result[0] = v1[1]*v2[2] - v1[2]*v2[1];\r
+    result[1] = v1[2]*v2[0] - v1[0]*v2[2];\r
+    result[2] = v1[0]*v2[1] - v1[1]*v2[0];\r
+}\r
+\r
+void GLAPIENTRY\r
+gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx,\r
+         GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy,\r
+         GLdouble upz)\r
+{\r
+    int i;\r
+    float forward[3], side[3], up[3];\r
+    GLfloat m[4][4];\r
+\r
+    forward[0] = centerx - eyex;\r
+    forward[1] = centery - eyey;\r
+    forward[2] = centerz - eyez;\r
+\r
+    up[0] = upx;\r
+    up[1] = upy;\r
+    up[2] = upz;\r
+\r
+    normalize(forward);\r
+\r
+    /* Side = forward x up */\r
+    cross(forward, up, side);\r
+    normalize(side);\r
+\r
+    /* Recompute up as: up = side x forward */\r
+    cross(side, forward, up);\r
+\r
+    __gluMakeIdentityf(&m[0][0]);\r
+    m[0][0] = side[0];\r
+    m[1][0] = side[1];\r
+    m[2][0] = side[2];\r
+\r
+    m[0][1] = up[0];\r
+    m[1][1] = up[1];\r
+    m[2][1] = up[2];\r
+\r
+    m[0][2] = -forward[0];\r
+    m[1][2] = -forward[1];\r
+    m[2][2] = -forward[2];\r
+\r
+    glMultMatrixf(&m[0][0]);\r
+    glTranslated(-eyex, -eyey, -eyez);\r
+}\r
+\r
+static void __gluMultMatrixVecd(const GLdouble matrix[16], const GLdouble in[4],\r
+                     GLdouble out[4])\r
+{\r
+    int i;\r
+\r
+    for (i=0; i<4; i++) {\r
+       out[i] = \r
+           in[0] * matrix[0*4+i] +\r
+           in[1] * matrix[1*4+i] +\r
+           in[2] * matrix[2*4+i] +\r
+           in[3] * matrix[3*4+i];\r
+    }\r
+}\r
+\r
+/*\r
+** inverse = invert(src)\r
+*/\r
+static int __gluInvertMatrixd(const GLdouble src[16], GLdouble inverse[16])\r
+{\r
+    int i, j, k, swap;\r
+    double t;\r
+    GLdouble temp[4][4];\r
+\r
+    for (i=0; i<4; i++) {\r
+       for (j=0; j<4; j++) {\r
+           temp[i][j] = src[i*4+j];\r
+       }\r
+    }\r
+    __gluMakeIdentityd(inverse);\r
+\r
+    for (i = 0; i < 4; i++) {\r
+       /*\r
+       ** Look for largest element in column\r
+       */\r
+       swap = i;\r
+       for (j = i + 1; j < 4; j++) {\r
+           if (fabs(temp[j][i]) > fabs(temp[i][i])) {\r
+               swap = j;\r
+           }\r
+       }\r
+\r
+       if (swap != i) {\r
+           /*\r
+           ** Swap rows.\r
+           */\r
+           for (k = 0; k < 4; k++) {\r
+               t = temp[i][k];\r
+               temp[i][k] = temp[swap][k];\r
+               temp[swap][k] = t;\r
+\r
+               t = inverse[i*4+k];\r
+               inverse[i*4+k] = inverse[swap*4+k];\r
+               inverse[swap*4+k] = t;\r
+           }\r
+       }\r
+\r
+       if (temp[i][i] == 0) {\r
+           /*\r
+           ** No non-zero pivot.  The matrix is singular, which shouldn't\r
+           ** happen.  This means the user gave us a bad matrix.\r
+           */\r
+           return GL_FALSE;\r
+       }\r
+\r
+       t = temp[i][i];\r
+       for (k = 0; k < 4; k++) {\r
+           temp[i][k] /= t;\r
+           inverse[i*4+k] /= t;\r
+       }\r
+       for (j = 0; j < 4; j++) {\r
+           if (j != i) {\r
+               t = temp[j][i];\r
+               for (k = 0; k < 4; k++) {\r
+                   temp[j][k] -= temp[i][k]*t;\r
+                   inverse[j*4+k] -= inverse[i*4+k]*t;\r
+               }\r
+           }\r
+       }\r
+    }\r
+    return GL_TRUE;\r
+}\r
+\r
+static void __gluMultMatricesd(const GLdouble a[16], const GLdouble b[16],\r
+                               GLdouble r[16])\r
+{\r
+    int i, j;\r
+\r
+    for (i = 0; i < 4; i++) {\r
+       for (j = 0; j < 4; j++) {\r
+           r[i*4+j] = \r
+               a[i*4+0]*b[0*4+j] +\r
+               a[i*4+1]*b[1*4+j] +\r
+               a[i*4+2]*b[2*4+j] +\r
+               a[i*4+3]*b[3*4+j];\r
+       }\r
+    }\r
+}\r
+\r
+GLint GLAPIENTRY\r
+gluProject(GLdouble objx, GLdouble objy, GLdouble objz, \r
+             const GLdouble modelMatrix[16], \r
+             const GLdouble projMatrix[16],\r
+              const GLint viewport[4],\r
+             GLdouble *winx, GLdouble *winy, GLdouble *winz)\r
+{\r
+    double in[4];\r
+    double out[4];\r
+\r
+    in[0]=objx;\r
+    in[1]=objy;\r
+    in[2]=objz;\r
+    in[3]=1.0;\r
+    __gluMultMatrixVecd(modelMatrix, in, out);\r
+    __gluMultMatrixVecd(projMatrix, out, in);\r
+    if (in[3] == 0.0) return(GL_FALSE);\r
+    in[0] /= in[3];\r
+    in[1] /= in[3];\r
+    in[2] /= in[3];\r
+    /* Map x, y and z to range 0-1 */\r
+    in[0] = in[0] * 0.5 + 0.5;\r
+    in[1] = in[1] * 0.5 + 0.5;\r
+    in[2] = in[2] * 0.5 + 0.5;\r
+\r
+    /* Map x,y to viewport */\r
+    in[0] = in[0] * viewport[2] + viewport[0];\r
+    in[1] = in[1] * viewport[3] + viewport[1];\r
+\r
+    *winx=in[0];\r
+    *winy=in[1];\r
+    *winz=in[2];\r
+    return(GL_TRUE);\r
+}\r
+\r
+GLint GLAPIENTRY\r
+gluUnProject(GLdouble winx, GLdouble winy, GLdouble winz,\r
+               const GLdouble modelMatrix[16], \r
+               const GLdouble projMatrix[16],\r
+                const GLint viewport[4],\r
+               GLdouble *objx, GLdouble *objy, GLdouble *objz)\r
+{\r
+    double finalMatrix[16];\r
+    double in[4];\r
+    double out[4];\r
+\r
+    __gluMultMatricesd(modelMatrix, projMatrix, finalMatrix);\r
+    if (!__gluInvertMatrixd(finalMatrix, finalMatrix)) return(GL_FALSE);\r
+\r
+    in[0]=winx;\r
+    in[1]=winy;\r
+    in[2]=winz;\r
+    in[3]=1.0;\r
+\r
+    /* Map x and y from window coordinates */\r
+    in[0] = (in[0] - viewport[0]) / viewport[2];\r
+    in[1] = (in[1] - viewport[1]) / viewport[3];\r
+\r
+    /* Map to range -1 to 1 */\r
+    in[0] = in[0] * 2 - 1;\r
+    in[1] = in[1] * 2 - 1;\r
+    in[2] = in[2] * 2 - 1;\r
+\r
+    __gluMultMatrixVecd(finalMatrix, in, out);\r
+    if (out[3] == 0.0) return(GL_FALSE);\r
+    out[0] /= out[3];\r
+    out[1] /= out[3];\r
+    out[2] /= out[3];\r
+    *objx = out[0];\r
+    *objy = out[1];\r
+    *objz = out[2];\r
+    return(GL_TRUE);\r
+}\r
+\r
+GLint GLAPIENTRY\r
+gluUnProject4(GLdouble winx, GLdouble winy, GLdouble winz, GLdouble clipw,\r
+             const GLdouble modelMatrix[16], \r
+             const GLdouble projMatrix[16],\r
+             const GLint viewport[4],\r
+             GLclampd nearVal, GLclampd farVal,                    \r
+             GLdouble *objx, GLdouble *objy, GLdouble *objz,\r
+             GLdouble *objw)\r
+{\r
+    double finalMatrix[16];\r
+    double in[4];\r
+    double out[4];\r
+\r
+    __gluMultMatricesd(modelMatrix, projMatrix, finalMatrix);\r
+    if (!__gluInvertMatrixd(finalMatrix, finalMatrix)) return(GL_FALSE);\r
+\r
+    in[0]=winx;\r
+    in[1]=winy;\r
+    in[2]=winz;\r
+    in[3]=clipw;\r
+\r
+    /* Map x and y from window coordinates */\r
+    in[0] = (in[0] - viewport[0]) / viewport[2];\r
+    in[1] = (in[1] - viewport[1]) / viewport[3];\r
+    in[2] = (in[2] - nearVal) / (farVal - nearVal);\r
+\r
+    /* Map to range -1 to 1 */\r
+    in[0] = in[0] * 2 - 1;\r
+    in[1] = in[1] * 2 - 1;\r
+    in[2] = in[2] * 2 - 1;\r
+\r
+    __gluMultMatrixVecd(finalMatrix, in, out);\r
+    if (out[3] == 0.0) return(GL_FALSE);\r
+    *objx = out[0];\r
+    *objy = out[1];\r
+    *objz = out[2];\r
+    *objw = out[3];\r
+    return(GL_TRUE);\r
+}\r
+\r
+void GLAPIENTRY\r
+gluPickMatrix(GLdouble x, GLdouble y, GLdouble deltax, GLdouble deltay,\r
+                 GLint viewport[4])\r
+{\r
+    if (deltax <= 0 || deltay <= 0) { \r
+       return;\r
+    }\r
+\r
+    /* Translate and scale the picked region to the entire window */\r
+    glTranslatef((viewport[2] - 2 * (x - viewport[0])) / deltax,\r
+           (viewport[3] - 2 * (y - viewport[1])) / deltay, 0);\r
+    glScalef(viewport[2] / deltax, viewport[3] / deltay, 1.0);\r
+}\r
index 4d809f1..c3f9614 100644 (file)
@@ -2,15 +2,15 @@
 \r
 !include <win32.mak>\r
 \r
-TOP = ../..\r
+TOP = ..\r
 \r
 # NOTE: glut_menu.c and glut_glxext.c are NOT compiled into Win32 GLUT\r
 \r
 SRCS = glut_8x13.c glut_9x15.c glut_bitmap.c glut_bwidth.c glut_cindex.c glut_cmap.c glut_cursor.c glut_dials.c glut_dstr.c glut_event.c glut_ext.c glut_fbc.c glut_fullscrn.c glut_gamemode.c glut_get.c glut_hel10.c glut_hel12.c glut_hel18.c glut_init.c glut_input.c glut_joy.c glut_key.c glut_keyctrl.c glut_keyup.c glut_mesa.c glut_modifier.c glut_mroman.c glut_overlay.c glut_roman.c glut_shapes.c glut_space.c glut_stroke.c glut_swap.c glut_swidth.c glut_tablet.c glut_teapot.c glut_tr10.c glut_tr24.c glut_util.c glut_vidresize.c glut_warp.c glut_win.c glut_winmisc.c win32_glx.c win32_menu.c win32_util.c win32_winproc.c win32_x11.c\r
 \r
-all    : glutdll install\r
+all    : glutdll \r
 \r
-!include "$(TOP)/glutwin32.mak"\r
+!include "$(TOP)/mesawin32.mak"\r
 \r
 glutdll        : $(GLUTDLL)\r
 \r
@@ -18,15 +18,20 @@ glutdll     : $(GLUTDLL)
 OPTIMIZE_CFLAGS = -DNDEBUG\r
 !ENDIF\r
 \r
-CFLAGS = $(cvarsdll) $(CFLAGS) $(OPTIMIZE_CFLAGS)\r
+CFLAGS = $(cvarsdll) $(CFLAGS) $(OPTIMIZE_CFLAGS) -DMESA -DBUILD_GL32\r
 LFLAGS = $(dlllflags) $(LFLAGS)\r
 \r
 OBJS   = $(SRCS:.c=.obj)\r
 MS_LIBS   = $(MS_OPENGL) $(MS_GLU) winmm.lib $(guilibsdll)\r
+MS_LIBS   = ../lib/opengl32.lib ../lib/glu32.lib winmm.lib $(guilibsdll)\r
 SGI_LIBS   = $(SGI_OPENGL) $(SGI_GLU) winmm.lib $(guilibsdll)\r
 \r
 glut32.dll : $(OBJS) glut.def\r
        $(link) $(LFLAGS) -out:glut32.dll -def:glut.def $(OBJS) $(MS_LIBS)\r
+       @echo "copying GLUT dynamic link library to lib directory..."\r
+       -copy $(GLUTDLL) ..\lib\r
+       @echo "copying GLUT import library to lib directory..."\r
+       -copy $(GLUTLIB) ..\lib\r
 \r
 glut.dll : $(OBJS) glut.def\r
        $(link) $(LFLAGS) -out:glut.dll -def:glut.def $(OBJS) $(SGI_LIBS)\r
@@ -35,7 +40,7 @@ install       : $(GLUTDLL)
        @echo "copying GLUT dynamic link library to system directory..."\r
        -copy $(GLUTDLL) $(DLLINSTALL)\r
        @echo "copying GLUT header file to include directory..."\r
-       -copy ..\..\include\GL\glut.h $(INCLUDEINSTALL)\r
+       -copy ..\include\GL\glut.h $(INCLUDEINSTALL)\r
        @echo "copying GLUT import library to library directory..."\r
        -copy $(GLUTLIB) $(LIBINSTALL)\r
 \r
@@ -46,50 +51,50 @@ install     : $(GLUTDLL)
 \r
 win32_glx.obj: win32_glx.c win32_glx.h\r
 win32_x11.obj: win32_x11.c win32_x11.h\r
-win32_menu.obj: win32_menu.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h\r
-win32_util.obj: win32_util.c glutint.h ..\..\include\GL\glutf90.h\r
-win32_winproc.obj: win32_winproc.c glutint.h ..\..\include\GL\glutf90.h\r
-\r
-glut_mroman.obj: glut_mroman.c glutstroke.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_roman.obj: glut_roman.c glutstroke.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_hel12.obj: glut_hel12.c glutbitmap.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_8x13.obj: glut_8x13.c glutbitmap.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_hel18.obj: glut_hel18.c glutbitmap.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_9x15.obj: glut_9x15.c glutbitmap.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_tr10.obj: glut_tr10.c glutbitmap.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_hel10.obj: glut_hel10.c glutbitmap.h glutint.h ..\..\include\GL\glutf90.h\r
-glut_tr24.obj: glut_tr24.c glutbitmap.h glutint.h ..\..\include\GL\glutf90.h\r
-\r
-glut_bitmap.obj: glut_bitmap.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_bwidth.obj: glut_bwidth.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_cindex.obj: glut_cindex.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_cmap.obj: glut_cmap.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_cursor.obj: glut_cursor.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_dials.obj: glut_dials.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_dstr.obj: glut_dstr.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_event.obj: glut_event.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_ext.obj: glut_ext.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_fullscrn.obj: glut_fullscrn.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_gamemode.obj: glut_gamemode.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_get.obj: glut_get.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_init.obj: glut_init.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_input.obj: glut_input.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_joy.obj: glut_joy.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_key.obj: glut_key.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_keyctrl.obj: glut_keyctrl.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_keyup.obj: glut_keyup.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_mesa.obj: glut_mesa.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_modifier.obj: glut_modifier.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_overlay.obj: glut_overlay.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_shapes.obj: glut_shapes.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_space.obj: glut_space.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_swap.obj: glut_swap.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_swidth.obj: glut_swidth.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_tablet.obj: glut_tablet.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_teapot.obj: glut_teapot.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_util.obj: glut_util.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_vidresize.obj: glut_vidresize.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_warp.obj: glut_warp.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
-glut_win.obj: glut_win.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h\r
-glut_winmisc.obj: glut_winmisc.c glutint.h ..\..\include\GL\glutf90.h ..\..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+win32_menu.obj: win32_menu.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h\r
+win32_util.obj: win32_util.c glutint.h ..\include\GL\glutf90.h\r
+win32_winproc.obj: win32_winproc.c glutint.h ..\include\GL\glutf90.h\r
+\r
+glut_mroman.obj: glut_mroman.c glutstroke.h glutint.h ..\include\GL\glutf90.h\r
+glut_roman.obj: glut_roman.c glutstroke.h glutint.h ..\include\GL\glutf90.h\r
+glut_hel12.obj: glut_hel12.c glutbitmap.h glutint.h ..\include\GL\glutf90.h\r
+glut_8x13.obj: glut_8x13.c glutbitmap.h glutint.h ..\include\GL\glutf90.h\r
+glut_hel18.obj: glut_hel18.c glutbitmap.h glutint.h ..\include\GL\glutf90.h\r
+glut_9x15.obj: glut_9x15.c glutbitmap.h glutint.h ..\include\GL\glutf90.h\r
+glut_tr10.obj: glut_tr10.c glutbitmap.h glutint.h ..\include\GL\glutf90.h\r
+glut_hel10.obj: glut_hel10.c glutbitmap.h glutint.h ..\include\GL\glutf90.h\r
+glut_tr24.obj: glut_tr24.c glutbitmap.h glutint.h ..\include\GL\glutf90.h\r
+\r
+glut_bitmap.obj: glut_bitmap.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_bwidth.obj: glut_bwidth.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_cindex.obj: glut_cindex.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_cmap.obj: glut_cmap.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_cursor.obj: glut_cursor.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_dials.obj: glut_dials.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_dstr.obj: glut_dstr.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_event.obj: glut_event.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_ext.obj: glut_ext.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_fullscrn.obj: glut_fullscrn.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_gamemode.obj: glut_gamemode.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_get.obj: glut_get.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_init.obj: glut_init.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_input.obj: glut_input.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_joy.obj: glut_joy.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_key.obj: glut_key.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_keyctrl.obj: glut_keyctrl.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_keyup.obj: glut_keyup.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_mesa.obj: glut_mesa.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_modifier.obj: glut_modifier.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_overlay.obj: glut_overlay.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_shapes.obj: glut_shapes.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_space.obj: glut_space.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_swap.obj: glut_swap.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_swidth.obj: glut_swidth.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_tablet.obj: glut_tablet.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_teapot.obj: glut_teapot.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_util.obj: glut_util.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_vidresize.obj: glut_vidresize.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_warp.obj: glut_warp.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
+glut_win.obj: glut_win.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h\r
+glut_winmisc.obj: glut_winmisc.c glutint.h ..\include\GL\glutf90.h ..\include\GL\glut.h glutwin32.h win32_glx.h win32_x11.h\r
 \r
diff --git a/src/glut/glx/glut.def b/src/glut/glx/glut.def
new file mode 100644 (file)
index 0000000..94da6ab
--- /dev/null
@@ -0,0 +1,126 @@
+DESCRIPTION 'OpenGL Utility Toolkit for Win32'
+\r
+VERSION 3.7\r
+\r
+EXPORTS
+\r
+       glutAddMenuEntry
+       glutAddSubMenu
+       glutAttachMenu
+       glutBitmapCharacter
+       glutBitmapLength
+       glutBitmapWidth
+       glutButtonBoxFunc
+       glutChangeToMenuEntry
+       glutChangeToSubMenu
+       glutCopyColormap
+       glutCreateMenu
+       __glutCreateMenuWithExit
+       glutCreateSubWindow
+       glutCreateWindow
+       __glutCreateWindowWithExit
+       glutDestroyMenu
+       glutDestroyWindow
+       glutDetachMenu
+       glutDeviceGet
+       glutDialsFunc
+       glutDisplayFunc
+       glutEnterGameMode
+       glutEntryFunc
+       glutEstablishOverlay
+       glutExtensionSupported
+       glutForceJoystickFunc
+       glutFullScreen
+       glutGameModeGet
+       glutGameModeString
+       glutGet
+       glutGetColor
+       glutGetMenu
+       glutGetModifiers
+       glutGetWindow
+       glutHideOverlay
+       glutHideWindow
+       glutIconifyWindow
+       glutIdleFunc
+       glutIgnoreKeyRepeat
+       glutInit
+       __glutInitWithExit
+       glutInitDisplayMode
+       glutInitDisplayString
+       glutInitWindowPosition
+       glutInitWindowSize
+       glutJoystickFunc
+       glutKeyboardFunc
+       glutKeyboardUpFunc
+       glutLayerGet
+       glutLeaveGameMode
+       glutMainLoop
+       glutMenuStateFunc
+       glutMenuStatusFunc
+       glutMotionFunc
+       glutMouseFunc
+       glutOverlayDisplayFunc
+       glutPassiveMotionFunc
+       glutPopWindow
+       glutPositionWindow
+       glutPostOverlayRedisplay
+       glutPostRedisplay
+       glutPostWindowOverlayRedisplay
+       glutPostWindowRedisplay
+       glutPushWindow
+       glutRemoveMenuItem
+       glutRemoveOverlay
+       glutReportErrors
+       glutReshapeFunc
+       glutReshapeWindow
+       glutSetColor
+       glutSetCursor
+       glutSetIconTitle
+       glutSetKeyRepeat
+       glutSetMenu
+       glutSetWindow
+       glutSetWindowTitle
+       glutSetupVideoResizing
+       glutShowOverlay
+       glutShowWindow
+       glutSolidCone
+       glutSolidCube
+       glutSolidDodecahedron
+       glutSolidIcosahedron
+       glutSolidOctahedron
+       glutSolidSphere
+       glutSolidTeapot
+       glutSolidTetrahedron
+       glutSolidTorus
+       glutSpaceballButtonFunc
+       glutSpaceballMotionFunc
+       glutSpaceballRotateFunc
+       glutSpecialFunc
+       glutSpecialUpFunc
+       glutStopVideoResizing
+       glutStrokeCharacter
+       glutStrokeLength
+       glutStrokeWidth
+       glutSwapBuffers
+       glutTabletButtonFunc
+       glutTabletMotionFunc
+       glutTimerFunc
+       glutUseLayer
+       glutVideoPan
+       glutVideoResize
+       glutVideoResizeGet
+       glutVisibilityFunc
+       glutWarpPointer
+       glutWindowStatusFunc
+       glutWireCone
+       glutWireCube
+       glutWireDodecahedron
+       glutWireIcosahedron
+       glutWireOctahedron
+       glutWireSphere
+       glutWireTeapot
+       glutWireTetrahedron
+       glutWireTorus
+;    __glutSetFCB
+;    __glutGetFCB
+\r
index bb49977..70de906 100644 (file)
-#ifndef __win32_x11_h__
-#define __win32_x11_h__
-
-/* Copyright (c) Nate Robins, 1997. */
-
-/* This program is freely distributable without licensing fees 
-   and is provided without guarantee or warrantee expressed or 
-   implied. This program is -not- in the public domain. */
-
-#include <stdlib.h>
-#include <windows.h>
-
-/* Type definitions (conversions) */
-typedef int Visual;                    /* Win32 equivalent of X11 type */
-typedef HWND Window;
-typedef HPALETTE Colormap;
-typedef PIXELFORMATDESCRIPTOR XVisualInfo;
-typedef BOOL Bool;
-typedef MSG XEvent;
-typedef HDC Display;
-typedef HCURSOR Cursor;
-
-typedef int Atom;                      /* dummies */
-typedef int XDevice;
-typedef int Status;
-
-#define True  TRUE                     /* Win32 equivalents of X11 booleans */
-#define False FALSE
-
-#define None                 0L        /* universal null resource or null atom */
-
-/* Input Event Masks. Used as event-mask window attribute and as arguments
-   to Grab requests.  Not to be confused with event names.  */
-
-#define NoEventMask                    0L
-#define KeyPressMask                   (1L<<0)  
-#define KeyReleaseMask                 (1L<<1)  
-#define ButtonPressMask                        (1L<<2)  
-#define ButtonReleaseMask              (1L<<3)  
-#define EnterWindowMask                        (1L<<4)  
-#define LeaveWindowMask                        (1L<<5)  
-#define PointerMotionMask              (1L<<6)  
-#define PointerMotionHintMask          (1L<<7)  
-#define Button1MotionMask              (1L<<8)  
-#define Button2MotionMask              (1L<<9)  
-#define Button3MotionMask              (1L<<10) 
-#define Button4MotionMask              (1L<<11) 
-#define Button5MotionMask              (1L<<12) 
-#define ButtonMotionMask               (1L<<13) 
-#define KeymapStateMask                        (1L<<14)
-#define ExposureMask                   (1L<<15) 
-#define VisibilityChangeMask           (1L<<16) 
-#define StructureNotifyMask            (1L<<17) 
-#define ResizeRedirectMask             (1L<<18) 
-#define SubstructureNotifyMask         (1L<<19) 
-#define SubstructureRedirectMask       (1L<<20) 
-#define FocusChangeMask                        (1L<<21) 
-#define PropertyChangeMask             (1L<<22) 
-#define ColormapChangeMask             (1L<<23) 
-#define OwnerGrabButtonMask            (1L<<24) 
-
-/* Key masks. Used as modifiers to GrabButton and GrabKey, results of
-   QueryPointer, state in various key-, mouse-, and button-related
-   events. */
-
-#define ShiftMask              (1<<0)
-#define LockMask               (1<<1)
-#define ControlMask            (1<<2)
-#define Mod1Mask               (1<<3)
-#define Mod2Mask               (1<<4)
-#define Mod3Mask               (1<<5)
-#define Mod4Mask               (1<<6)
-#define Mod5Mask               (1<<7)
-
-/* Window classes used by CreateWindow */
-/* Note that CopyFromParent is already defined as 0 above */
-
-#define InputOutput            1
-#define InputOnly              2
-
-/* Window attributes for CreateWindow and ChangeWindowAttributes */
-
-#define CWBackPixmap           (1L<<0)
-#define CWBackPixel            (1L<<1)
-#define CWBorderPixmap         (1L<<2)
-#define CWBorderPixel           (1L<<3)
-#define CWBitGravity           (1L<<4)
-#define CWWinGravity           (1L<<5)
-#define CWBackingStore          (1L<<6)
-#define CWBackingPlanes                (1L<<7)
-#define CWBackingPixel         (1L<<8)
-#define CWOverrideRedirect     (1L<<9)
-#define CWSaveUnder            (1L<<10)
-#define CWEventMask            (1L<<11)
-#define CWDontPropagate                (1L<<12)
-#define CWColormap             (1L<<13)
-#define CWCursor               (1L<<14)
-
-/* ConfigureWindow structure */
-
-#define CWX                    (1<<0)
-#define CWY                    (1<<1)
-#define CWWidth                        (1<<2)
-#define CWHeight               (1<<3)
-#define CWBorderWidth          (1<<4)
-#define CWSibling              (1<<5)
-#define CWStackMode            (1<<6)
-
-
-/* Used in GetWindowAttributes reply */
-
-#define IsUnmapped             0
-#define IsUnviewable           1
-#define IsViewable             2
-
-/* Window stacking method (in configureWindow) */
-
-#define Above                   0
-#define Below                   1
-#define TopIf                   2
-#define BottomIf                3
-#define Opposite                4
-
-/* For CreateColormap */
-
-#define AllocNone              0       /* create map with no entries */
-#define AllocAll               1       /* allocate entire map writeable */
-
-
-/* Flags used in StoreNamedColor, StoreColors */
-
-#define DoRed                  (1<<0)
-#define DoGreen                        (1<<1)
-#define DoBlue                 (1<<2)
-
-/* 
- * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
- * value (x, y, width, height) was found in the parsed string.
- */
-#define NoValue                0x0000
-#define XValue         0x0001
-#define YValue         0x0002
-#define WidthValue     0x0004
-#define HeightValue    0x0008
-#define AllValues      0x000F
-#define XNegative      0x0010
-#define YNegative      0x0020
-
-/* flags argument in size hints */
-#define USPosition     (1L << 0) /* user specified x, y */
-#define USSize         (1L << 1) /* user specified width, height */
-
-/* definitions for initial window state */
-#define WithdrawnState 0       /* for windows that are not mapped */
-#define NormalState 1  /* most applications want to start this way */
-#define IconicState 3  /* application wants to start as an icon */
-#define GameModeState 4  /* Win32 GLUT only (not in Xlib!). */
-
-/* Type definitions */
-
-typedef struct {
-    unsigned int background_pixmap;    /* background pixmap */
-    unsigned long background_pixel;    /* background pixel */
-    unsigned long border_pixel;        /* border pixel value */
-    long event_mask;           /* set of events that should be saved */
-    long do_not_propagate_mask;        /* set of events that should not propagate */
-    Bool override_redirect;       /* boolean value for override-redirect */
-    Colormap colormap;            /* color map to be associated with window */
-} XSetWindowAttributes;
-
-typedef struct {
-  unsigned long pixel;
-  unsigned short red, green, blue;
-  char flags;  /* do_red, do_green, do_blue */
-} XColor;
-
-typedef struct {
-  unsigned char *value;           /* same as Property routines */
-  Atom encoding;          /* prop type */
-  int format;             /* prop data format: 8, 16, or 32 */
-  unsigned long nitems;           /* number of data items in value */
-} XTextProperty;
-
-typedef struct {
-  long flags;          /* marks which fields in this structure are defined */
-  int x, y;            /* obsolete for new window mgrs, but clients */
-  int width, height;   /* should set so old wm's don't mess up */
-} XSizeHints;
-
-/* Functions emulated by macros. */
-
-#define XFreeColormap(display, colormap) \
-  DeleteObject(colormap)
-
-#define XCreateFontCursor(display, shape) \
-  LoadCursor(NULL, shape)
-
-#define XDefineCursor(display, window, cursor) \
-  SetCursor(cursor)
-
-#define XFlush(display) \
-  /* Nothing. */
-
-#define DisplayWidth(display, screen) \
-  GetSystemMetrics(SM_CXSCREEN)
-
-#define DisplayHeight(display, screen) \
-  GetSystemMetrics(SM_CYSCREEN)
-
-#define XMapWindow(display, window) \
-  ShowWindow(window, SW_SHOWNORMAL)
-
-#define XUnmapWindow(display, window) \
-  ShowWindow(window, SW_HIDE)
-
-#define XIconifyWindow(display, window, screen) \
-  ShowWindow(window, SW_MINIMIZE)
-
-#define XWithdrawWindow(display, window, screen) \
-  ShowWindow(window, SW_HIDE)
-
-#define XLowerWindow(display, window) \
-  SetWindowPos(window, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)
-
-#define XSetWMName(display, window, tp) \
-  SetWindowText(window, (tp)->value)
-
-/* There really isn't a way to set the icon name separate from the
-   windows name in Win32, so, just set the windows name. */
-#define XSetWMIconName(display, window, tp) \
-  XSetWMName(display, window, tp)
-
-#define XDestroyWindow(display, window) \
-  DestroyWindow(window)
-
-/* Anything that needs to be freed was allocated with malloc in our
-   fake X windows library for Win32, so free it with plain old
-   free(). */
-#define XFree(data) \
-  free(data)
-
-/* Nothing to be done for this...the pointer is always 'ungrabbed'
-   in Win32. */
-#define XUngrabPointer(display, time) \
-  /* Nothing. */
-
-/* Function prototypes. */
-
-extern XVisualInfo* XGetVisualInfo(
-  Display* display,
-  long mask,
-  XVisualInfo* ttemplate,  /* Avoid class with C++ keyword. */
-  int*nitems);
-
-extern Colormap XCreateColormap(
-  Display* display,
-  Window root,
-  Visual* visual,
-  int alloc);
-
-extern void XAllocColorCells(
-  Display* display,
-  Colormap colormap,
-  Bool contig, 
-  unsigned long plane_masks_return[],
-  unsigned int nplanes,
-  unsigned long pixels_return[],
-  unsigned int npixels);
-
-extern void XStoreColor(
-  Display* display,
-  Colormap colormap,
-  XColor* color);
-
-extern void XSetWindowColormap(
-  Display* display,
-  Window window,
-  Colormap colormap);
-
-extern Bool XTranslateCoordinates(
-  Display *display,
-  Window src, Window dst, 
-  int src_x, int src_y, 
-  int* dest_x_return, int* dest_y_return,
-  Window* child_return);
-
-extern Status XGetGeometry(
-  Display* display,
-  Window window,
-  Window* root_return, 
-  int* x_return, int* y_return, 
-  unsigned int* width_return, unsigned int* height_return,
-  unsigned int *border_width_return,
-  unsigned int* depth_return);
-
-extern int DisplayWidthMM(
-  Display* display,
-  int screen);
-
-extern int DisplayHeightMM(
-  Display* display,
-  int screen);
-
-extern void XWarpPointer(
-  Display* display,
-  Window src, Window dst, 
-  int src_x, int src_y,
-  int src_width, int src_height, 
-  int dst_x, int dst_y);
-
-extern int XParseGeometry(
-  char* string,
-  int* x, int* y, 
-  unsigned int* width, unsigned int* height);
-
-extern int XPending(
-  Display* display);
-
-#endif /* __win32_x11_h__ */
+#ifndef __win32_x11_h__\r
+#define __win32_x11_h__\r
+\r
+/* Copyright (c) Nate Robins, 1997. */\r
+\r
+/* This program is freely distributable without licensing fees \r
+   and is provided without guarantee or warrantee expressed or \r
+   implied. This program is -not- in the public domain. */\r
+\r
+#include <stdlib.h>\r
+#include <windows.h>\r
+\r
+/* These definitions are missing from windows.h */\r
+WINGDIAPI int WINAPI wglChoosePixelFormat(HDC, PIXELFORMATDESCRIPTOR *);\r
+WINGDIAPI int WINAPI wglDescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);\r
+WINGDIAPI int WINAPI wglGetPixelFormat(HDC);\r
+WINGDIAPI BOOL WINAPI wglSetPixelFormat(HDC, int, PIXELFORMATDESCRIPTOR *);\r
+WINGDIAPI BOOL WINAPI wglSwapBuffers(HDC);\r
+\r
+/* Type definitions (conversions) */\r
+typedef int Visual;                    /* Win32 equivalent of X11 type */\r
+typedef HWND Window;\r
+typedef HPALETTE Colormap;\r
+typedef PIXELFORMATDESCRIPTOR XVisualInfo;\r
+typedef BOOL Bool;\r
+typedef MSG XEvent;\r
+typedef HDC Display;\r
+typedef HCURSOR Cursor;\r
+\r
+typedef int Atom;                      /* dummies */\r
+typedef int XDevice;\r
+typedef int Status;\r
+\r
+#define True  TRUE                     /* Win32 equivalents of X11 booleans */\r
+#define False FALSE\r
+\r
+#define None                 0L        /* universal null resource or null atom */\r
+\r
+/* Input Event Masks. Used as event-mask window attribute and as arguments\r
+   to Grab requests.  Not to be confused with event names.  */\r
+\r
+#define NoEventMask                    0L\r
+#define KeyPressMask                   (1L<<0)  \r
+#define KeyReleaseMask                 (1L<<1)  \r
+#define ButtonPressMask                        (1L<<2)  \r
+#define ButtonReleaseMask              (1L<<3)  \r
+#define EnterWindowMask                        (1L<<4)  \r
+#define LeaveWindowMask                        (1L<<5)  \r
+#define PointerMotionMask              (1L<<6)  \r
+#define PointerMotionHintMask          (1L<<7)  \r
+#define Button1MotionMask              (1L<<8)  \r
+#define Button2MotionMask              (1L<<9)  \r
+#define Button3MotionMask              (1L<<10) \r
+#define Button4MotionMask              (1L<<11) \r
+#define Button5MotionMask              (1L<<12) \r
+#define ButtonMotionMask               (1L<<13) \r
+#define KeymapStateMask                        (1L<<14)\r
+#define ExposureMask                   (1L<<15) \r
+#define VisibilityChangeMask           (1L<<16) \r
+#define StructureNotifyMask            (1L<<17) \r
+#define ResizeRedirectMask             (1L<<18) \r
+#define SubstructureNotifyMask         (1L<<19) \r
+#define SubstructureRedirectMask       (1L<<20) \r
+#define FocusChangeMask                        (1L<<21) \r
+#define PropertyChangeMask             (1L<<22) \r
+#define ColormapChangeMask             (1L<<23) \r
+#define OwnerGrabButtonMask            (1L<<24) \r
+\r
+/* Key masks. Used as modifiers to GrabButton and GrabKey, results of\r
+   QueryPointer, state in various key-, mouse-, and button-related\r
+   events. */\r
+\r
+#define ShiftMask              (1<<0)\r
+#define LockMask               (1<<1)\r
+#define ControlMask            (1<<2)\r
+#define Mod1Mask               (1<<3)\r
+#define Mod2Mask               (1<<4)\r
+#define Mod3Mask               (1<<5)\r
+#define Mod4Mask               (1<<6)\r
+#define Mod5Mask               (1<<7)\r
+\r
+/* Window classes used by CreateWindow */\r
+/* Note that CopyFromParent is already defined as 0 above */\r
+\r
+#define InputOutput            1\r
+#define InputOnly              2\r
+\r
+/* Window attributes for CreateWindow and ChangeWindowAttributes */\r
+\r
+#define CWBackPixmap           (1L<<0)\r
+#define CWBackPixel            (1L<<1)\r
+#define CWBorderPixmap         (1L<<2)\r
+#define CWBorderPixel           (1L<<3)\r
+#define CWBitGravity           (1L<<4)\r
+#define CWWinGravity           (1L<<5)\r
+#define CWBackingStore          (1L<<6)\r
+#define CWBackingPlanes                (1L<<7)\r
+#define CWBackingPixel         (1L<<8)\r
+#define CWOverrideRedirect     (1L<<9)\r
+#define CWSaveUnder            (1L<<10)\r
+#define CWEventMask            (1L<<11)\r
+#define CWDontPropagate                (1L<<12)\r
+#define CWColormap             (1L<<13)\r
+#define CWCursor               (1L<<14)\r
+\r
+/* ConfigureWindow structure */\r
+\r
+#define CWX                    (1<<0)\r
+#define CWY                    (1<<1)\r
+#define CWWidth                        (1<<2)\r
+#define CWHeight               (1<<3)\r
+#define CWBorderWidth          (1<<4)\r
+#define CWSibling              (1<<5)\r
+#define CWStackMode            (1<<6)\r
+\r
+\r
+/* Used in GetWindowAttributes reply */\r
+\r
+#define IsUnmapped             0\r
+#define IsUnviewable           1\r
+#define IsViewable             2\r
+\r
+/* Window stacking method (in configureWindow) */\r
+\r
+#define Above                   0\r
+#define Below                   1\r
+#define TopIf                   2\r
+#define BottomIf                3\r
+#define Opposite                4\r
+\r
+/* For CreateColormap */\r
+\r
+#define AllocNone              0       /* create map with no entries */\r
+#define AllocAll               1       /* allocate entire map writeable */\r
+\r
+\r
+/* Flags used in StoreNamedColor, StoreColors */\r
+\r
+#define DoRed                  (1<<0)\r
+#define DoGreen                        (1<<1)\r
+#define DoBlue                 (1<<2)\r
+\r
+/* \r
+ * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding\r
+ * value (x, y, width, height) was found in the parsed string.\r
+ */\r
+#define NoValue                0x0000\r
+#define XValue         0x0001\r
+#define YValue         0x0002\r
+#define WidthValue     0x0004\r
+#define HeightValue    0x0008\r
+#define AllValues      0x000F\r
+#define XNegative      0x0010\r
+#define YNegative      0x0020\r
+\r
+/* flags argument in size hints */\r
+#define USPosition     (1L << 0) /* user specified x, y */\r
+#define USSize         (1L << 1) /* user specified width, height */\r
+\r
+/* definitions for initial window state */\r
+#define WithdrawnState 0       /* for windows that are not mapped */\r
+#define NormalState 1  /* most applications want to start this way */\r
+#define IconicState 3  /* application wants to start as an icon */\r
+#define GameModeState 4  /* Win32 GLUT only (not in Xlib!). */\r
+\r
+/* Type definitions */\r
+\r
+typedef struct {\r
+    unsigned int background_pixmap;    /* background pixmap */\r
+    unsigned long background_pixel;    /* background pixel */\r
+    unsigned long border_pixel;        /* border pixel value */\r
+    long event_mask;           /* set of events that should be saved */\r
+    long do_not_propagate_mask;        /* set of events that should not propagate */\r
+    Bool override_redirect;       /* boolean value for override-redirect */\r
+    Colormap colormap;            /* color map to be associated with window */\r
+} XSetWindowAttributes;\r
+\r
+typedef struct {\r
+  unsigned long pixel;\r
+  unsigned short red, green, blue;\r
+  char flags;  /* do_red, do_green, do_blue */\r
+} XColor;\r
+\r
+typedef struct {\r
+  unsigned char *value;           /* same as Property routines */\r
+  Atom encoding;          /* prop type */\r
+  int format;             /* prop data format: 8, 16, or 32 */\r
+  unsigned long nitems;           /* number of data items in value */\r
+} XTextProperty;\r
+\r
+typedef struct {\r
+  long flags;          /* marks which fields in this structure are defined */\r
+  int x, y;            /* obsolete for new window mgrs, but clients */\r
+  int width, height;   /* should set so old wm's don't mess up */\r
+} XSizeHints;\r
+\r
+/* Functions emulated by macros. */\r
+\r
+#define XFreeColormap(display, colormap) \\r
+  DeleteObject(colormap)\r
+\r
+#define XCreateFontCursor(display, shape) \\r
+  LoadCursor(NULL, shape)\r
+\r
+#define XDefineCursor(display, window, cursor) \\r
+  SetCursor(cursor)\r
+\r
+#define XFlush(display) \\r
+  /* Nothing. */\r
+\r
+#define DisplayWidth(display, screen) \\r
+  GetSystemMetrics(SM_CXSCREEN)\r
+\r
+#define DisplayHeight(display, screen) \\r
+  GetSystemMetrics(SM_CYSCREEN)\r
+\r
+#define XMapWindow(display, window) \\r
+  ShowWindow(window, SW_SHOWNORMAL)\r
+\r
+#define XUnmapWindow(display, window) \\r
+  ShowWindow(window, SW_HIDE)\r
+\r
+#define XIconifyWindow(display, window, screen) \\r
+  ShowWindow(window, SW_MINIMIZE)\r
+\r
+#define XWithdrawWindow(display, window, screen) \\r
+  ShowWindow(window, SW_HIDE)\r
+\r
+#define XLowerWindow(display, window) \\r
+  SetWindowPos(window, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)\r
+\r
+#define XSetWMName(display, window, tp) \\r
+  SetWindowText(window, (tp)->value)\r
+\r
+/* There really isn't a way to set the icon name separate from the\r
+   windows name in Win32, so, just set the windows name. */\r
+#define XSetWMIconName(display, window, tp) \\r
+  XSetWMName(display, window, tp)\r
+\r
+#define XDestroyWindow(display, window) \\r
+  DestroyWindow(window)\r
+\r
+/* Anything that needs to be freed was allocated with malloc in our\r
+   fake X windows library for Win32, so free it with plain old\r
+   free(). */\r
+#define XFree(data) \\r
+  free(data)\r
+\r
+/* Nothing to be done for this...the pointer is always 'ungrabbed'\r
+   in Win32. */\r
+#define XUngrabPointer(display, time) \\r
+  /* Nothing. */\r
+\r
+/* Function prototypes. */\r
+\r
+extern XVisualInfo* XGetVisualInfo(\r
+  Display* display,\r
+  long mask,\r
+  XVisualInfo* ttemplate,  /* Avoid class with C++ keyword. */\r
+  int*nitems);\r
+\r
+extern Colormap XCreateColormap(\r
+  Display* display,\r
+  Window root,\r
+  Visual* visual,\r
+  int alloc);\r
+\r
+extern void XAllocColorCells(\r
+  Display* display,\r
+  Colormap colormap,\r
+  Bool contig, \r
+  unsigned long plane_masks_return[],\r
+  unsigned int nplanes,\r
+  unsigned long pixels_return[],\r
+  unsigned int npixels);\r
+\r
+extern void XStoreColor(\r
+  Display* display,\r
+  Colormap colormap,\r
+  XColor* color);\r
+\r
+extern void XSetWindowColormap(\r
+  Display* display,\r
+  Window window,\r
+  Colormap colormap);\r
+\r
+extern Bool XTranslateCoordinates(\r
+  Display *display,\r
+  Window src, Window dst, \r
+  int src_x, int src_y, \r
+  int* dest_x_return, int* dest_y_return,\r
+  Window* child_return);\r
+\r
+extern Status XGetGeometry(\r
+  Display* display,\r
+  Window window,\r
+  Window* root_return, \r
+  int* x_return, int* y_return, \r
+  unsigned int* width_return, unsigned int* height_return,\r
+  unsigned int *border_width_return,\r
+  unsigned int* depth_return);\r
+\r
+extern int DisplayWidthMM(\r
+  Display* display,\r
+  int screen);\r
+\r
+extern int DisplayHeightMM(\r
+  Display* display,\r
+  int screen);\r
+\r
+extern void XWarpPointer(\r
+  Display* display,\r
+  Window src, Window dst, \r
+  int src_x, int src_y,\r
+  int src_width, int src_height, \r
+  int dst_x, int dst_y);\r
+\r
+extern int XParseGeometry(\r
+  char* string,\r
+  int* x, int* y, \r
+  unsigned int* width, unsigned int* height);\r
+\r
+extern int XPending(\r
+  Display* display);\r
+\r
+#endif /* __win32_x11_h__ */\r
diff --git a/src/mesa/drivers/osmesa/Makefile.win b/src/mesa/drivers/osmesa/Makefile.win
new file mode 100644 (file)
index 0000000..1d2f0aa
--- /dev/null
@@ -0,0 +1,37 @@
+# Makefile for Win32\r
+\r
+!include <win32.mak>\r
+\r
+TOP = ..\..\r
+\r
+OSMESA_SRCS = osmesa.c\r
+OSMESA_OBJS = osmesa.obj\r
+OSMESALIB = OSmesa.lib\r
+\r
+ASM_SRCS =\r
+CORE_SRCS = $(OSMESA_SRCS)\r
+DRIVER_SRCS =\r
+\r
+SRCS   = $(OSMESA_SRCS)\r
+\r
+all    : osmesalib install\r
+\r
+!include "$(TOP)/mesawin32.mak"\r
+\r
+osmesalib      : $(OSMESALIB)\r
+\r
+CFLAGS = $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -I$(TOP)/src\r
+LFLAGS = /LIB\r
+\r
+OBJS   = $(ASM_SRCS:.S=.obj) $(CORE_SRCS:.c=.obj) $(DRIVER_SRCS:.c=.obj)\r
+LIBS   = $(TOP)/lib/OpenGL32.lib $(TOP)/src/opengl32.exp\r
+\r
+$(OSMESALIB)   : $(OBJS)\r
+       $(link) $(LFLAGS) -out:$(OSMESALIB) $(OBJS) $(LIBS)\r
+\r
+install        : $(OSMESALIB)\r
+       @echo "copying OSMesa library to library directory..."\r
+       -copy $(OSMESALIB) $(TOP)\lib\r
+\r
+clean  ::\r
+       @del /f osmesa.obj\r
index c9b6f64..f7bf682 100644 (file)
-/* $Id: wgl.c,v 1.7 2001/07/27 14:03:55 brianp Exp $ */
-
-/*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Library General Public
-* License as published by the Free Software Foundation; either
-* version 2 of the License, or (at your option) any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-* Library General Public License for more details.
-*
-* You should have received a copy of the GNU Library General Public
-* License along with this library; if not, write to the Free
-* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*
-*/
-
-/*
-* File name    : wgl.c
-* WGL stuff. Added by Oleg Letsinsky, ajl@ultersys.ru
-* Some things originated from the 3Dfx WGL functions
-*/
-
-#ifdef WIN32
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <windows.h>
-#define GL_GLEXT_PROTOTYPES
-#include <GL/gl.h>
-#include <GL/glext.h>
-//#include <GL/glu.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <stdio.h>
-#include <tchar.h>
-#include "wmesadef.h"
-#include "GL/wmesa.h"
-#include "mtypes.h"
-
-#define MAX_MESA_ATTRS 20
-
-struct __extensions__
-{
-    PROC       proc;
-    char       *name;
-};
-
-struct __pixelformat__
-{
-    PIXELFORMATDESCRIPTOR      pfd;
-    GLboolean doubleBuffered;
-};
-
-struct __extensions__  ext[] = {
-
-#ifdef GL_EXT_polygon_offset
-   { (PROC)glPolygonOffsetEXT,                 "glPolygonOffsetEXT"            },
-#endif
-   { (PROC)glBlendEquationEXT,                 "glBlendEquationEXT"            },
-   { (PROC)glBlendColorEXT,                    "glBlendColorExt"               },
-   { (PROC)glVertexPointerEXT,                 "glVertexPointerEXT"            },
-   { (PROC)glNormalPointerEXT,                 "glNormalPointerEXT"            },
-   { (PROC)glColorPointerEXT,                  "glColorPointerEXT"             },
-   { (PROC)glIndexPointerEXT,                  "glIndexPointerEXT"             },
-   { (PROC)glTexCoordPointerEXT,               "glTexCoordPointer"             },
-   { (PROC)glEdgeFlagPointerEXT,               "glEdgeFlagPointerEXT"          },
-   { (PROC)glGetPointervEXT,                   "glGetPointervEXT"              },
-   { (PROC)glArrayElementEXT,                  "glArrayElementEXT"             },
-   { (PROC)glDrawArraysEXT,                    "glDrawArrayEXT"                },
-   { (PROC)glAreTexturesResidentEXT,           "glAreTexturesResidentEXT"      },
-   { (PROC)glBindTextureEXT,                   "glBindTextureEXT"              },
-   { (PROC)glDeleteTexturesEXT,                        "glDeleteTexturesEXT"           },
-   { (PROC)glGenTexturesEXT,                   "glGenTexturesEXT"              },
-   { (PROC)glIsTextureEXT,                     "glIsTextureEXT"                },
-   { (PROC)glPrioritizeTexturesEXT,            "glPrioritizeTexturesEXT"       },
-   { (PROC)glCopyTexSubImage3DEXT,             "glCopyTexSubImage3DEXT"        },
-   { (PROC)glTexImage3DEXT,                    "glTexImage3DEXT"               },
-   { (PROC)glTexSubImage3DEXT,                 "glTexSubImage3DEXT"            },
-   { (PROC)glColorTableEXT,                    "glColorTableEXT"               },
-   { (PROC)glColorSubTableEXT,                 "glColorSubTableEXT"            },
-   { (PROC)glGetColorTableEXT,                 "glGetColorTableEXT"            },
-   { (PROC)glGetColorTableParameterfvEXT,      "glGetColorTableParameterfvEXT" },
-   { (PROC)glGetColorTableParameterivEXT,      "glGetColorTableParameterivEXT" },
-   { (PROC)glPointParameterfEXT,               "glPointParameterfEXT"          },
-   { (PROC)glPointParameterfvEXT,              "glPointParameterfvEXT"         },
-   { (PROC)glBlendFuncSeparateEXT,             "glBlendFuncSeparateEXT"        },
-   { (PROC)glLockArraysEXT,                    "glLockArraysEXT"               },
-   { (PROC)glUnlockArraysEXT,                  "glUnlockArraysEXT"             }
-};
-
-int qt_ext = sizeof(ext) / sizeof(ext[0]);
-
-struct __pixelformat__ pix[] =
-{
-    {  {       sizeof(PIXELFORMATDESCRIPTOR),  1,
-        PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_GENERIC_FORMAT|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,
-        PFD_TYPE_RGBA,
-        24,    8,      0,      8,      8,      8,      16,     8,      24,
-        0,     0,      0,      0,      0,      16,     8,      0,      0,      0,      0,      0,      0 },
-        GL_TRUE
-    },
-    {  {       sizeof(PIXELFORMATDESCRIPTOR),  1,
-        PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_GENERIC_FORMAT,
-        PFD_TYPE_RGBA,
-        24,    8,      0,      8,      8,      8,      16,     8,      24,
-        0,     0,      0,      0,      0,      16,     8,      0,      0,      0,      0,      0,      0 },
-        GL_FALSE
-    },
-};
-
-int                            qt_pix = sizeof(pix) / sizeof(pix[0]);
-
-typedef struct {
-    WMesaContext ctx;
-    HDC hdc;
-} MesaWglCtx;
-
-#define MESAWGL_CTX_MAX_COUNT 20
-
-static MesaWglCtx wgl_ctx[MESAWGL_CTX_MAX_COUNT];
-
-static unsigned ctx_count = 0;
-static unsigned ctx_current = -1;
-static unsigned curPFD = 0;
-
-GLAPI BOOL GLWINAPI wglCopyContext(HGLRC hglrcSrc,HGLRC hglrcDst,UINT mask)
-{
-    return(FALSE);
-}
-
-GLAPI HGLRC GLWINAPI wglCreateContext(HDC hdc)
-{
-    HWND               hWnd;
-    int i = 0;
-    if(!(hWnd = WindowFromDC(hdc)))
-    {
-        SetLastError(0);
-        return(NULL);
-    }
-    if (!ctx_count)
-    {
-       for(i=0;i<MESAWGL_CTX_MAX_COUNT;i++)
-       {
-               wgl_ctx[i].ctx = NULL;
-               wgl_ctx[i].hdc = NULL;
-       }
-    }
-    for( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
-    {
-        if ( wgl_ctx[i].ctx == NULL )
-        {
-            wgl_ctx[i].ctx = WMesaCreateContext( hWnd, NULL, GL_TRUE,
-                pix[curPFD-1].doubleBuffered );
-            if (wgl_ctx[i].ctx == NULL)
-                break;
-            wgl_ctx[i].hdc = hdc;
-            ctx_count++;
-            return ((HGLRC)wgl_ctx[i].ctx);
-        }
-    }
-    SetLastError(0);
-    return(NULL);
-}
-
-GLAPI BOOL GLWINAPI wglDeleteContext(HGLRC hglrc)
-{
-    int i;
-    for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
-    {
-       if ( wgl_ctx[i].ctx == (PWMC) hglrc )
-       {
-            WMesaMakeCurrent((PWMC) hglrc);
-            WMesaDestroyContext();
-            wgl_ctx[i].ctx = NULL;
-            wgl_ctx[i].hdc = NULL;
-            ctx_count--;
-            return(TRUE);
-       }
-    }
-    SetLastError(0);
-    return(FALSE);
-}
-
-GLAPI HGLRC GLWINAPI wglCreateLayerContext(HDC hdc,int iLayerPlane)
-{
-    SetLastError(0);
-    return(NULL);
-}
-
-GLAPI HGLRC GLWINAPI wglGetCurrentContext(VOID)
-{
-   if (ctx_current < 0)
-      return 0;
-   else
-      return (HGLRC) wgl_ctx[ctx_current].ctx;
-}
-
-GLAPI HDC GLWINAPI wglGetCurrentDC(VOID)
-{
-   if (ctx_current < 0)
-      return 0;
-   else
-      return wgl_ctx[ctx_current].hdc;
-}
-
-GLAPI BOOL GLWINAPI wglMakeCurrent(HDC hdc,HGLRC hglrc)
-{
-    int i;
-
-    /* new code suggested by Andy Sy */
-    if (!hdc || !hglrc) {
-       WMesaMakeCurrent(NULL);
-       ctx_current = -1;
-       return TRUE;
-    }
-
-    for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
-    {
-        if ( wgl_ctx[i].ctx == (PWMC) hglrc )
-        {
-            wgl_ctx[i].hdc = hdc;
-            WMesaMakeCurrent( (WMesaContext) hglrc );
-            ctx_current = i;
-            return TRUE;
-        }
-    }
-    return FALSE;
-}
-
-GLAPI BOOL GLWINAPI wglShareLists(HGLRC hglrc1,HGLRC hglrc2)
-{
-    return(TRUE);
-}
-
-
-static FIXED FixedFromDouble(double d)
-{
-   long l = (long) (d * 65536L);
-   return *(FIXED *)&l;
-}
-
-
-/*
-** This is cribbed from FX/fxwgl.c, and seems to implement support
-** for bitmap fonts where the wglUseFontBitmapsA() code implements
-** support for outline fonts.  In combination they hopefully give
-** fairly generic support for fonts.
-*/
-static BOOL wglUseFontBitmaps_FX(HDC fontDevice, DWORD firstChar,
-                                 DWORD numChars, DWORD listBase)
-{
-#define VERIFY(a) a
-
-  TEXTMETRIC metric;
-  BITMAPINFO *dibInfo;
-  HDC bitDevice;
-  COLORREF tempColor;
-  int i;
-
-  VERIFY(GetTextMetrics(fontDevice, &metric));
-
-  dibInfo = (BITMAPINFO *) calloc(sizeof(BITMAPINFO) + sizeof(RGBQUAD), 1);
-  dibInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-  dibInfo->bmiHeader.biPlanes = 1;
-  dibInfo->bmiHeader.biBitCount = 1;
-  dibInfo->bmiHeader.biCompression = BI_RGB;
-
-  bitDevice = CreateCompatibleDC(fontDevice);
-  // HDC bitDevice = CreateDC("DISPLAY", NULL, NULL, NULL);
-  // VERIFY(bitDevice);
-
-  // Swap fore and back colors so the bitmap has the right polarity
-  tempColor = GetBkColor(bitDevice);
-  SetBkColor(bitDevice, GetTextColor(bitDevice));
-  SetTextColor(bitDevice, tempColor);
-
-  // Place chars based on base line
-  VERIFY(SetTextAlign(bitDevice, TA_BASELINE) >= 0 ? 1 : 0);
-
-  for(i = 0; i < numChars; i++) {
-    SIZE size;
-    char curChar;
-    int charWidth,charHeight,bmapWidth,bmapHeight,numBytes,res;
-    HBITMAP bitObject;
-    HGDIOBJ origBmap;
-    unsigned char *bmap;
-
-    curChar = i + firstChar;
-
-    // Find how high/wide this character is
-    VERIFY(GetTextExtentPoint32(bitDevice, &curChar, 1, &size));
-
-    // Create the output bitmap
-    charWidth = size.cx;
-    charHeight = size.cy;
-    bmapWidth = ((charWidth + 31) / 32) * 32;   // Round up to the next multiple of 32 bits
-    bmapHeight = charHeight;
-    bitObject = CreateCompatibleBitmap(bitDevice,
-                                       bmapWidth,
-                                       bmapHeight);
-    //VERIFY(bitObject);
-
-    // Assign the output bitmap to the device
-    origBmap = SelectObject(bitDevice, bitObject);
-    VERIFY(origBmap);
-
-    VERIFY( PatBlt( bitDevice, 0, 0, bmapWidth, bmapHeight,BLACKNESS ) );
-
-    // Use our source font on the device
-    VERIFY(SelectObject(bitDevice, GetCurrentObject(fontDevice,OBJ_FONT)));
-
-    // Draw the character
-    VERIFY(TextOut(bitDevice, 0, metric.tmAscent, &curChar, 1));
-
-    // Unselect our bmap object
-    VERIFY(SelectObject(bitDevice, origBmap));
-
-    // Convert the display dependant representation to a 1 bit deep DIB
-    numBytes = (bmapWidth * bmapHeight) / 8;
-    bmap = malloc(numBytes);
-    dibInfo->bmiHeader.biWidth = bmapWidth;
-    dibInfo->bmiHeader.biHeight = bmapHeight;
-    res = GetDIBits(bitDevice, bitObject, 0, bmapHeight, bmap,
-                    dibInfo,
-                    DIB_RGB_COLORS);
-    //VERIFY(res);
-
-    // Create the GL object
-    glNewList(i + listBase, GL_COMPILE);
-    glBitmap(bmapWidth, bmapHeight, 0.0, metric.tmDescent,
-             charWidth, 0.0,
-             bmap);
-    glEndList();
-    // CheckGL();
-
-    // Destroy the bmap object
-    DeleteObject(bitObject);
-
-    // Deallocate the bitmap data
-    free(bmap);
-  }
-
-  // Destroy the DC
-  VERIFY(DeleteDC(bitDevice));
-
-  free(dibInfo);
-
-  return TRUE;
-#undef VERIFY
-}
-
-GLAPI BOOL GLWINAPI wglUseFontBitmapsA(HDC hdc, DWORD first,
-                                       DWORD count, DWORD listBase)
-{
-   int i;
-   GLuint font_list;
-   DWORD size;
-   GLYPHMETRICS gm;
-   HANDLE hBits;
-   LPSTR lpBits;
-   MAT2 mat;
-   int  success = TRUE;
-
-   if (first<0)
-      return FALSE;
-   if (count<0)
-      return FALSE;
-   if (listBase<0)
-      return FALSE;
-
-   font_list = listBase;
-
-   mat.eM11 = FixedFromDouble(1);
-   mat.eM12 = FixedFromDouble(0);
-   mat.eM21 = FixedFromDouble(0);
-   mat.eM22 = FixedFromDouble(-1);
-
-   memset(&gm,0,sizeof(gm));
-
-   /*
-   ** If we can't get the glyph outline, it may be because this is a fixed
-   ** font.  Try processing it that way.
-   */
-   if( GetGlyphOutline(hdc, first, GGO_BITMAP, &gm, 0, NULL, &mat)
-       == GDI_ERROR )
-   {
-       return wglUseFontBitmaps_FX( hdc, first, count, listBase );
-   }
-
-   /*
-   ** Otherwise process all desired characters.
-   */
-   for (i = 0; i < count; i++)
-   {
-       DWORD err;
-       
-      glNewList( font_list+i, GL_COMPILE );
-
-      /* allocate space for the bitmap/outline */
-      size = GetGlyphOutline(hdc, first + i, GGO_BITMAP, &gm, 0, NULL, &mat);
-      if (size == GDI_ERROR)
-      {
-         glEndList( );
-         err = GetLastError();
-         success = FALSE;
-         continue;
-      }
-
-      hBits  = GlobalAlloc(GHND, size+1);
-      lpBits = GlobalLock(hBits);
-
-      err = 
-      GetGlyphOutline(hdc,    /* handle to device context */
-                      first + i,          /* character to query */
-                      GGO_BITMAP,         /* format of data to return */
-                      &gm,                /* pointer to structure for metrics*/
-                      size,               /* size of buffer for data */
-                      lpBits,             /* pointer to buffer for data */
-                      &mat                /* pointer to transformation */
-                                          /* matrix structure */
-                  );
-
-      if (err == GDI_ERROR)
-      {
-         GlobalUnlock(hBits);
-         GlobalFree(hBits);
-         
-         glEndList( );
-         err = GetLastError();
-         success = FALSE;
-         continue;
-      }
-
-      glBitmap(gm.gmBlackBoxX,gm.gmBlackBoxY,
-               -gm.gmptGlyphOrigin.x,
-               gm.gmptGlyphOrigin.y,
-               gm.gmCellIncX,gm.gmCellIncY,
-               (const GLubyte * )lpBits);
-
-      GlobalUnlock(hBits);
-      GlobalFree(hBits);
-
-      glEndList( );
-   }
-
-   return success;
-}
-
-
-GLAPI BOOL GLWINAPI wglUseFontBitmapsW(HDC hdc,DWORD first,DWORD count,DWORD listBase)
-{
-    return FALSE;
-}
-
-GLAPI BOOL GLWINAPI wglUseFontOutlinesA(HDC hdc,DWORD first,DWORD count,
-                                  DWORD listBase,FLOAT deviation,
-                                  FLOAT extrusion,int format,
-                                  LPGLYPHMETRICSFLOAT lpgmf)
-{
-    SetLastError(0);
-    return(FALSE);
-}
-
-GLAPI BOOL GLWINAPI wglUseFontOutlinesW(HDC hdc,DWORD first,DWORD count,
-                                  DWORD listBase,FLOAT deviation,
-                                  FLOAT extrusion,int format,
-                                  LPGLYPHMETRICSFLOAT lpgmf)
-{
-    SetLastError(0);
-    return(FALSE);
-}
-
-GLAPI BOOL GLWINAPI wglDescribeLayerPlane(HDC hdc,int iPixelFormat,
-                                    int iLayerPlane,UINT nBytes,
-                                    LPLAYERPLANEDESCRIPTOR plpd)
-{
-    SetLastError(0);
-    return(FALSE);
-}
-
-GLAPI int GLWINAPI wglSetLayerPaletteEntries(HDC hdc,int iLayerPlane,
-                                       int iStart,int cEntries,
-                                       CONST COLORREF *pcr)
-{
-    SetLastError(0);
-    return(0);
-}
-
-GLAPI int GLWINAPI wglGetLayerPaletteEntries(HDC hdc,int iLayerPlane,
-                                       int iStart,int cEntries,
-                                       COLORREF *pcr)
-{
-    SetLastError(0);
-    return(0);
-}
-
-GLAPI BOOL GLWINAPI wglRealizeLayerPalette(HDC hdc,int iLayerPlane,BOOL bRealize)
-{
-    SetLastError(0);
-    return(FALSE);
-}
-
-GLAPI BOOL GLWINAPI wglSwapLayerBuffers(HDC hdc,UINT fuPlanes)
-{
-    if( !hdc )
-    {
-        WMesaSwapBuffers();
-        return(TRUE);
-    }
-    SetLastError(0);
-    return(FALSE);
-}
-
-GLAPI int GLWINAPI wglChoosePixelFormat(HDC hdc,
-                                  CONST PIXELFORMATDESCRIPTOR *ppfd)
-{
-    int                i,best = -1,bestdelta = 0x7FFFFFFF,delta,qt_valid_pix;
-
-    qt_valid_pix = qt_pix;
-    if(ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR) || ppfd->nVersion != 1)
-    {
-        SetLastError(0);
-        return(0);
-    }
-    for(i = 0;i < qt_valid_pix;i++)
-    {
-        delta = 0;
-        if(
-            (ppfd->dwFlags & PFD_DRAW_TO_WINDOW) &&
-            !(pix[i].pfd.dwFlags & PFD_DRAW_TO_WINDOW))
-            continue;
-        if(
-            (ppfd->dwFlags & PFD_DRAW_TO_BITMAP) &&
-            !(pix[i].pfd.dwFlags & PFD_DRAW_TO_BITMAP))
-            continue;
-        if(
-            (ppfd->dwFlags & PFD_SUPPORT_GDI) &&
-            !(pix[i].pfd.dwFlags & PFD_SUPPORT_GDI))
-            continue;
-        if(
-            (ppfd->dwFlags & PFD_SUPPORT_OPENGL) &&
-            !(pix[i].pfd.dwFlags & PFD_SUPPORT_OPENGL))
-            continue;
-        if(
-            !(ppfd->dwFlags & PFD_DOUBLEBUFFER_DONTCARE) &&
-            ((ppfd->dwFlags & PFD_DOUBLEBUFFER) != (pix[i].pfd.dwFlags & PFD_DOUBLEBUFFER)))
-            continue;
-        if(
-            !(ppfd->dwFlags & PFD_STEREO_DONTCARE) &&
-            ((ppfd->dwFlags & PFD_STEREO) != (pix[i].pfd.dwFlags & PFD_STEREO)))
-            continue;
-        if(ppfd->iPixelType != pix[i].pfd.iPixelType)
-            delta++;
-        if(delta < bestdelta)
-        {
-            best = i + 1;
-            bestdelta = delta;
-            if(bestdelta == 0)
-                break;
-        }
-    }
-    if(best == -1)
-    {
-        SetLastError(0);
-        return(0);
-    }
-    return(best);
-}
-
-GLAPI int GLWINAPI wglDescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,
-                                    LPPIXELFORMATDESCRIPTOR ppfd)
-{
-    int                qt_valid_pix;
-
-    qt_valid_pix = qt_pix;
-    if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || nBytes != sizeof(PIXELFORMATDESCRIPTOR))
-    {
-        SetLastError(0);
-        return(0);
-    }
-    *ppfd = pix[iPixelFormat - 1].pfd;
-    return(qt_valid_pix);
-}
-
-/*
-* GetProcAddress - return the address of an appropriate extension
-*/
-GLAPI PROC GLWINAPI wglGetProcAddress(LPCSTR lpszProc)
-{
-    int                i;
-    for(i = 0;i < qt_ext;i++)
-        if(!strcmp(lpszProc,ext[i].name))
-            return(ext[i].proc);
-
-        SetLastError(0);
-        return(NULL);
-}
-
-GLAPI int GLWINAPI wglGetPixelFormat(HDC hdc)
-{
-    if(curPFD == 0)
-    {
-        SetLastError(0);
-        return(0);
-    }
-    return(curPFD);
-}
-
-GLAPI BOOL GLWINAPI wglSetPixelFormat(HDC hdc,int iPixelFormat,
-                                PIXELFORMATDESCRIPTOR *ppfd)
-{
-    int                qt_valid_pix;
-
-    qt_valid_pix = qt_pix;
-    if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR))
-    {
-        SetLastError(0);
-        return(FALSE);
-    }
-    curPFD = iPixelFormat;
-    return(TRUE);
-}
-
-GLAPI BOOL GLWINAPI wglSwapBuffers(HDC hdc)
-{
-   if (ctx_current < 0)
-      return FALSE;
-
-   if(wgl_ctx[ctx_current].ctx == NULL) {
-      SetLastError(0);
-      return(FALSE);
-   }
-   WMesaSwapBuffers();
-   return(TRUE);
-}
-
-#endif /* WIN32 */
+/* $Id: wgl.c,v 1.8 2001/09/14 22:19:19 brianp Exp $ */\r
+\r
+/*\r
+* This library is free software; you can redistribute it and/or\r
+* modify it under the terms of the GNU Library General Public\r
+* License as published by the Free Software Foundation; either\r
+* version 2 of the License, or (at your option) any later version.\r
+*\r
+* This library is distributed in the hope that it will be useful,\r
+* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+* Library General Public License for more details.\r
+*\r
+* You should have received a copy of the GNU Library General Public\r
+* License along with this library; if not, write to the Free\r
+* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
+*\r
+*/\r
+\r
+/*\r
+* File name    : wgl.c\r
+* WGL stuff. Added by Oleg Letsinsky, ajl@ultersys.ru\r
+* Some things originated from the 3Dfx WGL functions\r
+*/\r
+\r
+#ifdef WIN32\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <windows.h>\r
+#define GL_GLEXT_PROTOTYPES\r
+#include <GL/gl.h>\r
+#include <GL/glext.h>\r
+//#include <GL/glu.h>\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#include <stdio.h>\r
+#include <tchar.h>\r
+#include "wmesadef.h"\r
+#include "GL/wmesa.h"\r
+#include "mtypes.h"\r
+\r
+#define MAX_MESA_ATTRS 20\r
+\r
+struct __extensions__\r
+{\r
+    PROC       proc;\r
+    char       *name;\r
+};\r
+\r
+struct __pixelformat__\r
+{\r
+    PIXELFORMATDESCRIPTOR      pfd;\r
+    GLboolean doubleBuffered;\r
+};\r
+\r
+struct __extensions__  ext[] = {\r
+\r
+#ifdef GL_EXT_polygon_offset\r
+   { (PROC)glPolygonOffsetEXT,                 "glPolygonOffsetEXT"            },\r
+#endif\r
+   { (PROC)glBlendEquationEXT,                 "glBlendEquationEXT"            },\r
+   { (PROC)glBlendColorEXT,                    "glBlendColorExt"               },\r
+   { (PROC)glVertexPointerEXT,                 "glVertexPointerEXT"            },\r
+   { (PROC)glNormalPointerEXT,                 "glNormalPointerEXT"            },\r
+   { (PROC)glColorPointerEXT,                  "glColorPointerEXT"             },\r
+   { (PROC)glIndexPointerEXT,                  "glIndexPointerEXT"             },\r
+   { (PROC)glTexCoordPointerEXT,               "glTexCoordPointer"             },\r
+   { (PROC)glEdgeFlagPointerEXT,               "glEdgeFlagPointerEXT"          },\r
+   { (PROC)glGetPointervEXT,                   "glGetPointervEXT"              },\r
+   { (PROC)glArrayElementEXT,                  "glArrayElementEXT"             },\r
+   { (PROC)glDrawArraysEXT,                    "glDrawArrayEXT"                },\r
+   { (PROC)glAreTexturesResidentEXT,           "glAreTexturesResidentEXT"      },\r
+   { (PROC)glBindTextureEXT,                   "glBindTextureEXT"              },\r
+   { (PROC)glDeleteTexturesEXT,                        "glDeleteTexturesEXT"           },\r
+   { (PROC)glGenTexturesEXT,                   "glGenTexturesEXT"              },\r
+   { (PROC)glIsTextureEXT,                     "glIsTextureEXT"                },\r
+   { (PROC)glPrioritizeTexturesEXT,            "glPrioritizeTexturesEXT"       },\r
+   { (PROC)glCopyTexSubImage3DEXT,             "glCopyTexSubImage3DEXT"        },\r
+   { (PROC)glTexImage3DEXT,                    "glTexImage3DEXT"               },\r
+   { (PROC)glTexSubImage3DEXT,                 "glTexSubImage3DEXT"            },\r
+   { (PROC)glColorTableEXT,                    "glColorTableEXT"               },\r
+   { (PROC)glColorSubTableEXT,                 "glColorSubTableEXT"            },\r
+   { (PROC)glGetColorTableEXT,                 "glGetColorTableEXT"            },\r
+   { (PROC)glGetColorTableParameterfvEXT,      "glGetColorTableParameterfvEXT" },\r
+   { (PROC)glGetColorTableParameterivEXT,      "glGetColorTableParameterivEXT" },\r
+   { (PROC)glPointParameterfEXT,               "glPointParameterfEXT"          },\r
+   { (PROC)glPointParameterfvEXT,              "glPointParameterfvEXT"         },\r
+   { (PROC)glBlendFuncSeparateEXT,             "glBlendFuncSeparateEXT"        },\r
+   { (PROC)glLockArraysEXT,                    "glLockArraysEXT"               },\r
+   { (PROC)glUnlockArraysEXT,                  "glUnlockArraysEXT"             }\r
+};\r
+\r
+int qt_ext = sizeof(ext) / sizeof(ext[0]);\r
+\r
+struct __pixelformat__ pix[] =\r
+{\r
+    {  {       sizeof(PIXELFORMATDESCRIPTOR),  1,\r
+        PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_GENERIC_FORMAT|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,\r
+        PFD_TYPE_RGBA,\r
+        24,    8,      0,      8,      8,      8,      16,     8,      24,\r
+        0,     0,      0,      0,      0,      16,     8,      0,      0,      0,      0,      0,      0 },\r
+        GL_TRUE\r
+    },\r
+    {  {       sizeof(PIXELFORMATDESCRIPTOR),  1,\r
+        PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_GENERIC_FORMAT,\r
+        PFD_TYPE_RGBA,\r
+        24,    8,      0,      8,      8,      8,      16,     8,      24,\r
+        0,     0,      0,      0,      0,      16,     8,      0,      0,      0,      0,      0,      0 },\r
+        GL_FALSE\r
+    },\r
+};\r
+\r
+int                            qt_pix = sizeof(pix) / sizeof(pix[0]);\r
+\r
+typedef struct {\r
+    WMesaContext ctx;\r
+    HDC hdc;\r
+} MesaWglCtx;\r
+\r
+#define MESAWGL_CTX_MAX_COUNT 20\r
+\r
+static MesaWglCtx wgl_ctx[MESAWGL_CTX_MAX_COUNT];\r
+\r
+static unsigned ctx_count = 0;\r
+static unsigned ctx_current = -1;\r
+static unsigned curPFD = 0;\r
+\r
+WGLAPI BOOL GLAPIENTRY wglCopyContext(HGLRC hglrcSrc,HGLRC hglrcDst,UINT mask)\r
+{\r
+    return(FALSE);\r
+}\r
+\r
+WGLAPI HGLRC GLAPIENTRY wglCreateContext(HDC hdc)\r
+{\r
+    HWND               hWnd;\r
+    int i = 0;\r
+    if(!(hWnd = WindowFromDC(hdc)))\r
+    {\r
+        SetLastError(0);\r
+        return(NULL);\r
+    }\r
+    if (!ctx_count)\r
+    {\r
+       for(i=0;i<MESAWGL_CTX_MAX_COUNT;i++)\r
+       {\r
+               wgl_ctx[i].ctx = NULL;\r
+               wgl_ctx[i].hdc = NULL;\r
+       }\r
+    }\r
+    for( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )\r
+    {\r
+        if ( wgl_ctx[i].ctx == NULL )\r
+        {\r
+            wgl_ctx[i].ctx = WMesaCreateContext( hWnd, NULL, GL_TRUE,\r
+                pix[curPFD-1].doubleBuffered );\r
+            if (wgl_ctx[i].ctx == NULL)\r
+                break;\r
+            wgl_ctx[i].hdc = hdc;\r
+            ctx_count++;\r
+            return ((HGLRC)wgl_ctx[i].ctx);\r
+        }\r
+    }\r
+    SetLastError(0);\r
+    return(NULL);\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglDeleteContext(HGLRC hglrc)\r
+{\r
+    int i;\r
+    for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )\r
+    {\r
+       if ( wgl_ctx[i].ctx == (PWMC) hglrc )\r
+       {\r
+            WMesaMakeCurrent((PWMC) hglrc);\r
+            WMesaDestroyContext();\r
+            wgl_ctx[i].ctx = NULL;\r
+            wgl_ctx[i].hdc = NULL;\r
+            ctx_count--;\r
+            return(TRUE);\r
+       }\r
+    }\r
+    SetLastError(0);\r
+    return(FALSE);\r
+}\r
+\r
+WGLAPI HGLRC GLAPIENTRY wglCreateLayerContext(HDC hdc,int iLayerPlane)\r
+{\r
+    SetLastError(0);\r
+    return(NULL);\r
+}\r
+\r
+WGLAPI HGLRC GLAPIENTRY wglGetCurrentContext(VOID)\r
+{\r
+   if (ctx_current < 0)\r
+      return 0;\r
+   else\r
+      return (HGLRC) wgl_ctx[ctx_current].ctx;\r
+}\r
+\r
+WGLAPI HDC GLAPIENTRY wglGetCurrentDC(VOID)\r
+{\r
+   if (ctx_current < 0)\r
+      return 0;\r
+   else\r
+      return wgl_ctx[ctx_current].hdc;\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglMakeCurrent(HDC hdc,HGLRC hglrc)\r
+{\r
+    int i;\r
+\r
+    /* new code suggested by Andy Sy */\r
+    if (!hdc || !hglrc) {\r
+       WMesaMakeCurrent(NULL);\r
+       ctx_current = -1;\r
+       return TRUE;\r
+    }\r
+\r
+    for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )\r
+    {\r
+        if ( wgl_ctx[i].ctx == (PWMC) hglrc )\r
+        {\r
+            wgl_ctx[i].hdc = hdc;\r
+            WMesaMakeCurrent( (WMesaContext) hglrc );\r
+            ctx_current = i;\r
+            return TRUE;\r
+        }\r
+    }\r
+    return FALSE;\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglShareLists(HGLRC hglrc1,HGLRC hglrc2)\r
+{\r
+    return(TRUE);\r
+}\r
+\r
+\r
+static FIXED FixedFromDouble(double d)\r
+{\r
+   long l = (long) (d * 65536L);\r
+   return *(FIXED *)&l;\r
+}\r
+\r
+\r
+/*\r
+** This is cribbed from FX/fxwgl.c, and seems to implement support\r
+** for bitmap fonts where the wglUseFontBitmapsA() code implements\r
+** support for outline fonts.  In combination they hopefully give\r
+** fairly generic support for fonts.\r
+*/\r
+static BOOL wglUseFontBitmaps_FX(HDC fontDevice, DWORD firstChar,\r
+                                 DWORD numChars, DWORD listBase)\r
+{\r
+#define VERIFY(a) a\r
+\r
+  TEXTMETRIC metric;\r
+  BITMAPINFO *dibInfo;\r
+  HDC bitDevice;\r
+  COLORREF tempColor;\r
+  int i;\r
+\r
+  VERIFY(GetTextMetrics(fontDevice, &metric));\r
+\r
+  dibInfo = (BITMAPINFO *) calloc(sizeof(BITMAPINFO) + sizeof(RGBQUAD), 1);\r
+  dibInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);\r
+  dibInfo->bmiHeader.biPlanes = 1;\r
+  dibInfo->bmiHeader.biBitCount = 1;\r
+  dibInfo->bmiHeader.biCompression = BI_RGB;\r
+\r
+  bitDevice = CreateCompatibleDC(fontDevice);\r
+  // HDC bitDevice = CreateDC("DISPLAY", NULL, NULL, NULL);\r
+  // VERIFY(bitDevice);\r
+\r
+  // Swap fore and back colors so the bitmap has the right polarity\r
+  tempColor = GetBkColor(bitDevice);\r
+  SetBkColor(bitDevice, GetTextColor(bitDevice));\r
+  SetTextColor(bitDevice, tempColor);\r
+\r
+  // Place chars based on base line\r
+  VERIFY(SetTextAlign(bitDevice, TA_BASELINE) >= 0 ? 1 : 0);\r
+\r
+  for(i = 0; i < numChars; i++) {\r
+    SIZE size;\r
+    char curChar;\r
+    int charWidth,charHeight,bmapWidth,bmapHeight,numBytes,res;\r
+    HBITMAP bitObject;\r
+    HGDIOBJ origBmap;\r
+    unsigned char *bmap;\r
+\r
+    curChar = i + firstChar;\r
+\r
+    // Find how high/wide this character is\r
+    VERIFY(GetTextExtentPoint32(bitDevice, &curChar, 1, &size));\r
+\r
+    // Create the output bitmap\r
+    charWidth = size.cx;\r
+    charHeight = size.cy;\r
+    bmapWidth = ((charWidth + 31) / 32) * 32;   // Round up to the next multiple of 32 bits\r
+    bmapHeight = charHeight;\r
+    bitObject = CreateCompatibleBitmap(bitDevice,\r
+                                       bmapWidth,\r
+                                       bmapHeight);\r
+    //VERIFY(bitObject);\r
+\r
+    // Assign the output bitmap to the device\r
+    origBmap = SelectObject(bitDevice, bitObject);\r
+    VERIFY(origBmap);\r
+\r
+    VERIFY( PatBlt( bitDevice, 0, 0, bmapWidth, bmapHeight,BLACKNESS ) );\r
+\r
+    // Use our source font on the device\r
+    VERIFY(SelectObject(bitDevice, GetCurrentObject(fontDevice,OBJ_FONT)));\r
+\r
+    // Draw the character\r
+    VERIFY(TextOut(bitDevice, 0, metric.tmAscent, &curChar, 1));\r
+\r
+    // Unselect our bmap object\r
+    VERIFY(SelectObject(bitDevice, origBmap));\r
+\r
+    // Convert the display dependant representation to a 1 bit deep DIB\r
+    numBytes = (bmapWidth * bmapHeight) / 8;\r
+    bmap = malloc(numBytes);\r
+    dibInfo->bmiHeader.biWidth = bmapWidth;\r
+    dibInfo->bmiHeader.biHeight = bmapHeight;\r
+    res = GetDIBits(bitDevice, bitObject, 0, bmapHeight, bmap,\r
+                    dibInfo,\r
+                    DIB_RGB_COLORS);\r
+    //VERIFY(res);\r
+\r
+    // Create the GL object\r
+    glNewList(i + listBase, GL_COMPILE);\r
+    glBitmap(bmapWidth, bmapHeight, 0.0, metric.tmDescent,\r
+             charWidth, 0.0,\r
+             bmap);\r
+    glEndList();\r
+    // CheckGL();\r
+\r
+    // Destroy the bmap object\r
+    DeleteObject(bitObject);\r
+\r
+    // Deallocate the bitmap data\r
+    free(bmap);\r
+  }\r
+\r
+  // Destroy the DC\r
+  VERIFY(DeleteDC(bitDevice));\r
+\r
+  free(dibInfo);\r
+\r
+  return TRUE;\r
+#undef VERIFY\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglUseFontBitmapsA(HDC hdc, DWORD first,\r
+                                       DWORD count, DWORD listBase)\r
+{\r
+   int i;\r
+   GLuint font_list;\r
+   DWORD size;\r
+   GLYPHMETRICS gm;\r
+   HANDLE hBits;\r
+   LPSTR lpBits;\r
+   MAT2 mat;\r
+   int  success = TRUE;\r
+\r
+   if (first<0)\r
+      return FALSE;\r
+   if (count<0)\r
+      return FALSE;\r
+   if (listBase<0)\r
+      return FALSE;\r
+\r
+   font_list = listBase;\r
+\r
+   mat.eM11 = FixedFromDouble(1);\r
+   mat.eM12 = FixedFromDouble(0);\r
+   mat.eM21 = FixedFromDouble(0);\r
+   mat.eM22 = FixedFromDouble(-1);\r
+\r
+   memset(&gm,0,sizeof(gm));\r
+\r
+   /*\r
+   ** If we can't get the glyph outline, it may be because this is a fixed\r
+   ** font.  Try processing it that way.\r
+   */\r
+   if( GetGlyphOutline(hdc, first, GGO_BITMAP, &gm, 0, NULL, &mat)\r
+       == GDI_ERROR )\r
+   {\r
+       return wglUseFontBitmaps_FX( hdc, first, count, listBase );\r
+   }\r
+\r
+   /*\r
+   ** Otherwise process all desired characters.\r
+   */\r
+   for (i = 0; i < count; i++)\r
+   {\r
+       DWORD err;\r
+       \r
+      glNewList( font_list+i, GL_COMPILE );\r
+\r
+      /* allocate space for the bitmap/outline */\r
+      size = GetGlyphOutline(hdc, first + i, GGO_BITMAP, &gm, 0, NULL, &mat);\r
+      if (size == GDI_ERROR)\r
+      {\r
+         glEndList( );\r
+         err = GetLastError();\r
+         success = FALSE;\r
+         continue;\r
+      }\r
+\r
+      hBits  = GlobalAlloc(GHND, size+1);\r
+      lpBits = GlobalLock(hBits);\r
+\r
+      err = \r
+      GetGlyphOutline(hdc,    /* handle to device context */\r
+                      first + i,          /* character to query */\r
+                      GGO_BITMAP,         /* format of data to return */\r
+                      &gm,                /* pointer to structure for metrics*/\r
+                      size,               /* size of buffer for data */\r
+                      lpBits,             /* pointer to buffer for data */\r
+                      &mat                /* pointer to transformation */\r
+                                          /* matrix structure */\r
+                  );\r
+\r
+      if (err == GDI_ERROR)\r
+      {\r
+         GlobalUnlock(hBits);\r
+         GlobalFree(hBits);\r
+         \r
+         glEndList( );\r
+         err = GetLastError();\r
+         success = FALSE;\r
+         continue;\r
+      }\r
+\r
+      glBitmap(gm.gmBlackBoxX,gm.gmBlackBoxY,\r
+               -gm.gmptGlyphOrigin.x,\r
+               gm.gmptGlyphOrigin.y,\r
+               gm.gmCellIncX,gm.gmCellIncY,\r
+               (const GLubyte * )lpBits);\r
+\r
+      GlobalUnlock(hBits);\r
+      GlobalFree(hBits);\r
+\r
+      glEndList( );\r
+   }\r
+\r
+   return success;\r
+}\r
+\r
+\r
+WGLAPI BOOL GLAPIENTRY wglUseFontBitmapsW(HDC hdc,DWORD first,DWORD count,DWORD listBase)\r
+{\r
+    return FALSE;\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglUseFontOutlinesA(HDC hdc,DWORD first,DWORD count,\r
+                                  DWORD listBase,FLOAT deviation,\r
+                                  FLOAT extrusion,int format,\r
+                                  LPGLYPHMETRICSFLOAT lpgmf)\r
+{\r
+    SetLastError(0);\r
+    return(FALSE);\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglUseFontOutlinesW(HDC hdc,DWORD first,DWORD count,\r
+                                  DWORD listBase,FLOAT deviation,\r
+                                  FLOAT extrusion,int format,\r
+                                  LPGLYPHMETRICSFLOAT lpgmf)\r
+{\r
+    SetLastError(0);\r
+    return(FALSE);\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglDescribeLayerPlane(HDC hdc,int iPixelFormat,\r
+                                    int iLayerPlane,UINT nBytes,\r
+                                    LPLAYERPLANEDESCRIPTOR plpd)\r
+{\r
+    SetLastError(0);\r
+    return(FALSE);\r
+}\r
+\r
+WGLAPI int GLAPIENTRY wglSetLayerPaletteEntries(HDC hdc,int iLayerPlane,\r
+                                       int iStart,int cEntries,\r
+                                       CONST COLORREF *pcr)\r
+{\r
+    SetLastError(0);\r
+    return(0);\r
+}\r
+\r
+WGLAPI int GLAPIENTRY wglGetLayerPaletteEntries(HDC hdc,int iLayerPlane,\r
+                                       int iStart,int cEntries,\r
+                                       COLORREF *pcr)\r
+{\r
+    SetLastError(0);\r
+    return(0);\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglRealizeLayerPalette(HDC hdc,int iLayerPlane,BOOL bRealize)\r
+{\r
+    SetLastError(0);\r
+    return(FALSE);\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglSwapLayerBuffers(HDC hdc,UINT fuPlanes)\r
+{\r
+    if( !hdc )\r
+    {\r
+        WMesaSwapBuffers();\r
+        return(TRUE);\r
+    }\r
+    SetLastError(0);\r
+    return(FALSE);\r
+}\r
+\r
+WGLAPI int GLAPIENTRY wglChoosePixelFormat(HDC hdc,\r
+                                  CONST PIXELFORMATDESCRIPTOR *ppfd)\r
+{\r
+    int                i,best = -1,bestdelta = 0x7FFFFFFF,delta,qt_valid_pix;\r
+\r
+    qt_valid_pix = qt_pix;\r
+    if(ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR) || ppfd->nVersion != 1)\r
+    {\r
+        SetLastError(0);\r
+        return(0);\r
+    }\r
+    for(i = 0;i < qt_valid_pix;i++)\r
+    {\r
+        delta = 0;\r
+        if(\r
+            (ppfd->dwFlags & PFD_DRAW_TO_WINDOW) &&\r
+            !(pix[i].pfd.dwFlags & PFD_DRAW_TO_WINDOW))\r
+            continue;\r
+        if(\r
+            (ppfd->dwFlags & PFD_DRAW_TO_BITMAP) &&\r
+            !(pix[i].pfd.dwFlags & PFD_DRAW_TO_BITMAP))\r
+            continue;\r
+        if(\r
+            (ppfd->dwFlags & PFD_SUPPORT_GDI) &&\r
+            !(pix[i].pfd.dwFlags & PFD_SUPPORT_GDI))\r
+            continue;\r
+        if(\r
+            (ppfd->dwFlags & PFD_SUPPORT_OPENGL) &&\r
+            !(pix[i].pfd.dwFlags & PFD_SUPPORT_OPENGL))\r
+            continue;\r
+        if(\r
+            !(ppfd->dwFlags & PFD_DOUBLEBUFFER_DONTCARE) &&\r
+            ((ppfd->dwFlags & PFD_DOUBLEBUFFER) != (pix[i].pfd.dwFlags & PFD_DOUBLEBUFFER)))\r
+            continue;\r
+        if(\r
+            !(ppfd->dwFlags & PFD_STEREO_DONTCARE) &&\r
+            ((ppfd->dwFlags & PFD_STEREO) != (pix[i].pfd.dwFlags & PFD_STEREO)))\r
+            continue;\r
+        if(ppfd->iPixelType != pix[i].pfd.iPixelType)\r
+            delta++;\r
+        if(delta < bestdelta)\r
+        {\r
+            best = i + 1;\r
+            bestdelta = delta;\r
+            if(bestdelta == 0)\r
+                break;\r
+        }\r
+    }\r
+    if(best == -1)\r
+    {\r
+        SetLastError(0);\r
+        return(0);\r
+    }\r
+    return(best);\r
+}\r
+\r
+WGLAPI int GLAPIENTRY wglDescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,\r
+                                    LPPIXELFORMATDESCRIPTOR ppfd)\r
+{\r
+    int                qt_valid_pix;\r
+\r
+    qt_valid_pix = qt_pix;\r
+    if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || nBytes != sizeof(PIXELFORMATDESCRIPTOR))\r
+    {\r
+        SetLastError(0);\r
+        return(0);\r
+    }\r
+    *ppfd = pix[iPixelFormat - 1].pfd;\r
+    return(qt_valid_pix);\r
+}\r
+\r
+/*\r
+* GetProcAddress - return the address of an appropriate extension\r
+*/\r
+WGLAPI PROC GLAPIENTRY wglGetProcAddress(LPCSTR lpszProc)\r
+{\r
+    int                i;\r
+    for(i = 0;i < qt_ext;i++)\r
+        if(!strcmp(lpszProc,ext[i].name))\r
+            return(ext[i].proc);\r
+\r
+        SetLastError(0);\r
+        return(NULL);\r
+}\r
+\r
+WGLAPI int GLAPIENTRY wglGetPixelFormat(HDC hdc)\r
+{\r
+    if(curPFD == 0)\r
+    {\r
+        SetLastError(0);\r
+        return(0);\r
+    }\r
+    return(curPFD);\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglSetPixelFormat(HDC hdc,int iPixelFormat,\r
+                                PIXELFORMATDESCRIPTOR *ppfd)\r
+{\r
+    int                qt_valid_pix;\r
+\r
+    qt_valid_pix = qt_pix;\r
+    if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR))\r
+    {\r
+        SetLastError(0);\r
+        return(FALSE);\r
+    }\r
+    curPFD = iPixelFormat;\r
+    return(TRUE);\r
+}\r
+\r
+WGLAPI BOOL GLAPIENTRY wglSwapBuffers(HDC hdc)\r
+{\r
+   if (ctx_current < 0)\r
+      return FALSE;\r
+\r
+   if(wgl_ctx[ctx_current].ctx == NULL) {\r
+      SetLastError(0);\r
+      return(FALSE);\r
+   }\r
+   WMesaSwapBuffers();\r
+   return(TRUE);\r
+}\r
+\r
+#endif /* WIN32 */\r
index 43f99f3..7eb13ca 100644 (file)
-/* $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
index 3c448e7..284a9cb 100644 (file)
-# Makefile for Win32
-
-!include <win32.mak>
-
-TOP = ..
-
-CORE_SRCS = \
-       tnl\t_array_api.c \
-       tnl\t_array_import.c \
-       tnl\t_context.c \
-       tnl\t_eval_api.c \
-       tnl\t_imm_alloc.c \
-       tnl\t_imm_api.c \
-       tnl\t_imm_debug.c \
-       tnl\t_imm_dlist.c \
-       tnl\t_imm_elt.c \
-       tnl\t_imm_eval.c \
-       tnl\t_imm_exec.c \
-       tnl\t_imm_fixup.c \
-       tnl\t_pipeline.c \
-       tnl\t_vb_fog.c \
-       tnl\t_vb_light.c \
-       tnl\t_vb_normals.c \
-       tnl\t_vb_points.c \
-       tnl\t_vb_render.c \
-       tnl\t_vb_texgen.c \
-       tnl\t_vb_texmat.c \
-       tnl\t_vb_vertex.c \
-       swrast_setup\ss_context.c \
-       swrast_setup\ss_triangle.c \
-       swrast_setup\ss_vb.c \
-       api_loopback.c \
-       api_noop.c \
-       api_validate.c \
-       accum.c \
-       attrib.c \
-       blend.c \
-       buffers.c \
-       clip.c \
-       colortab.c \
-       config.c \
-       context.c \
-       convolve.c \
-       debug.c \
-       depth.c \
-       dispatch.c \
-       dlist.c \
-       drawpix.c \
-       enable.c \
-       enums.c \
-       eval.c \
-       extensions.c \
-       feedback.c \
-       fog.c \
-       get.c \
-       glapi.c \
-       glthread.c \
-       hash.c \
-       highpc.c \
-       hint.c \
-       histogram.c \
-       image.c \
-       imports.c \
-       light.c \
-       lines.c \
-       lowpc.c \
-       matrix.c \
-       mem.c \
-       mmath.c \
-       pixel.c \
-       points.c \
-       polygon.c \
-       rastpos.c \
-       state.c \
-       stencil.c \
-       teximage.c \
-       texobj.c \
-       texstate.c \
-       texstore.c \
-       texutil.c \
-       varray.c \
-       vtxfmt.c \
-       X86\x86.c \
-       X86\common_x86.c \
-       X86\3dnow.c \
-       X86\sse.c \
-       math\m_debug_norm.c \
-       math\m_debug_vertex.c \
-       math\m_debug_xform.c \
-       math\m_eval.c \
-       math\m_matrix.c \
-       math\m_translate.c \
-       math\m_vector.c \
-       math\m_vertices.c \
-       math\m_xform.c \
-       array_cache\ac_context.c \
-       array_cache\ac_import.c \
-       swrast\s_aaline.c \
-       swrast\s_aatriangle.c \
-       swrast\s_accum.c \
-       swrast\s_alpha.c \
-       swrast\s_alphabuf.c \
-       swrast\s_bitmap.c \
-       swrast\s_blend.c \
-       swrast\s_buffers.c \
-       swrast\s_copypix.c \
-       swrast\s_context.c \
-       swrast\s_depth.c \
-       swrast\s_drawpix.c \
-       swrast\s_feedback.c \
-       swrast\s_fog.c \
-       swrast\s_histogram.c \
-       swrast\s_lines.c \
-       swrast\s_logic.c \
-       swrast\s_masking.c \
-       swrast\s_pb.c \
-       swrast\s_pixeltex.c \
-       swrast\s_points.c \
-       swrast\s_readpix.c \
-       swrast\s_scissor.c \
-       swrast\s_span.c \
-       swrast\s_stencil.c \
-       swrast\s_texture.c \
-       swrast\s_triangle.c \
-       swrast\s_zoom.c
-
-DRIVER_SRCS = \
-       Trace\tr_context.c \
-       Trace\tr_control.c \
-       Trace\tr_error.c \
-       Trace\tr_support.c \
-       Trace\tr_wrapper.c \
-       Trace\tr_write.c
-
-ASM_SRCS =
-
-SRCS   = $(CORE_SRCS) $(DRIVER_SRCS)
-
-OSMESA_SRCS = OSmesa\osmesa.c
-OSMESA_OBJS = OSmesa\osmesa.obj
-
-all    : mesadll install
-
-!include "$(TOP)/mesawin32.mak"
-
-mesadll        : $(MESADLL)
-
-CFLAGS = $(cvarsdll) $(CFLAGS) -D_OPENGL32_
-LFLAGS = $(dlllflags) $(LFLAGS)
-
-OBJS   = $(ASM_SRCS:.S=.obj) $(CORE_SRCS:.c=.obj) $(DRIVER_SRCS:.c=.obj)
-LIBS   = $(OPENGL) $(GLU) winmm.lib $(guilibsdll)
-
-$(MESADLL)     : $(OBJS) mesa.def
-       $(link) $(LFLAGS) -out:$(MESADLL) -def:mesa.def $(OBJS) $(LIBS)
-
-#install       : $(MESADLL)
-#      @echo "copying Mesa dynamic link library to system directory..."
-#      -copy $(MESADLL) $(DLLINSTALL)
-#      @echo "copying Mesa header files to include directory..."
-#      -copy ..\..\include\GL\gl.h $(INCLUDEINSTALL)
-#      -copy ..\..\include\GL\glext.h $(INCLUDEINSTALL)
-#      @echo "copying Mesa import library to library directory..."
-#      -copy $(MESALIB) $(LIBINSTALL)
-install        : $(MESADLL)
-       @echo "copying Mesa dynamic link library to system directory..."
-       -copy $(MESADLL) $(TOP)\lib
-       @echo "copying Mesa import library to library directory..."
-       -copy $(MESALIB) $(TOP)\lib
-
-.c.obj :
-       $(cc) $(CFLAGS) -I. $<
+# Makefile for Win32\r
+#\r
+#  NOTE: the install target may overwrite important files in the system dir\r
+# Sept 12, 2001\r
+# Windows driver not working.  OSMesa driver works.\r
+#\r
+\r
+!include <win32.mak>\r
+\r
+TOP = ..\r
+SUBDIRS = osmesa.dir\r
+\r
+CORE_SRCS = \\r
+       tnl\t_array_api.c \\r
+       tnl\t_array_import.c \\r
+       tnl\t_context.c \\r
+       tnl\t_eval_api.c \\r
+       tnl\t_imm_alloc.c \\r
+       tnl\t_imm_api.c \\r
+       tnl\t_imm_debug.c \\r
+       tnl\t_imm_dlist.c \\r
+       tnl\t_imm_elt.c \\r
+       tnl\t_imm_eval.c \\r
+       tnl\t_imm_exec.c \\r
+       tnl\t_imm_fixup.c \\r
+       tnl\t_pipeline.c \\r
+       tnl\t_vb_fog.c \\r
+       tnl\t_vb_light.c \\r
+       tnl\t_vb_normals.c \\r
+       tnl\t_vb_points.c \\r
+       tnl\t_vb_render.c \\r
+       tnl\t_vb_texgen.c \\r
+       tnl\t_vb_texmat.c \\r
+       tnl\t_vb_vertex.c \\r
+       swrast_setup\ss_context.c \\r
+       swrast_setup\ss_triangle.c \\r
+       swrast_setup\ss_vb.c \\r
+       api_loopback.c \\r
+       api_noop.c \\r
+       api_validate.c \\r
+       accum.c \\r
+       attrib.c \\r
+       blend.c \\r
+       buffers.c \\r
+       clip.c \\r
+       colortab.c \\r
+       config.c \\r
+       context.c \\r
+       convolve.c \\r
+       debug.c \\r
+       depth.c \\r
+       dispatch.c \\r
+       dlist.c \\r
+       drawpix.c \\r
+       enable.c \\r
+       enums.c \\r
+       eval.c \\r
+       extensions.c \\r
+       feedback.c \\r
+       fog.c \\r
+       get.c \\r
+       glapi.c \\r
+       glthread.c \\r
+       hash.c \\r
+       highpc.c \\r
+       hint.c \\r
+       histogram.c \\r
+       image.c \\r
+       imports.c \\r
+       light.c \\r
+       lines.c \\r
+       lowpc.c \\r
+       matrix.c \\r
+       mem.c \\r
+       mmath.c \\r
+       pixel.c \\r
+       points.c \\r
+       polygon.c \\r
+       rastpos.c \\r
+       state.c \\r
+       stencil.c \\r
+       teximage.c \\r
+       texformat.c \\r
+       texobj.c \\r
+       texstate.c \\r
+       texstore.c \\r
+       texutil.c \\r
+       varray.c \\r
+       vtxfmt.c \\r
+#      X86\x86.c \\r
+#      X86\common_x86.c \\r
+#      X86\3dnow.c \\r
+#      X86\sse.c \\r
+       math\m_debug_norm.c \\r
+       math\m_debug_vertex.c \\r
+       math\m_debug_xform.c \\r
+       math\m_eval.c \\r
+       math\m_matrix.c \\r
+       math\m_translate.c \\r
+       math\m_vector.c \\r
+       math\m_vertices.c \\r
+       math\m_xform.c \\r
+       array_cache\ac_context.c \\r
+       array_cache\ac_import.c \\r
+       swrast\s_aaline.c \\r
+       swrast\s_aatriangle.c \\r
+       swrast\s_accum.c \\r
+       swrast\s_alpha.c \\r
+       swrast\s_alphabuf.c \\r
+       swrast\s_bitmap.c \\r
+       swrast\s_blend.c \\r
+       swrast\s_buffers.c \\r
+       swrast\s_copypix.c \\r
+       swrast\s_context.c \\r
+       swrast\s_depth.c \\r
+       swrast\s_drawpix.c \\r
+       swrast\s_feedback.c \\r
+       swrast\s_fog.c \\r
+       swrast\s_histogram.c \\r
+       swrast\s_imaging.c \\r
+       swrast\s_lines.c \\r
+       swrast\s_logic.c \\r
+       swrast\s_masking.c \\r
+       swrast\s_pb.c \\r
+       swrast\s_pixeltex.c \\r
+       swrast\s_points.c \\r
+       swrast\s_readpix.c \\r
+       swrast\s_scissor.c \\r
+       swrast\s_span.c \\r
+       swrast\s_stencil.c \\r
+       swrast\s_texstore.c \\r
+       swrast\s_texture.c \\r
+       swrast\s_triangle.c \\r
+       swrast\s_zoom.c\r
+\r
+DRIVER_SRCS = \\r
+       Trace\tr_context.c \\r
+       Trace\tr_control.c \\r
+       Trace\tr_error.c \\r
+       Trace\tr_support.c \\r
+       Trace\tr_wrapper.c \\r
+       Trace\tr_write.c \\r
+       Windows\wgl.c \\r
+       Windows\wmesa.c\r
+\r
+ASM_SRCS =\r
+\r
+SRCS   = $(CORE_SRCS) $(DRIVER_SRCS)\r
+\r
+all    : mesadll $(SUBDIRS)\r
+\r
+!include "$(TOP)/mesawin32.mak"\r
+\r
+mesadll        : $(MESADLL)\r
+\r
+CFLAGS = $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -DBUILD_GL32 -DNO_PARALLEL -DNO_STEREO\r
+LFLAGS = $(dlllflags) $(LFLAGS)\r
+\r
+OBJS   = $(ASM_SRCS:.S=.obj) $(CORE_SRCS:.c=.obj) $(DRIVER_SRCS:.c=.obj)\r
+LIBS   = $(GLU) winmm.lib $(guilibsdll)\r
+\r
+$(MESADLL)     : $(OBJS) mesa.def\r
+       $(link) $(LFLAGS) -out:$(MESADLL) -def:mesa.def $(OBJS) $(LIBS)\r
+       @echo "copying Mesa dynamic link library to lib directory..."\r
+       -copy $(MESADLL) ..\lib\r
+       @echo "copying Mesa import library to lib directory..."\r
+       -copy $(MESALIB) ..\lib\r
+\r
+$(SUBDIRS)     :\r
+       @echo.\r
+       @echo Making in $* directory\r
+       @cd $*\r
+       @nmake -f Makefile.win -nologo\r
+       @cd ..\r
+\r
+install        : $(MESADLL)\r
+       @echo "copying Mesa dynamic link library to system directory..."\r
+       -copy $(MESADLL) $(DLLINSTALL)\r
+       @echo "copying Mesa header files to include directory..."\r
+       -copy ..\..\include\GL\gl.h $(INCLUDEINSTALL)\r
+       -copy ..\..\include\GL\glext.h $(INCLUDEINSTALL)\r
+       @echo "copying Mesa import library to library directory..."\r
+       -copy $(MESALIB) $(LIBINSTALL)\r
+\r
+clean  ::\r
+       @del /f tnl\*.obj\r
+       @del /f swrast_setup\*.obj\r
+       @del /f math\*.obj\r
+       @del /f array_cache\*.obj\r
+       @del /f swrast\*.obj\r
+       @del /f Trace\*.obj\r
+       @del /f osmesa\*.obj\r
+       @del /f Windows\*.obj\r
+\r
+# override default inference rule with one that writes the object to\r
+# the correct subdir\r
+.c.obj :\r
+       $(cc) $(CFLAGS) -I. $< /Fo$*.obj\r
index 078f7bc..647ee48 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dispatch.c,v 1.23 2001/06/05 23:54:00 davem69 Exp $ */
+/* $Id: dispatch.c,v 1.24 2001/09/14 22:19:19 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 
 #if !(defined(USE_X86_ASM) || defined(USE_SPARC_ASM))
 
+#if defined(WIN32)
+#define KEYWORD1 GLAPI
+#else
 #define KEYWORD1
+#endif
+
 #define KEYWORD2 GLAPIENTRY
+
 #if defined(USE_MGL_NAMESPACE)
 #define NAME(func)  mgl##func
 #else
index 5848dc9..0c38421 100644 (file)
-DESCRIPTION 'Mesa (OpenGL work-alike) for Win32'
-VERSION 3.5
-
-EXPORTS
-       glAccum
-       glAlphaFunc
-       glAreTexturesResident
-       glAreTexturesResidentEXT
-       glArrayElement
-       glArrayElementEXT
-       glBegin
-       glBindTexture
-       glBindTextureEXT
-       glBitmap
-       glBlendColorEXT
-       glBlendEquationEXT
-       glBlendFunc
-       glCallList
-       glCallLists
-       glClear
-       glClearAccum
-       glClearColor
-       glClearDepth
-       glClearIndex
-       glClearStencil
-       glClipPlane
-       glColor3b
-       glColor3bv
-       glColor3d
-       glColor3dv
-       glColor3f
-       glColor3fv
-       glColor3i
-       glColor3iv
-       glColor3s
-       glColor3sv
-       glColor3ub
-       glColor3ubv
-       glColor3ui
-       glColor3uiv
-       glColor3us
-       glColor3usv
-       glColor4b
-       glColor4bv
-       glColor4d
-       glColor4dv
-       glColor4f
-       glColor4fv
-       glColor4i
-       glColor4iv
-       glColor4s
-       glColor4sv
-       glColor4ub
-       glColor4ubv
-       glColor4ui
-       glColor4uiv
-       glColor4us
-       glColor4usv
-       glColorMask
-       glColorMaterial
-       glColorPointer
-       glColorPointerEXT
-       glColorSubTableEXT
-       glColorTableEXT
-       glCopyPixels
-       glCopyTexImage1D
-       glCopyTexImage2D
-       glCopyTexSubImage1D
-       glCopyTexSubImage2D
-       glCopyTexSubImage3DEXT
-       glCullFace
-       glDeleteLists
-       glDeleteTextures
-       glDeleteTexturesEXT
-       glDepthFunc
-       glDepthMask
-       glDepthRange
-       glDisable
-       glDisableClientState
-       glDrawArrays
-       glDrawArraysEXT
-       glDrawBuffer
-       glDrawElements
-       glDrawPixels
-       glEdgeFlag
-       glEdgeFlagPointer
-       glEdgeFlagPointerEXT
-       glEdgeFlagv
-       glEnable
-       glEnableClientState
-       glEnd
-       glEndList
-       glEvalCoord1d
-       glEvalCoord1dv
-       glEvalCoord1f
-       glEvalCoord1fv
-       glEvalCoord2d
-       glEvalCoord2dv
-       glEvalCoord2f
-       glEvalCoord2fv
-       glEvalMesh1
-       glEvalMesh2
-       glEvalPoint1
-       glEvalPoint2
-       glFeedbackBuffer
-       glFinish
-       glFlush
-       glFogf
-       glFogfv
-       glFogi
-       glFogiv
-       glFrontFace
-       glFrustum
-       glGenLists
-       glGenTextures
-       glGenTexturesEXT
-       glGetBooleanv
-       glGetClipPlane
-       glGetColorTableEXT
-       glGetColorTableParameterfvEXT
-       glGetColorTableParameterivEXT
-       glGetDoublev
-       glGetError
-       glGetFloatv
-       glGetIntegerv
-       glGetLightfv
-       glGetLightiv
-       glGetMapdv
-       glGetMapfv
-       glGetMapiv
-       glGetMaterialfv
-       glGetMaterialiv
-       glGetPixelMapfv
-       glGetPixelMapuiv
-       glGetPixelMapusv
-       glGetPointerv
-       glGetPointervEXT
-       glGetPolygonStipple
-       glGetString
-       glGetTexEnvfv
-       glGetTexEnviv
-       glGetTexGendv
-       glGetTexGenfv
-       glGetTexGeniv
-       glGetTexImage
-       glGetTexLevelParameterfv
-       glGetTexLevelParameteriv
-       glGetTexParameterfv
-       glGetTexParameteriv
-       glHint
-       glIndexd
-       glIndexdv
-       glIndexf
-       glIndexfv
-       glIndexi
-       glIndexiv
-       glIndexMask
-       glIndexPointer
-       glIndexPointerEXT
-       glIndexs
-       glIndexsv
-       glIndexub
-       glIndexubv
-       glInitNames
-       glInterleavedArrays
-       glIsEnabled
-       glIsList
-       glIsTexture
-       glIsTextureEXT
-       glLightf
-       glLightfv
-       glLighti
-       glLightiv
-       glLightModelf
-       glLightModelfv
-       glLightModeli
-       glLightModeliv
-       glLineStipple
-       glLineWidth
-       glListBase
-       glLoadIdentity
-       glLoadMatrixd
-       glLoadMatrixf
-       glLoadName
-       glLogicOp
-       glMap1d
-       glMap1f
-       glMap2d
-       glMap2f
-       glMapGrid1d
-       glMapGrid1f
-       glMapGrid2d
-       glMapGrid2f
-       glMaterialf
-       glMaterialfv
-       glMateriali
-       glMaterialiv
-       glMatrixMode
-       glMultMatrixd
-       glMultMatrixf
-       glNewList
-       glNormal3b
-       glNormal3bv
-       glNormal3d
-       glNormal3dv
-       glNormal3f
-       glNormal3fv
-       glNormal3i
-       glNormal3iv
-       glNormal3s
-       glNormal3sv
-       glNormalPointer
-       glNormalPointerEXT
-       glOrtho
-       glPassThrough
-       glPixelMapfv
-       glPixelMapuiv
-       glPixelMapusv
-       glPixelStoref
-       glPixelStorei
-       glPixelTransferf
-       glPixelTransferi
-       glPixelZoom
-       glPointParameterfEXT
-       glPointParameterfvEXT
-       glPointSize
-       glPolygonMode
-       glPolygonOffset
-       glPolygonOffsetEXT
-       glPolygonStipple
-       glPopAttrib
-       glPopClientAttrib
-       glPopMatrix
-       glPopName
-       glPrioritizeTextures
-       glPrioritizeTexturesEXT
-       glPushAttrib
-       glPushClientAttrib
-       glPushMatrix
-       glPushName
-       glRasterPos2d
-       glRasterPos2dv
-       glRasterPos2f
-       glRasterPos2fv
-       glRasterPos2i
-       glRasterPos2iv
-       glRasterPos2s
-       glRasterPos2sv
-       glRasterPos3d
-       glRasterPos3dv
-       glRasterPos3f
-       glRasterPos3fv
-       glRasterPos3i
-       glRasterPos3iv
-       glRasterPos3s
-       glRasterPos3sv
-       glRasterPos4d
-       glRasterPos4dv
-       glRasterPos4f
-       glRasterPos4fv
-       glRasterPos4i
-       glRasterPos4iv
-       glRasterPos4s
-       glRasterPos4sv
-       glReadBuffer
-       glReadPixels
-       glRectd
-       glRectdv
-       glRectf
-       glRectfv
-       glRecti
-       glRectiv
-       glRects
-       glRectsv
-       glRenderMode
-       glResizeBuffersMESA
-       glRotated
-       glRotatef
-       glScaled
-       glScalef
-       glScissor
-       glSelectBuffer
-       glShadeModel
-       glStencilFunc
-       glStencilMask
-       glStencilOp
-       glTexCoord1d
-       glTexCoord1dv
-       glTexCoord1f
-       glTexCoord1fv
-       glTexCoord1i
-       glTexCoord1iv
-       glTexCoord1s
-       glTexCoord1sv
-       glTexCoord2d
-       glTexCoord2dv
-       glTexCoord2f
-       glTexCoord2fv
-       glTexCoord2i
-       glTexCoord2iv
-       glTexCoord2s
-       glTexCoord2sv
-       glTexCoord3d
-       glTexCoord3dv
-       glTexCoord3f
-       glTexCoord3fv
-       glTexCoord3i
-       glTexCoord3iv
-       glTexCoord3s
-       glTexCoord3sv
-       glTexCoord4d
-       glTexCoord4dv
-       glTexCoord4f
-       glTexCoord4fv
-       glTexCoord4i
-       glTexCoord4iv
-       glTexCoord4s
-       glTexCoord4sv
-       glTexCoordPointer
-       glTexCoordPointerEXT
-       glTexEnvf
-       glTexEnvfv
-       glTexEnvi
-       glTexEnviv
-       glTexGend
-       glTexGendv
-       glTexGenf
-       glTexGenfv
-       glTexGeni
-       glTexGeniv
-       glTexImage1D
-       glTexImage2D
-       glTexImage3DEXT
-       glTexParameterf
-       glTexParameterfv
-       glTexParameteri
-       glTexParameteriv
-       glTexSubImage1D
-       glTexSubImage2D
-       glTexSubImage3DEXT
-       glTranslated
-       glTranslatef
-       glVertex2d
-       glVertex2dv
-       glVertex2f
-       glVertex2fv
-       glVertex2i
-       glVertex2iv
-       glVertex2s
-       glVertex2sv
-       glVertex3d
-       glVertex3dv
-       glVertex3f
-       glVertex3fv
-       glVertex3i
-       glVertex3iv
-       glVertex3s
-       glVertex3sv
-       glVertex4d
-       glVertex4dv
-       glVertex4f
-       glVertex4fv
-       glVertex4i
-       glVertex4iv
-       glVertex4s
-       glVertex4sv
-       glVertexPointer
-       glVertexPointerEXT
-       glViewport
-       glWindowPos2dMESA
-       glWindowPos2dvMESA
-       glWindowPos2fMESA
-       glWindowPos2fvMESA
-       glWindowPos2iMESA
-       glWindowPos2ivMESA
-       glWindowPos2sMESA
-       glWindowPos2svMESA
-       glWindowPos3dMESA
-       glWindowPos3dvMESA
-       glWindowPos3fMESA
-       glWindowPos3fvMESA
-       glWindowPos3iMESA
-       glWindowPos3ivMESA
-       glWindowPos3sMESA
-       glWindowPos3svMESA
-       glWindowPos4dMESA
-       glWindowPos4dvMESA
-       glWindowPos4fMESA
-       glWindowPos4fvMESA
-       glWindowPos4iMESA
-       glWindowPos4ivMESA
-       glWindowPos4sMESA
-       glWindowPos4svMESA
-       WMesaCreateContext
-       WMesaDestroyContext
-       WMesaMakeCurrent
-       WMesaPaletteChange
-       WMesaSwapBuffers
-       OSMesaCreateContext
-       OSMesaDestroyContext
-       OSMesaMakeCurrent
-       OSMesaGetCurrentContext
-       OSMesaPixelStore
-       OSMesaGetIntegerv
-       OSMesaGetDepthBuffer
+DESCRIPTION 'Mesa (OpenGL work-alike) for Win32'\r
+VERSION 3.5\r
+\r
+EXPORTS\r
+       glAccum\r
+       glAlphaFunc\r
+       glAreTexturesResident\r
+       glAreTexturesResidentEXT\r
+       glArrayElement\r
+       glArrayElementEXT\r
+       glBegin\r
+       glBindTexture\r
+       glBindTextureEXT\r
+       glBitmap\r
+       glBlendColorEXT\r
+       glBlendEquationEXT\r
+       glBlendFunc\r
+       glCallList\r
+       glCallLists\r
+       glClear\r
+       glClearAccum\r
+       glClearColor\r
+       glClearDepth\r
+       glClearIndex\r
+       glClearStencil\r
+       glClipPlane\r
+       glColor3b\r
+       glColor3bv\r
+       glColor3d\r
+       glColor3dv\r
+       glColor3f\r
+       glColor3fv\r
+       glColor3i\r
+       glColor3iv\r
+       glColor3s\r
+       glColor3sv\r
+       glColor3ub\r
+       glColor3ubv\r
+       glColor3ui\r
+       glColor3uiv\r
+       glColor3us\r
+       glColor3usv\r
+       glColor4b\r
+       glColor4bv\r
+       glColor4d\r
+       glColor4dv\r
+       glColor4f\r
+       glColor4fv\r
+       glColor4i\r
+       glColor4iv\r
+       glColor4s\r
+       glColor4sv\r
+       glColor4ub\r
+       glColor4ubv\r
+       glColor4ui\r
+       glColor4uiv\r
+       glColor4us\r
+       glColor4usv\r
+       glColorMask\r
+       glColorMaterial\r
+       glColorPointer\r
+       glColorPointerEXT\r
+       glColorSubTableEXT\r
+       glColorTableEXT\r
+       glCopyPixels\r
+       glCopyTexImage1D\r
+       glCopyTexImage2D\r
+       glCopyTexSubImage1D\r
+       glCopyTexSubImage2D\r
+       glCopyTexSubImage3DEXT\r
+       glCullFace\r
+       glDeleteLists\r
+       glDeleteTextures\r
+       glDeleteTexturesEXT\r
+       glDepthFunc\r
+       glDepthMask\r
+       glDepthRange\r
+       glDisable\r
+       glDisableClientState\r
+       glDrawArrays\r
+       glDrawArraysEXT\r
+       glDrawBuffer\r
+       glDrawElements\r
+       glDrawPixels\r
+       glEdgeFlag\r
+       glEdgeFlagPointer\r
+       glEdgeFlagPointerEXT\r
+       glEdgeFlagv\r
+       glEnable\r
+       glEnableClientState\r
+       glEnd\r
+       glEndList\r
+       glEvalCoord1d\r
+       glEvalCoord1dv\r
+       glEvalCoord1f\r
+       glEvalCoord1fv\r
+       glEvalCoord2d\r
+       glEvalCoord2dv\r
+       glEvalCoord2f\r
+       glEvalCoord2fv\r
+       glEvalMesh1\r
+       glEvalMesh2\r
+       glEvalPoint1\r
+       glEvalPoint2\r
+       glFeedbackBuffer\r
+       glFinish\r
+       glFlush\r
+       glFogf\r
+       glFogfv\r
+       glFogi\r
+       glFogiv\r
+       glFrontFace\r
+       glFrustum\r
+       glGenLists\r
+       glGenTextures\r
+       glGenTexturesEXT\r
+       glGetBooleanv\r
+       glGetClipPlane\r
+       glGetColorTableEXT\r
+       glGetColorTableParameterfvEXT\r
+       glGetColorTableParameterivEXT\r
+       glGetDoublev\r
+       glGetError\r
+       glGetFloatv\r
+       glGetIntegerv\r
+       glGetLightfv\r
+       glGetLightiv\r
+       glGetMapdv\r
+       glGetMapfv\r
+       glGetMapiv\r
+       glGetMaterialfv\r
+       glGetMaterialiv\r
+       glGetPixelMapfv\r
+       glGetPixelMapuiv\r
+       glGetPixelMapusv\r
+       glGetPointerv\r
+       glGetPointervEXT\r
+       glGetPolygonStipple\r
+       glGetString\r
+       glGetTexEnvfv\r
+       glGetTexEnviv\r
+       glGetTexGendv\r
+       glGetTexGenfv\r
+       glGetTexGeniv\r
+       glGetTexImage\r
+       glGetTexLevelParameterfv\r
+       glGetTexLevelParameteriv\r
+       glGetTexParameterfv\r
+       glGetTexParameteriv\r
+       glHint\r
+       glIndexd\r
+       glIndexdv\r
+       glIndexf\r
+       glIndexfv\r
+       glIndexi\r
+       glIndexiv\r
+       glIndexMask\r
+       glIndexPointer\r
+       glIndexPointerEXT\r
+       glIndexs\r
+       glIndexsv\r
+       glIndexub\r
+       glIndexubv\r
+       glInitNames\r
+       glInterleavedArrays\r
+       glIsEnabled\r
+       glIsList\r
+       glIsTexture\r
+       glIsTextureEXT\r
+       glLightf\r
+       glLightfv\r
+       glLighti\r
+       glLightiv\r
+       glLightModelf\r
+       glLightModelfv\r
+       glLightModeli\r
+       glLightModeliv\r
+       glLineStipple\r
+       glLineWidth\r
+       glListBase\r
+       glLoadIdentity\r
+       glLoadMatrixd\r
+       glLoadMatrixf\r
+       glLoadName\r
+       glLogicOp\r
+       glMap1d\r
+       glMap1f\r
+       glMap2d\r
+       glMap2f\r
+       glMapGrid1d\r
+       glMapGrid1f\r
+       glMapGrid2d\r
+       glMapGrid2f\r
+       glMaterialf\r
+       glMaterialfv\r
+       glMateriali\r
+       glMaterialiv\r
+       glMatrixMode\r
+       glMultMatrixd\r
+       glMultMatrixf\r
+       glNewList\r
+       glNormal3b\r
+       glNormal3bv\r
+       glNormal3d\r
+       glNormal3dv\r
+       glNormal3f\r
+       glNormal3fv\r
+       glNormal3i\r
+       glNormal3iv\r
+       glNormal3s\r
+       glNormal3sv\r
+       glNormalPointer\r
+       glNormalPointerEXT\r
+       glOrtho\r
+       glPassThrough\r
+       glPixelMapfv\r
+       glPixelMapuiv\r
+       glPixelMapusv\r
+       glPixelStoref\r
+       glPixelStorei\r
+       glPixelTransferf\r
+       glPixelTransferi\r
+       glPixelZoom\r
+       glPointParameterfEXT\r
+       glPointParameterfvEXT\r
+       glPointSize\r
+       glPolygonMode\r
+       glPolygonOffset\r
+       glPolygonOffsetEXT\r
+       glPolygonStipple\r
+       glPopAttrib\r
+       glPopClientAttrib\r
+       glPopMatrix\r
+       glPopName\r
+       glPrioritizeTextures\r
+       glPrioritizeTexturesEXT\r
+       glPushAttrib\r
+       glPushClientAttrib\r
+       glPushMatrix\r
+       glPushName\r
+       glRasterPos2d\r
+       glRasterPos2dv\r
+       glRasterPos2f\r
+       glRasterPos2fv\r
+       glRasterPos2i\r
+       glRasterPos2iv\r
+       glRasterPos2s\r
+       glRasterPos2sv\r
+       glRasterPos3d\r
+       glRasterPos3dv\r
+       glRasterPos3f\r
+       glRasterPos3fv\r
+       glRasterPos3i\r
+       glRasterPos3iv\r
+       glRasterPos3s\r
+       glRasterPos3sv\r
+       glRasterPos4d\r
+       glRasterPos4dv\r
+       glRasterPos4f\r
+       glRasterPos4fv\r
+       glRasterPos4i\r
+       glRasterPos4iv\r
+       glRasterPos4s\r
+       glRasterPos4sv\r
+       glReadBuffer\r
+       glReadPixels\r
+       glRectd\r
+       glRectdv\r
+       glRectf\r
+       glRectfv\r
+       glRecti\r
+       glRectiv\r
+       glRects\r
+       glRectsv\r
+       glRenderMode\r
+       glResizeBuffersMESA\r
+       glRotated\r
+       glRotatef\r
+       glScaled\r
+       glScalef\r
+       glScissor\r
+       glSelectBuffer\r
+       glShadeModel\r
+       glStencilFunc\r
+       glStencilMask\r
+       glStencilOp\r
+       glTexCoord1d\r
+       glTexCoord1dv\r
+       glTexCoord1f\r
+       glTexCoord1fv\r
+       glTexCoord1i\r
+       glTexCoord1iv\r
+       glTexCoord1s\r
+       glTexCoord1sv\r
+       glTexCoord2d\r
+       glTexCoord2dv\r
+       glTexCoord2f\r
+       glTexCoord2fv\r
+       glTexCoord2i\r
+       glTexCoord2iv\r
+       glTexCoord2s\r
+       glTexCoord2sv\r
+       glTexCoord3d\r
+       glTexCoord3dv\r
+       glTexCoord3f\r
+       glTexCoord3fv\r
+       glTexCoord3i\r
+       glTexCoord3iv\r
+       glTexCoord3s\r
+       glTexCoord3sv\r
+       glTexCoord4d\r
+       glTexCoord4dv\r
+       glTexCoord4f\r
+       glTexCoord4fv\r
+       glTexCoord4i\r
+       glTexCoord4iv\r
+       glTexCoord4s\r
+       glTexCoord4sv\r
+       glTexCoordPointer\r
+       glTexCoordPointerEXT\r
+       glTexEnvf\r
+       glTexEnvfv\r
+       glTexEnvi\r
+       glTexEnviv\r
+       glTexGend\r
+       glTexGendv\r
+       glTexGenf\r
+       glTexGenfv\r
+       glTexGeni\r
+       glTexGeniv\r
+       glTexImage1D\r
+       glTexImage2D\r
+       glTexImage3DEXT\r
+       glTexParameterf\r
+       glTexParameterfv\r
+       glTexParameteri\r
+       glTexParameteriv\r
+       glTexSubImage1D\r
+       glTexSubImage2D\r
+       glTexSubImage3DEXT\r
+       glTranslated\r
+       glTranslatef\r
+       glVertex2d\r
+       glVertex2dv\r
+       glVertex2f\r
+       glVertex2fv\r
+       glVertex2i\r
+       glVertex2iv\r
+       glVertex2s\r
+       glVertex2sv\r
+       glVertex3d\r
+       glVertex3dv\r
+       glVertex3f\r
+       glVertex3fv\r
+       glVertex3i\r
+       glVertex3iv\r
+       glVertex3s\r
+       glVertex3sv\r
+       glVertex4d\r
+       glVertex4dv\r
+       glVertex4f\r
+       glVertex4fv\r
+       glVertex4i\r
+       glVertex4iv\r
+       glVertex4s\r
+       glVertex4sv\r
+       glVertexPointer\r
+       glVertexPointerEXT\r
+       glViewport\r
+       glWindowPos2dMESA\r
+       glWindowPos2dvMESA\r
+       glWindowPos2fMESA\r
+       glWindowPos2fvMESA\r
+       glWindowPos2iMESA\r
+       glWindowPos2ivMESA\r
+       glWindowPos2sMESA\r
+       glWindowPos2svMESA\r
+       glWindowPos3dMESA\r
+       glWindowPos3dvMESA\r
+       glWindowPos3fMESA\r
+       glWindowPos3fvMESA\r
+       glWindowPos3iMESA\r
+       glWindowPos3ivMESA\r
+       glWindowPos3sMESA\r
+       glWindowPos3svMESA\r
+       glWindowPos4dMESA\r
+       glWindowPos4dvMESA\r
+       glWindowPos4fMESA\r
+       glWindowPos4fvMESA\r
+       glWindowPos4iMESA\r
+       glWindowPos4ivMESA\r
+       glWindowPos4sMESA\r
+       glWindowPos4svMESA\r
+       _swsetup_Wakeup\r
+       _swsetup_CreateContext\r
+       _tnl_CreateContext\r
+       _ac_CreateContext\r
+       _swrast_CreateContext\r
+       _mesa_free_context_data\r
+       _mesa_create_framebuffer\r
+       _mesa_enable_1_3_extensions\r
+       _mesa_enable_sw_extensions\r
+       _mesa_destroy_visual\r
+       _mesa_initialize_context\r
+       _mesa_create_visual\r
+       _mesa_destroy_framebuffer\r
+       _swrast_DestroyContext\r
+       _ac_DestroyContext\r
+       _tnl_DestroyContext\r
+       _swsetup_DestroyContext\r
+       _mesa_Viewport\r
+       _mesa_make_current\r
+       _mesa_get_current_context\r
+       _mesa_error\r
+       _swrast_choose_triangle\r
+       _mesa_zbuffer_address\r
+       _swrast_choose_line\r
+       _tnl_InvalidateState\r
+       _ac_InvalidateState\r
+       _swsetup_InvalidateState\r
+       _swrast_InvalidateState\r
+       _tnl_run_pipeline\r
+       _swrast_CopyConvolutionFilter2D\r
+       _swrast_CopyConvolutionFilter1D\r
+       _swrast_CopyColorSubTable\r
+       _swrast_CopyColorTable\r
+       _swrast_copy_texsubimage3d\r
+       _swrast_copy_texsubimage2d\r
+       _swrast_copy_texsubimage1d\r
+       _swrast_copy_teximage2d\r
+       _swrast_copy_teximage1d\r
+       _mesa_test_proxy_teximage\r
+       _mesa_store_texsubimage3d\r
+       _mesa_store_texsubimage2d\r
+       _mesa_store_texsubimage1d\r
+       _mesa_store_teximage3d\r
+       _mesa_store_teximage2d\r
+       _mesa_store_teximage1d\r
+       _mesa_choose_tex_format\r
+       _mesa_base_compressed_texformat\r
+       _mesa_compressed_texture_size\r
+       _mesa_get_compressed_teximage\r
+       _swrast_ReadPixels\r
+       _swrast_DrawPixels\r
+       _swrast_CopyPixels\r
+       _swrast_Bitmap\r
+       _swrast_Accum\r
+       _swrast_alloc_buffers\r
+       _swrast_GetDeviceDriverReference\r
+       _swrast_Clear\r
+       wglCopyContext\r
+       wglCreateContext\r
+       wglDeleteContext\r
+       wglCreateLayerContext\r
+       wglGetCurrentContext\r
+       wglGetCurrentDC\r
+       wglMakeCurrent\r
+       wglShareLists\r
+       wglUseFontBitmapsA\r
+       wglUseFontBitmapsW\r
+       wglUseFontOutlinesA\r
+       wglUseFontOutlinesW\r
+       wglDescribeLayerPlane\r
+       wglSetLayerPaletteEntries\r
+       wglGetLayerPaletteEntries\r
+       wglRealizeLayerPalette\r
+       wglSwapLayerBuffers\r
+       wglChoosePixelFormat\r
+       wglDescribePixelFormat\r
+       wglGetProcAddress\r
+       wglGetPixelFormat\r
+       wglSetPixelFormat\r
+       wglSwapBuffers\r