   #define WGL_SAMPLE_BUFFERS_ARB              0x2041
   #define WGL_SAMPLES_ARB                     0x2042

   #define  WGL_WGLEXT_VERSION   1
   #define  WGL_FRONT_COLOR_BUFFER_BIT_ARB   0x00000001
   #define  WGL_BACK_COLOR_BUFFER_BIT_ARB   0x00000002
   #define  WGL_DEPTH_BUFFER_BIT_ARB   0x00000004
   #define  WGL_STENCIL_BUFFER_BIT_ARB   0x00000008
   #define  WGL_NUMBER_PIXEL_FORMATS_ARB   0x2000
   #define  WGL_DRAW_TO_WINDOW_ARB   0x2001
   #define  WGL_DRAW_TO_BITMAP_ARB   0x2002
   #define  WGL_ACCELERATION_ARB   0x2003
   #define  WGL_NEED_PALETTE_ARB   0x2004
   #define  WGL_NEED_SYSTEM_PALETTE_ARB   0x2005
   #define  WGL_SWAP_LAYER_BUFFERS_ARB   0x2006
   #define  WGL_SWAP_METHOD_ARB   0x2007
   #define  WGL_NUMBER_OVERLAYS_ARB   0x2008
   #define  WGL_NUMBER_UNDERLAYS_ARB   0x2009
   #define  WGL_TRANSPARENT_ARB   0x200A
   #define  WGL_TRANSPARENT_RED_VALUE_ARB   0x2037
   #define  WGL_TRANSPARENT_GREEN_VALUE_ARB   0x2038
   #define  WGL_TRANSPARENT_BLUE_VALUE_ARB   0x2039
   #define  WGL_TRANSPARENT_ALPHA_VALUE_ARB   0x203A
   #define  WGL_TRANSPARENT_INDEX_VALUE_ARB   0x203B
   #define  WGL_SHARE_DEPTH_ARB   0x200C
   #define  WGL_SHARE_STENCIL_ARB   0x200D
   #define  WGL_SHARE_ACCUM_ARB   0x200E
   #define  WGL_SUPPORT_GDI_ARB   0x200F
   #define  WGL_SUPPORT_OPENGL_ARB   0x2010
   #define  WGL_DOUBLE_BUFFER_ARB   0x2011
   #define  WGL_STEREO_ARB   0x2012
   #define  WGL_PIXEL_TYPE_ARB   0x2013
   #define  WGL_COLOR_BITS_ARB   0x2014
   #define  WGL_RED_BITS_ARB   0x2015
   #define  WGL_RED_SHIFT_ARB   0x2016
   #define  WGL_GREEN_BITS_ARB   0x2017
   #define  WGL_GREEN_SHIFT_ARB   0x2018
   #define  WGL_BLUE_BITS_ARB   0x2019
   #define  WGL_BLUE_SHIFT_ARB   0x201A
   #define  WGL_ALPHA_BITS_ARB   0x201B
   #define  WGL_ALPHA_SHIFT_ARB   0x201C
   #define  WGL_ACCUM_BITS_ARB   0x201D
   #define  WGL_ACCUM_RED_BITS_ARB   0x201E
   #define  WGL_ACCUM_GREEN_BITS_ARB   0x201F
   #define  WGL_ACCUM_BLUE_BITS_ARB   0x2020
   #define  WGL_ACCUM_ALPHA_BITS_ARB   0x2021
   #define  WGL_DEPTH_BITS_ARB   0x2022
   #define  WGL_STENCIL_BITS_ARB   0x2023
   #define  WGL_AUX_BUFFERS_ARB   0x2024
   #define  WGL_NO_ACCELERATION_ARB   0x2025
   #define  WGL_GENERIC_ACCELERATION_ARB   0x2026
   #define  WGL_FULL_ACCELERATION_ARB   0x2027
   #define  WGL_SWAP_EXCHANGE_ARB   0x2028
   #define  WGL_SWAP_COPY_ARB   0x2029
   #define  WGL_SWAP_UNDEFINED_ARB   0x202A
   #define  WGL_TYPE_RGBA_ARB   0x202B
   #define  WGL_TYPE_COLORINDEX_ARB   0x202C
   #define  ERROR_INVALID_PIXEL_TYPE_ARB   0x2043
   #define  ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB   0x2054
   #define  WGL_DRAW_TO_PBUFFER_ARB   0x202D
   #define  WGL_MAX_PBUFFER_PIXELS_ARB   0x202E
   #define  WGL_MAX_PBUFFER_WIDTH_ARB   0x202F
   #define  WGL_MAX_PBUFFER_HEIGHT_ARB   0x2030
   #define  WGL_PBUFFER_LARGEST_ARB   0x2033
   #define  WGL_PBUFFER_WIDTH_ARB   0x2034
   #define  WGL_PBUFFER_HEIGHT_ARB   0x2035
   #define  WGL_PBUFFER_LOST_ARB   0x2036
   #define  ERROR_INVALID_PIXEL_TYPE_EXT   0x2043
   #define  WGL_NUMBER_PIXEL_FORMATS_EXT   0x2000
   #define  WGL_DRAW_TO_WINDOW_EXT   0x2001
   #define  WGL_DRAW_TO_BITMAP_EXT   0x2002
   #define  WGL_ACCELERATION_EXT   0x2003
   #define  WGL_NEED_PALETTE_EXT   0x2004
   #define  WGL_NEED_SYSTEM_PALETTE_EXT   0x2005
   #define  WGL_SWAP_LAYER_BUFFERS_EXT   0x2006
   #define  WGL_SWAP_METHOD_EXT   0x2007
   #define  WGL_NUMBER_OVERLAYS_EXT   0x2008
   #define  WGL_NUMBER_UNDERLAYS_EXT   0x2009
   #define  WGL_TRANSPARENT_EXT   0x200A
   #define  WGL_TRANSPARENT_VALUE_EXT   0x200B
   #define  WGL_SHARE_DEPTH_EXT   0x200C
   #define  WGL_SHARE_STENCIL_EXT   0x200D
   #define  WGL_SHARE_ACCUM_EXT   0x200E
   #define  WGL_SUPPORT_GDI_EXT   0x200F
   #define  WGL_SUPPORT_OPENGL_EXT   0x2010
   #define  WGL_DOUBLE_BUFFER_EXT   0x2011
   #define  WGL_STEREO_EXT   0x2012
   #define  WGL_PIXEL_TYPE_EXT   0x2013
   #define  WGL_COLOR_BITS_EXT   0x2014
   #define  WGL_RED_BITS_EXT   0x2015
   #define  WGL_RED_SHIFT_EXT   0x2016
   #define  WGL_GREEN_BITS_EXT   0x2017
   #define  WGL_GREEN_SHIFT_EXT   0x2018
   #define  WGL_BLUE_BITS_EXT   0x2019
   #define  WGL_BLUE_SHIFT_EXT   0x201A
   #define  WGL_ALPHA_BITS_EXT   0x201B
   #define  WGL_ALPHA_SHIFT_EXT   0x201C
   #define  WGL_ACCUM_BITS_EXT   0x201D
   #define  WGL_ACCUM_RED_BITS_EXT   0x201E
   #define  WGL_ACCUM_GREEN_BITS_EXT   0x201F
   #define  WGL_ACCUM_BLUE_BITS_EXT   0x2020
   #define  WGL_ACCUM_ALPHA_BITS_EXT   0x2021
   #define  WGL_DEPTH_BITS_EXT   0x2022
   #define  WGL_STENCIL_BITS_EXT   0x2023
   #define  WGL_AUX_BUFFERS_EXT   0x2024
   #define  WGL_NO_ACCELERATION_EXT   0x2025
   #define  WGL_GENERIC_ACCELERATION_EXT   0x2026
   #define  WGL_FULL_ACCELERATION_EXT   0x2027
   #define  WGL_SWAP_EXCHANGE_EXT   0x2028
   #define  WGL_SWAP_COPY_EXT   0x2029
   #define  WGL_SWAP_UNDEFINED_EXT   0x202A
   #define  WGL_TYPE_RGBA_EXT   0x202B
   #define  WGL_TYPE_COLORINDEX_EXT   0x202C
   #define  WGL_DRAW_TO_PBUFFER_EXT   0x202D
   #define  WGL_MAX_PBUFFER_PIXELS_EXT   0x202E
   #define  WGL_MAX_PBUFFER_WIDTH_EXT   0x202F
   #define  WGL_MAX_PBUFFER_HEIGHT_EXT   0x2030
   #define  WGL_OPTIMAL_PBUFFER_WIDTH_EXT   0x2031
   #define  WGL_OPTIMAL_PBUFFER_HEIGHT_EXT   0x2032
   #define  WGL_PBUFFER_LARGEST_EXT   0x2033
   #define  WGL_PBUFFER_WIDTH_EXT   0x2034
   #define  WGL_PBUFFER_HEIGHT_EXT   0x2035
   #define  WGL_DEPTH_FLOAT_EXT   0x2040
   #define  WGL_SAMPLE_BUFFERS_3DFX   0x2060
   #define  WGL_SAMPLES_3DFX   0x2061
   #define  WGL_SAMPLE_BUFFERS_EXT   0x2041
   #define  WGL_SAMPLES_EXT   0x2042
   #define  WGL_GENLOCK_SOURCE_MULTIVIEW_I3D   0x2044
   #define  WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D   0x2045
   #define  WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D   0x2046
   #define  WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D   0x2047
   #define  WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D   0x2048
   #define  WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D   0x2049
   #define  WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D   0x204A
   #define  WGL_GENLOCK_SOURCE_EDGE_RISING_I3D   0x204B
   #define  WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D   0x204C
   #define  WGL_GAMMA_TABLE_SIZE_I3D   0x204E
   #define  WGL_GAMMA_EXCLUDE_DESKTOP_I3D   0x204F
   #define  WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D   0x2050
   #define  WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D   0x2051
   #define  WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D   0x2052
   #define  WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D   0x2053
   #define  WGL_ARB_buffer_region   1
   #define  WGL_ARB_extensions_string   1
   #define  WGL_ARB_pixel_format   1
   #define  WGL_ARB_make_current_read   1
   #define  WGL_ARB_pbuffer   1
   #define  WGL_EXT_display_color_table   1
   #define  WGL_EXT_extensions_string   1
   #define  WGL_EXT_make_current_read   1
   #define  WGL_EXT_pbuffer   1
   #define  WGL_EXT_pixel_format   1
   #define  WGL_EXT_swap_control   1
   #define  WGL_WGL_EXT_depth_float   1
   #define  WGL_WGL_3DFX_multisample   1
   #define  WGL_WGL_EXT_multisample   1
   #define  WGL_NV_allocate_memory   1

#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092

#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001

#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
// #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
#define WGL_CONTEXT_FLAGS_ARB 0x2094

#define WGL_CONTEXT_PROFILE_MASK_ARB   0x9126

#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002

typedef int (APIENTRY * PFNWGLCHOOSEPIXELFORMATARBPROC) ();
typedef void * (APIENTRY * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
typedef HDC (APIENTRY * PFNWGLGETPBUFFERDCARBPROC) (void * hPbuffer);
typedef int (APIENTRY * PFNWGLRELEASEPBUFFERDCARBPROC) (void * hPbuffer, HDC hDC);
typedef BOOL (APIENTRY * PFNWGLDESTROYPBUFFERARBPROC) (void * hPbuffer);
typedef BOOL (APIENTRY * PFNWGLQUERYPBUFFERARBPROC) (void * hPbuffer, int iAttribute, int *piValue);
typedef const char * (APIENTRY * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
typedef BOOL (APIENTRY * PFNWGLBINDTEXIMAGEARBPROC) (void * hPbuffer, int iBuffer);
typedef BOOL (APIENTRY * PFNWGLRELEASETEXIMAGEARBPROC) (void * hPbuffer, int iBuffer);
typedef BOOL (APIENTRY * PFNWGLSWAPINTERVALEXTPROC) (int interval);
typedef int (APIENTRY * PFNWGLGETSWAPINTERVALEXTPROC) (void);
typedef HGLRC (APIENTRY * PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC, HGLRC, const int*);

typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);

static PFNGLLOCKARRAYSEXTPROC glLockArraysEXT = null;
static PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXT = null;

static PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB = null;
static PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB = null;
static PFNWGLCREATEPBUFFERARBPROC wglCreatePbufferARB = null;
static PFNWGLGETPBUFFERDCARBPROC wglGetPbufferDCARB = null;
static PFNWGLQUERYPBUFFERARBPROC wglQueryPbufferARB = null;
static PFNWGLDESTROYPBUFFERARBPROC wglDestroyPbufferARB = null;
static PFNWGLRELEASEPBUFFERDCARBPROC wglReleasePbufferDCARB = null;
static PFNWGLBINDTEXIMAGEARBPROC wglBindTexImageARB = null;
static PFNWGLRELEASETEXIMAGEARBPROC wglReleaseTexImageARB = null;
static PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = null;
static PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = null;

#ifdef WGL_WGLEXT_PROTOTYPES
extern BOOL WINAPI wglSwapIntervalEXT (int);
extern int WINAPI wglGetSwapIntervalEXT (void);
#endif /* WGL_WGLEXT_PROTOTYPES */
