1 /// WinGL bindings for D. Generated automatically by gldgen.
2 /// See https://github.com/rtbo/gldgen
3 module gfx.bindings.opengl.wgl;
4 
5 version(Windows):
6 import core.stdc.config : c_ulong;
7 import core.sys.windows.windef;
8 import core.sys.windows.wingdi;
9 import gfx.bindings.opengl.loader : SymbolLoader;
10 import gfx.bindings.opengl.gl;
11 
12 // Base Types
13 
14 // Types for WGL_NV_gpu_affinity
15 alias PGPU_DEVICE = _GPU_DEVICE*;
16 
17 // Handle declarations
18 alias HPBUFFERARB = void*;
19 alias HPBUFFEREXT = void*;
20 alias HGPUNV = void*;
21 alias HVIDEOOUTPUTDEVICENV = void*;
22 alias HVIDEOINPUTDEVICENV = void*;
23 alias HPVIDEODEV = void*;
24 
25 // Struct definitions
26 // Structs for WGL_NV_gpu_affinity
27 struct _GPU_DEVICE {
28     DWORD cb;
29     CHAR[32] DeviceName;
30     CHAR[128] DeviceString;
31     DWORD Flags;
32     RECT rcVirtualScreen;
33 }
34 
35 
36 // Constants for WGL_VERSION_1_0
37 enum WGL_FONT_LINES      = 0;
38 enum WGL_FONT_POLYGONS   = 1;
39 enum WGL_SWAP_MAIN_PLANE = 0x00000001;
40 enum WGL_SWAP_OVERLAY1   = 0x00000002;
41 enum WGL_SWAP_OVERLAY2   = 0x00000004;
42 enum WGL_SWAP_OVERLAY3   = 0x00000008;
43 enum WGL_SWAP_OVERLAY4   = 0x00000010;
44 enum WGL_SWAP_OVERLAY5   = 0x00000020;
45 enum WGL_SWAP_OVERLAY6   = 0x00000040;
46 enum WGL_SWAP_OVERLAY7   = 0x00000080;
47 enum WGL_SWAP_OVERLAY8   = 0x00000100;
48 enum WGL_SWAP_OVERLAY9   = 0x00000200;
49 enum WGL_SWAP_OVERLAY10  = 0x00000400;
50 enum WGL_SWAP_OVERLAY11  = 0x00000800;
51 enum WGL_SWAP_OVERLAY12  = 0x00001000;
52 enum WGL_SWAP_OVERLAY13  = 0x00002000;
53 enum WGL_SWAP_OVERLAY14  = 0x00004000;
54 enum WGL_SWAP_OVERLAY15  = 0x00008000;
55 enum WGL_SWAP_UNDERLAY1  = 0x00010000;
56 enum WGL_SWAP_UNDERLAY2  = 0x00020000;
57 enum WGL_SWAP_UNDERLAY3  = 0x00040000;
58 enum WGL_SWAP_UNDERLAY4  = 0x00080000;
59 enum WGL_SWAP_UNDERLAY5  = 0x00100000;
60 enum WGL_SWAP_UNDERLAY6  = 0x00200000;
61 enum WGL_SWAP_UNDERLAY7  = 0x00400000;
62 enum WGL_SWAP_UNDERLAY8  = 0x00800000;
63 enum WGL_SWAP_UNDERLAY9  = 0x01000000;
64 enum WGL_SWAP_UNDERLAY10 = 0x02000000;
65 enum WGL_SWAP_UNDERLAY11 = 0x04000000;
66 enum WGL_SWAP_UNDERLAY12 = 0x08000000;
67 enum WGL_SWAP_UNDERLAY13 = 0x10000000;
68 enum WGL_SWAP_UNDERLAY14 = 0x20000000;
69 enum WGL_SWAP_UNDERLAY15 = 0x40000000;
70 
71 // Constants for WGL_ARB_buffer_region
72 enum WGL_FRONT_COLOR_BUFFER_BIT_ARB = 0x00000001;
73 enum WGL_BACK_COLOR_BUFFER_BIT_ARB  = 0x00000002;
74 enum WGL_DEPTH_BUFFER_BIT_ARB       = 0x00000004;
75 enum WGL_STENCIL_BUFFER_BIT_ARB     = 0x00000008;
76 
77 // Constants for WGL_ARB_context_flush_control
78 enum WGL_CONTEXT_RELEASE_BEHAVIOR_ARB       = 0x2097;
79 enum WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB  = 0;
80 enum WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB = 0x2098;
81 
82 // Constants for WGL_ARB_create_context
83 enum WGL_CONTEXT_DEBUG_BIT_ARB              = 0x00000001;
84 enum WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x00000002;
85 enum WGL_CONTEXT_MAJOR_VERSION_ARB          = 0x2091;
86 enum WGL_CONTEXT_MINOR_VERSION_ARB          = 0x2092;
87 enum WGL_CONTEXT_LAYER_PLANE_ARB            = 0x2093;
88 enum WGL_CONTEXT_FLAGS_ARB                  = 0x2094;
89 enum ERROR_INVALID_VERSION_ARB              = 0x2095;
90 
91 // Constants for WGL_ARB_create_context_no_error
92 enum WGL_CONTEXT_OPENGL_NO_ERROR_ARB = 0x31B3;
93 
94 // Constants for WGL_ARB_create_context_profile
95 enum WGL_CONTEXT_PROFILE_MASK_ARB              = 0x9126;
96 enum WGL_CONTEXT_CORE_PROFILE_BIT_ARB          = 0x00000001;
97 enum WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002;
98 enum ERROR_INVALID_PROFILE_ARB                 = 0x2096;
99 
100 // Constants for WGL_ARB_create_context_robustness
101 enum WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB           = 0x00000004;
102 enum WGL_LOSE_CONTEXT_ON_RESET_ARB               = 0x8252;
103 enum WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256;
104 enum WGL_NO_RESET_NOTIFICATION_ARB               = 0x8261;
105 
106 // Constants for WGL_ARB_framebuffer_sRGB
107 enum WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB = 0x20A9;
108 
109 // Constants for WGL_ARB_make_current_read
110 enum ERROR_INVALID_PIXEL_TYPE_ARB           = 0x2043;
111 enum ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = 0x2054;
112 
113 // Constants for WGL_ARB_multisample
114 enum WGL_SAMPLE_BUFFERS_ARB = 0x2041;
115 enum WGL_SAMPLES_ARB        = 0x2042;
116 
117 // Constants for WGL_ARB_pbuffer
118 enum WGL_DRAW_TO_PBUFFER_ARB    = 0x202D;
119 enum WGL_MAX_PBUFFER_PIXELS_ARB = 0x202E;
120 enum WGL_MAX_PBUFFER_WIDTH_ARB  = 0x202F;
121 enum WGL_MAX_PBUFFER_HEIGHT_ARB = 0x2030;
122 enum WGL_PBUFFER_LARGEST_ARB    = 0x2033;
123 enum WGL_PBUFFER_WIDTH_ARB      = 0x2034;
124 enum WGL_PBUFFER_HEIGHT_ARB     = 0x2035;
125 enum WGL_PBUFFER_LOST_ARB       = 0x2036;
126 
127 // Constants for WGL_ARB_pixel_format
128 enum WGL_NUMBER_PIXEL_FORMATS_ARB    = 0x2000;
129 enum WGL_DRAW_TO_WINDOW_ARB          = 0x2001;
130 enum WGL_DRAW_TO_BITMAP_ARB          = 0x2002;
131 enum WGL_ACCELERATION_ARB            = 0x2003;
132 enum WGL_NEED_PALETTE_ARB            = 0x2004;
133 enum WGL_NEED_SYSTEM_PALETTE_ARB     = 0x2005;
134 enum WGL_SWAP_LAYER_BUFFERS_ARB      = 0x2006;
135 enum WGL_SWAP_METHOD_ARB             = 0x2007;
136 enum WGL_NUMBER_OVERLAYS_ARB         = 0x2008;
137 enum WGL_NUMBER_UNDERLAYS_ARB        = 0x2009;
138 enum WGL_TRANSPARENT_ARB             = 0x200A;
139 enum WGL_TRANSPARENT_RED_VALUE_ARB   = 0x2037;
140 enum WGL_TRANSPARENT_GREEN_VALUE_ARB = 0x2038;
141 enum WGL_TRANSPARENT_BLUE_VALUE_ARB  = 0x2039;
142 enum WGL_TRANSPARENT_ALPHA_VALUE_ARB = 0x203A;
143 enum WGL_TRANSPARENT_INDEX_VALUE_ARB = 0x203B;
144 enum WGL_SHARE_DEPTH_ARB             = 0x200C;
145 enum WGL_SHARE_STENCIL_ARB           = 0x200D;
146 enum WGL_SHARE_ACCUM_ARB             = 0x200E;
147 enum WGL_SUPPORT_GDI_ARB             = 0x200F;
148 enum WGL_SUPPORT_OPENGL_ARB          = 0x2010;
149 enum WGL_DOUBLE_BUFFER_ARB           = 0x2011;
150 enum WGL_STEREO_ARB                  = 0x2012;
151 enum WGL_PIXEL_TYPE_ARB              = 0x2013;
152 enum WGL_COLOR_BITS_ARB              = 0x2014;
153 enum WGL_RED_BITS_ARB                = 0x2015;
154 enum WGL_RED_SHIFT_ARB               = 0x2016;
155 enum WGL_GREEN_BITS_ARB              = 0x2017;
156 enum WGL_GREEN_SHIFT_ARB             = 0x2018;
157 enum WGL_BLUE_BITS_ARB               = 0x2019;
158 enum WGL_BLUE_SHIFT_ARB              = 0x201A;
159 enum WGL_ALPHA_BITS_ARB              = 0x201B;
160 enum WGL_ALPHA_SHIFT_ARB             = 0x201C;
161 enum WGL_ACCUM_BITS_ARB              = 0x201D;
162 enum WGL_ACCUM_RED_BITS_ARB          = 0x201E;
163 enum WGL_ACCUM_GREEN_BITS_ARB        = 0x201F;
164 enum WGL_ACCUM_BLUE_BITS_ARB         = 0x2020;
165 enum WGL_ACCUM_ALPHA_BITS_ARB        = 0x2021;
166 enum WGL_DEPTH_BITS_ARB              = 0x2022;
167 enum WGL_STENCIL_BITS_ARB            = 0x2023;
168 enum WGL_AUX_BUFFERS_ARB             = 0x2024;
169 enum WGL_NO_ACCELERATION_ARB         = 0x2025;
170 enum WGL_GENERIC_ACCELERATION_ARB    = 0x2026;
171 enum WGL_FULL_ACCELERATION_ARB       = 0x2027;
172 enum WGL_SWAP_EXCHANGE_ARB           = 0x2028;
173 enum WGL_SWAP_COPY_ARB               = 0x2029;
174 enum WGL_SWAP_UNDEFINED_ARB          = 0x202A;
175 enum WGL_TYPE_RGBA_ARB               = 0x202B;
176 enum WGL_TYPE_COLORINDEX_ARB         = 0x202C;
177 
178 // Constants for WGL_ARB_pixel_format_float
179 enum WGL_TYPE_RGBA_FLOAT_ARB = 0x21A0;
180 
181 // Constants for WGL_ARB_render_texture
182 enum WGL_BIND_TO_TEXTURE_RGB_ARB         = 0x2070;
183 enum WGL_BIND_TO_TEXTURE_RGBA_ARB        = 0x2071;
184 enum WGL_TEXTURE_FORMAT_ARB              = 0x2072;
185 enum WGL_TEXTURE_TARGET_ARB              = 0x2073;
186 enum WGL_MIPMAP_TEXTURE_ARB              = 0x2074;
187 enum WGL_TEXTURE_RGB_ARB                 = 0x2075;
188 enum WGL_TEXTURE_RGBA_ARB                = 0x2076;
189 enum WGL_NO_TEXTURE_ARB                  = 0x2077;
190 enum WGL_TEXTURE_CUBE_MAP_ARB            = 0x2078;
191 enum WGL_TEXTURE_1D_ARB                  = 0x2079;
192 enum WGL_TEXTURE_2D_ARB                  = 0x207A;
193 enum WGL_MIPMAP_LEVEL_ARB                = 0x207B;
194 enum WGL_CUBE_MAP_FACE_ARB               = 0x207C;
195 enum WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x207D;
196 enum WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x207E;
197 enum WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x207F;
198 enum WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x2080;
199 enum WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x2081;
200 enum WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x2082;
201 enum WGL_FRONT_LEFT_ARB                  = 0x2083;
202 enum WGL_FRONT_RIGHT_ARB                 = 0x2084;
203 enum WGL_BACK_LEFT_ARB                   = 0x2085;
204 enum WGL_BACK_RIGHT_ARB                  = 0x2086;
205 enum WGL_AUX0_ARB                        = 0x2087;
206 enum WGL_AUX1_ARB                        = 0x2088;
207 enum WGL_AUX2_ARB                        = 0x2089;
208 enum WGL_AUX3_ARB                        = 0x208A;
209 enum WGL_AUX4_ARB                        = 0x208B;
210 enum WGL_AUX5_ARB                        = 0x208C;
211 enum WGL_AUX6_ARB                        = 0x208D;
212 enum WGL_AUX7_ARB                        = 0x208E;
213 enum WGL_AUX8_ARB                        = 0x208F;
214 enum WGL_AUX9_ARB                        = 0x2090;
215 
216 // Constants for WGL_ARB_robustness_application_isolation
217 enum WGL_CONTEXT_RESET_ISOLATION_BIT_ARB = 0x00000008;
218 
219 // Constants for WGL_3DFX_multisample
220 enum WGL_SAMPLE_BUFFERS_3DFX = 0x2060;
221 enum WGL_SAMPLES_3DFX        = 0x2061;
222 
223 // Constants for WGL_3DL_stereo_control
224 enum WGL_STEREO_EMITTER_ENABLE_3DL  = 0x2055;
225 enum WGL_STEREO_EMITTER_DISABLE_3DL = 0x2056;
226 enum WGL_STEREO_POLARITY_NORMAL_3DL = 0x2057;
227 enum WGL_STEREO_POLARITY_INVERT_3DL = 0x2058;
228 
229 // Constants for WGL_AMD_gpu_association
230 enum WGL_GPU_VENDOR_AMD                = 0x1F00;
231 enum WGL_GPU_RENDERER_STRING_AMD       = 0x1F01;
232 enum WGL_GPU_OPENGL_VERSION_STRING_AMD = 0x1F02;
233 enum WGL_GPU_FASTEST_TARGET_GPUS_AMD   = 0x21A2;
234 enum WGL_GPU_RAM_AMD                   = 0x21A3;
235 enum WGL_GPU_CLOCK_AMD                 = 0x21A4;
236 enum WGL_GPU_NUM_PIPES_AMD             = 0x21A5;
237 enum WGL_GPU_NUM_SIMD_AMD              = 0x21A6;
238 enum WGL_GPU_NUM_RB_AMD                = 0x21A7;
239 enum WGL_GPU_NUM_SPI_AMD               = 0x21A8;
240 
241 // Constants for WGL_ATI_pixel_format_float
242 enum WGL_TYPE_RGBA_FLOAT_ATI = 0x21A0;
243 
244 // Constants for WGL_ATI_render_texture_rectangle
245 enum WGL_TEXTURE_RECTANGLE_ATI = 0x21A5;
246 
247 // Constants for WGL_EXT_colorspace
248 enum WGL_COLORSPACE_EXT        = 0x309D;
249 enum WGL_COLORSPACE_SRGB_EXT   = 0x3089;
250 enum WGL_COLORSPACE_LINEAR_EXT = 0x308A;
251 
252 // Constants for WGL_EXT_create_context_es2_profile
253 enum WGL_CONTEXT_ES2_PROFILE_BIT_EXT = 0x00000004;
254 
255 // Constants for WGL_EXT_create_context_es_profile
256 enum WGL_CONTEXT_ES_PROFILE_BIT_EXT = 0x00000004;
257 
258 // Constants for WGL_EXT_depth_float
259 enum WGL_DEPTH_FLOAT_EXT = 0x2040;
260 
261 // Constants for WGL_EXT_framebuffer_sRGB
262 enum WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x20A9;
263 
264 // Constants for WGL_EXT_make_current_read
265 enum ERROR_INVALID_PIXEL_TYPE_EXT = 0x2043;
266 
267 // Constants for WGL_EXT_multisample
268 enum WGL_SAMPLE_BUFFERS_EXT = 0x2041;
269 enum WGL_SAMPLES_EXT        = 0x2042;
270 
271 // Constants for WGL_EXT_pbuffer
272 enum WGL_DRAW_TO_PBUFFER_EXT        = 0x202D;
273 enum WGL_MAX_PBUFFER_PIXELS_EXT     = 0x202E;
274 enum WGL_MAX_PBUFFER_WIDTH_EXT      = 0x202F;
275 enum WGL_MAX_PBUFFER_HEIGHT_EXT     = 0x2030;
276 enum WGL_OPTIMAL_PBUFFER_WIDTH_EXT  = 0x2031;
277 enum WGL_OPTIMAL_PBUFFER_HEIGHT_EXT = 0x2032;
278 enum WGL_PBUFFER_LARGEST_EXT        = 0x2033;
279 enum WGL_PBUFFER_WIDTH_EXT          = 0x2034;
280 enum WGL_PBUFFER_HEIGHT_EXT         = 0x2035;
281 
282 // Constants for WGL_EXT_pixel_format
283 enum WGL_NUMBER_PIXEL_FORMATS_EXT = 0x2000;
284 enum WGL_DRAW_TO_WINDOW_EXT       = 0x2001;
285 enum WGL_DRAW_TO_BITMAP_EXT       = 0x2002;
286 enum WGL_ACCELERATION_EXT         = 0x2003;
287 enum WGL_NEED_PALETTE_EXT         = 0x2004;
288 enum WGL_NEED_SYSTEM_PALETTE_EXT  = 0x2005;
289 enum WGL_SWAP_LAYER_BUFFERS_EXT   = 0x2006;
290 enum WGL_SWAP_METHOD_EXT          = 0x2007;
291 enum WGL_NUMBER_OVERLAYS_EXT      = 0x2008;
292 enum WGL_NUMBER_UNDERLAYS_EXT     = 0x2009;
293 enum WGL_TRANSPARENT_EXT          = 0x200A;
294 enum WGL_TRANSPARENT_VALUE_EXT    = 0x200B;
295 enum WGL_SHARE_DEPTH_EXT          = 0x200C;
296 enum WGL_SHARE_STENCIL_EXT        = 0x200D;
297 enum WGL_SHARE_ACCUM_EXT          = 0x200E;
298 enum WGL_SUPPORT_GDI_EXT          = 0x200F;
299 enum WGL_SUPPORT_OPENGL_EXT       = 0x2010;
300 enum WGL_DOUBLE_BUFFER_EXT        = 0x2011;
301 enum WGL_STEREO_EXT               = 0x2012;
302 enum WGL_PIXEL_TYPE_EXT           = 0x2013;
303 enum WGL_COLOR_BITS_EXT           = 0x2014;
304 enum WGL_RED_BITS_EXT             = 0x2015;
305 enum WGL_RED_SHIFT_EXT            = 0x2016;
306 enum WGL_GREEN_BITS_EXT           = 0x2017;
307 enum WGL_GREEN_SHIFT_EXT          = 0x2018;
308 enum WGL_BLUE_BITS_EXT            = 0x2019;
309 enum WGL_BLUE_SHIFT_EXT           = 0x201A;
310 enum WGL_ALPHA_BITS_EXT           = 0x201B;
311 enum WGL_ALPHA_SHIFT_EXT          = 0x201C;
312 enum WGL_ACCUM_BITS_EXT           = 0x201D;
313 enum WGL_ACCUM_RED_BITS_EXT       = 0x201E;
314 enum WGL_ACCUM_GREEN_BITS_EXT     = 0x201F;
315 enum WGL_ACCUM_BLUE_BITS_EXT      = 0x2020;
316 enum WGL_ACCUM_ALPHA_BITS_EXT     = 0x2021;
317 enum WGL_DEPTH_BITS_EXT           = 0x2022;
318 enum WGL_STENCIL_BITS_EXT         = 0x2023;
319 enum WGL_AUX_BUFFERS_EXT          = 0x2024;
320 enum WGL_NO_ACCELERATION_EXT      = 0x2025;
321 enum WGL_GENERIC_ACCELERATION_EXT = 0x2026;
322 enum WGL_FULL_ACCELERATION_EXT    = 0x2027;
323 enum WGL_SWAP_EXCHANGE_EXT        = 0x2028;
324 enum WGL_SWAP_COPY_EXT            = 0x2029;
325 enum WGL_SWAP_UNDEFINED_EXT       = 0x202A;
326 enum WGL_TYPE_RGBA_EXT            = 0x202B;
327 enum WGL_TYPE_COLORINDEX_EXT      = 0x202C;
328 
329 // Constants for WGL_EXT_pixel_format_packed_float
330 enum WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT = 0x20A8;
331 
332 // Constants for WGL_I3D_digital_video_control
333 enum WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D = 0x2050;
334 enum WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D       = 0x2051;
335 enum WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D          = 0x2052;
336 enum WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D          = 0x2053;
337 
338 // Constants for WGL_I3D_gamma
339 enum WGL_GAMMA_TABLE_SIZE_I3D      = 0x204E;
340 enum WGL_GAMMA_EXCLUDE_DESKTOP_I3D = 0x204F;
341 
342 // Constants for WGL_I3D_genlock
343 enum WGL_GENLOCK_SOURCE_MULTIVIEW_I3D      = 0x2044;
344 enum WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D  = 0x2045;
345 enum WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D = 0x2046;
346 enum WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D   = 0x2047;
347 enum WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D   = 0x2048;
348 enum WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D  = 0x2049;
349 enum WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D   = 0x204A;
350 enum WGL_GENLOCK_SOURCE_EDGE_RISING_I3D    = 0x204B;
351 enum WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D      = 0x204C;
352 
353 // Constants for WGL_I3D_image_buffer
354 enum WGL_IMAGE_BUFFER_MIN_ACCESS_I3D = 0x00000001;
355 enum WGL_IMAGE_BUFFER_LOCK_I3D       = 0x00000002;
356 
357 // Constants for WGL_NV_DX_interop
358 enum WGL_ACCESS_READ_ONLY_NV     = 0x00000000;
359 enum WGL_ACCESS_READ_WRITE_NV    = 0x00000001;
360 enum WGL_ACCESS_WRITE_DISCARD_NV = 0x00000002;
361 
362 // Constants for WGL_NV_float_buffer
363 enum WGL_FLOAT_COMPONENTS_NV                     = 0x20B0;
364 enum WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV    = 0x20B1;
365 enum WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV   = 0x20B2;
366 enum WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV  = 0x20B3;
367 enum WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV = 0x20B4;
368 enum WGL_TEXTURE_FLOAT_R_NV                      = 0x20B5;
369 enum WGL_TEXTURE_FLOAT_RG_NV                     = 0x20B6;
370 enum WGL_TEXTURE_FLOAT_RGB_NV                    = 0x20B7;
371 enum WGL_TEXTURE_FLOAT_RGBA_NV                   = 0x20B8;
372 
373 // Constants for WGL_NV_gpu_affinity
374 enum ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV = 0x20D0;
375 enum ERROR_MISSING_AFFINITY_MASK_NV       = 0x20D1;
376 
377 // Constants for WGL_NV_multisample_coverage
378 enum WGL_COVERAGE_SAMPLES_NV = 0x2042;
379 enum WGL_COLOR_SAMPLES_NV    = 0x20B9;
380 
381 // Constants for WGL_NV_present_video
382 enum WGL_NUM_VIDEO_SLOTS_NV = 0x20F0;
383 
384 // Constants for WGL_NV_render_depth_texture
385 enum WGL_BIND_TO_TEXTURE_DEPTH_NV           = 0x20A3;
386 enum WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV = 0x20A4;
387 enum WGL_DEPTH_TEXTURE_FORMAT_NV            = 0x20A5;
388 enum WGL_TEXTURE_DEPTH_COMPONENT_NV         = 0x20A6;
389 enum WGL_DEPTH_COMPONENT_NV                 = 0x20A7;
390 
391 // Constants for WGL_NV_render_texture_rectangle
392 enum WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV  = 0x20A0;
393 enum WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV = 0x20A1;
394 enum WGL_TEXTURE_RECTANGLE_NV              = 0x20A2;
395 
396 // Constants for WGL_NV_video_capture
397 enum WGL_UNIQUE_ID_NV               = 0x20CE;
398 enum WGL_NUM_VIDEO_CAPTURE_SLOTS_NV = 0x20CF;
399 
400 // Constants for WGL_NV_video_output
401 enum WGL_BIND_TO_VIDEO_RGB_NV           = 0x20C0;
402 enum WGL_BIND_TO_VIDEO_RGBA_NV          = 0x20C1;
403 enum WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV = 0x20C2;
404 enum WGL_VIDEO_OUT_COLOR_NV             = 0x20C3;
405 enum WGL_VIDEO_OUT_ALPHA_NV             = 0x20C4;
406 enum WGL_VIDEO_OUT_DEPTH_NV             = 0x20C5;
407 enum WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV   = 0x20C6;
408 enum WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV   = 0x20C7;
409 enum WGL_VIDEO_OUT_FRAME                = 0x20C8;
410 enum WGL_VIDEO_OUT_FIELD_1              = 0x20C9;
411 enum WGL_VIDEO_OUT_FIELD_2              = 0x20CA;
412 enum WGL_VIDEO_OUT_STACKED_FIELDS_1_2   = 0x20CB;
413 enum WGL_VIDEO_OUT_STACKED_FIELDS_2_1   = 0x20CC;
414 
415 // Command pointer aliases
416 
417 extern(C) nothrow @nogc {
418 
419     // Command pointers for WGL_VERSION_1_0
420     alias PFN_wglCopyContext = BOOL function (
421         HGLRC hglrcSrc,
422         HGLRC hglrcDst,
423         UINT  mask,
424     );
425     alias PFN_wglCreateContext = HGLRC function (
426         HDC hDc,
427     );
428     alias PFN_wglCreateLayerContext = HGLRC function (
429         HDC hDc,
430         int level,
431     );
432     alias PFN_wglDeleteContext = BOOL function (
433         HGLRC oldContext,
434     );
435     alias PFN_wglDescribeLayerPlane = BOOL function (
436         HDC                          hDc,
437         int                          pixelFormat,
438         int                          layerPlane,
439         UINT                         nBytes,
440         const(LAYERPLANEDESCRIPTOR)* plpd,
441     );
442     alias PFN_wglGetCurrentContext = HGLRC function ();
443     alias PFN_wglGetCurrentDC = HDC function ();
444     alias PFN_wglGetLayerPaletteEntries = int function (
445         HDC              hdc,
446         int              iLayerPlane,
447         int              iStart,
448         int              cEntries,
449         const(COLORREF)* pcr,
450     );
451     alias PFN_wglGetProcAddress = PROC function (
452         LPCSTR lpszProc,
453     );
454     alias PFN_wglMakeCurrent = BOOL function (
455         HDC   hDc,
456         HGLRC newContext,
457     );
458     alias PFN_wglRealizeLayerPalette = BOOL function (
459         HDC  hdc,
460         int  iLayerPlane,
461         BOOL bRealize,
462     );
463     alias PFN_wglSetLayerPaletteEntries = int function (
464         HDC              hdc,
465         int              iLayerPlane,
466         int              iStart,
467         int              cEntries,
468         const(COLORREF)* pcr,
469     );
470     alias PFN_wglShareLists = BOOL function (
471         HGLRC hrcSrvShare,
472         HGLRC hrcSrvSource,
473     );
474     alias PFN_wglSwapLayerBuffers = BOOL function (
475         HDC  hdc,
476         UINT fuFlags,
477     );
478     alias PFN_wglUseFontBitmaps = BOOL function (
479         HDC   hDC,
480         DWORD first,
481         DWORD count,
482         DWORD listBase,
483     );
484     alias PFN_wglUseFontBitmapsA = BOOL function (
485         HDC   hDC,
486         DWORD first,
487         DWORD count,
488         DWORD listBase,
489     );
490     alias PFN_wglUseFontBitmapsW = BOOL function (
491         HDC   hDC,
492         DWORD first,
493         DWORD count,
494         DWORD listBase,
495     );
496     alias PFN_wglUseFontOutlines = BOOL function (
497         HDC                 hDC,
498         DWORD               first,
499         DWORD               count,
500         DWORD               listBase,
501         FLOAT               deviation,
502         FLOAT               extrusion,
503         int                 format,
504         LPGLYPHMETRICSFLOAT lpgmf,
505     );
506     alias PFN_wglUseFontOutlinesA = BOOL function (
507         HDC                 hDC,
508         DWORD               first,
509         DWORD               count,
510         DWORD               listBase,
511         FLOAT               deviation,
512         FLOAT               extrusion,
513         int                 format,
514         LPGLYPHMETRICSFLOAT lpgmf,
515     );
516     alias PFN_wglUseFontOutlinesW = BOOL function (
517         HDC                 hDC,
518         DWORD               first,
519         DWORD               count,
520         DWORD               listBase,
521         FLOAT               deviation,
522         FLOAT               extrusion,
523         int                 format,
524         LPGLYPHMETRICSFLOAT lpgmf,
525     );
526 
527     // Command pointers for WGL_ARB_buffer_region
528     alias PFN_wglCreateBufferRegionARB = HANDLE function (
529         HDC  hDC,
530         int  iLayerPlane,
531         UINT uType,
532     );
533     alias PFN_wglDeleteBufferRegionARB = VOID function (
534         HANDLE hRegion,
535     );
536     alias PFN_wglSaveBufferRegionARB = BOOL function (
537         HANDLE hRegion,
538         int    x,
539         int    y,
540         int    width,
541         int    height,
542     );
543     alias PFN_wglRestoreBufferRegionARB = BOOL function (
544         HANDLE hRegion,
545         int    x,
546         int    y,
547         int    width,
548         int    height,
549         int    xSrc,
550         int    ySrc,
551     );
552 
553     // Command pointers for WGL_ARB_create_context
554     alias PFN_wglCreateContextAttribsARB = HGLRC function (
555         HDC         hDC,
556         HGLRC       hShareContext,
557         const(int)* attribList,
558     );
559 
560     // Command pointers for WGL_ARB_extensions_string
561     alias PFN_wglGetExtensionsStringARB = const(char)* function (
562         HDC hdc,
563     );
564 
565     // Command pointers for WGL_ARB_make_current_read
566     alias PFN_wglMakeContextCurrentARB = BOOL function (
567         HDC   hDrawDC,
568         HDC   hReadDC,
569         HGLRC hglrc,
570     );
571     alias PFN_wglGetCurrentReadDCARB = HDC function ();
572 
573     // Command pointers for WGL_ARB_pbuffer
574     alias PFN_wglCreatePbufferARB = HPBUFFERARB function (
575         HDC         hDC,
576         int         iPixelFormat,
577         int         iWidth,
578         int         iHeight,
579         const(int)* piAttribList,
580     );
581     alias PFN_wglGetPbufferDCARB = HDC function (
582         HPBUFFERARB hPbuffer,
583     );
584     alias PFN_wglReleasePbufferDCARB = int function (
585         HPBUFFERARB hPbuffer,
586         HDC         hDC,
587     );
588     alias PFN_wglDestroyPbufferARB = BOOL function (
589         HPBUFFERARB hPbuffer,
590     );
591     alias PFN_wglQueryPbufferARB = BOOL function (
592         HPBUFFERARB hPbuffer,
593         int         iAttribute,
594         int*        piValue,
595     );
596 
597     // Command pointers for WGL_ARB_pixel_format
598     alias PFN_wglGetPixelFormatAttribivARB = BOOL function (
599         HDC         hdc,
600         int         iPixelFormat,
601         int         iLayerPlane,
602         UINT        nAttributes,
603         const(int)* piAttributes,
604         int*        piValues,
605     );
606     alias PFN_wglGetPixelFormatAttribfvARB = BOOL function (
607         HDC         hdc,
608         int         iPixelFormat,
609         int         iLayerPlane,
610         UINT        nAttributes,
611         const(int)* piAttributes,
612         FLOAT*      pfValues,
613     );
614     alias PFN_wglChoosePixelFormatARB = BOOL function (
615         HDC           hdc,
616         const(int)*   piAttribIList,
617         const(FLOAT)* pfAttribFList,
618         UINT          nMaxFormats,
619         int*          piFormats,
620         UINT*         nNumFormats,
621     );
622 
623     // Command pointers for WGL_ARB_render_texture
624     alias PFN_wglBindTexImageARB = BOOL function (
625         HPBUFFERARB hPbuffer,
626         int         iBuffer,
627     );
628     alias PFN_wglReleaseTexImageARB = BOOL function (
629         HPBUFFERARB hPbuffer,
630         int         iBuffer,
631     );
632     alias PFN_wglSetPbufferAttribARB = BOOL function (
633         HPBUFFERARB hPbuffer,
634         const(int)* piAttribList,
635     );
636 
637     // Command pointers for WGL_3DL_stereo_control
638     alias PFN_wglSetStereoEmitterState3DL = BOOL function (
639         HDC  hDC,
640         UINT uState,
641     );
642 
643     // Command pointers for WGL_AMD_gpu_association
644     alias PFN_wglGetGPUIDsAMD = UINT function (
645         UINT  maxCount,
646         UINT* ids,
647     );
648     alias PFN_wglGetGPUInfoAMD = INT function (
649         UINT   id,
650         int    property,
651         GLenum dataType,
652         UINT   size,
653         void*  data,
654     );
655     alias PFN_wglGetContextGPUIDAMD = UINT function (
656         HGLRC hglrc,
657     );
658     alias PFN_wglCreateAssociatedContextAMD = HGLRC function (
659         UINT id,
660     );
661     alias PFN_wglCreateAssociatedContextAttribsAMD = HGLRC function (
662         UINT        id,
663         HGLRC       hShareContext,
664         const(int)* attribList,
665     );
666     alias PFN_wglDeleteAssociatedContextAMD = BOOL function (
667         HGLRC hglrc,
668     );
669     alias PFN_wglMakeAssociatedContextCurrentAMD = BOOL function (
670         HGLRC hglrc,
671     );
672     alias PFN_wglGetCurrentAssociatedContextAMD = HGLRC function ();
673     alias PFN_wglBlitContextFramebufferAMD = VOID function (
674         HGLRC      dstCtx,
675         GLint      srcX0,
676         GLint      srcY0,
677         GLint      srcX1,
678         GLint      srcY1,
679         GLint      dstX0,
680         GLint      dstY0,
681         GLint      dstX1,
682         GLint      dstY1,
683         GLbitfield mask,
684         GLenum     filter,
685     );
686 
687     // Command pointers for WGL_EXT_display_color_table
688     alias PFN_wglCreateDisplayColorTableEXT = GLboolean function (
689         GLushort id,
690     );
691     alias PFN_wglLoadDisplayColorTableEXT = GLboolean function (
692         const(GLushort)* table,
693         GLuint           length,
694     );
695     alias PFN_wglBindDisplayColorTableEXT = GLboolean function (
696         GLushort id,
697     );
698     alias PFN_wglDestroyDisplayColorTableEXT = VOID function (
699         GLushort id,
700     );
701 
702     // Command pointers for WGL_EXT_extensions_string
703     alias PFN_wglGetExtensionsStringEXT = const(char)* function ();
704 
705     // Command pointers for WGL_EXT_make_current_read
706     alias PFN_wglMakeContextCurrentEXT = BOOL function (
707         HDC   hDrawDC,
708         HDC   hReadDC,
709         HGLRC hglrc,
710     );
711     alias PFN_wglGetCurrentReadDCEXT = HDC function ();
712 
713     // Command pointers for WGL_EXT_pbuffer
714     alias PFN_wglCreatePbufferEXT = HPBUFFEREXT function (
715         HDC         hDC,
716         int         iPixelFormat,
717         int         iWidth,
718         int         iHeight,
719         const(int)* piAttribList,
720     );
721     alias PFN_wglGetPbufferDCEXT = HDC function (
722         HPBUFFEREXT hPbuffer,
723     );
724     alias PFN_wglReleasePbufferDCEXT = int function (
725         HPBUFFEREXT hPbuffer,
726         HDC         hDC,
727     );
728     alias PFN_wglDestroyPbufferEXT = BOOL function (
729         HPBUFFEREXT hPbuffer,
730     );
731     alias PFN_wglQueryPbufferEXT = BOOL function (
732         HPBUFFEREXT hPbuffer,
733         int         iAttribute,
734         int*        piValue,
735     );
736 
737     // Command pointers for WGL_EXT_pixel_format
738     alias PFN_wglGetPixelFormatAttribivEXT = BOOL function (
739         HDC  hdc,
740         int  iPixelFormat,
741         int  iLayerPlane,
742         UINT nAttributes,
743         int* piAttributes,
744         int* piValues,
745     );
746     alias PFN_wglGetPixelFormatAttribfvEXT = BOOL function (
747         HDC    hdc,
748         int    iPixelFormat,
749         int    iLayerPlane,
750         UINT   nAttributes,
751         int*   piAttributes,
752         FLOAT* pfValues,
753     );
754     alias PFN_wglChoosePixelFormatEXT = BOOL function (
755         HDC           hdc,
756         const(int)*   piAttribIList,
757         const(FLOAT)* pfAttribFList,
758         UINT          nMaxFormats,
759         int*          piFormats,
760         UINT*         nNumFormats,
761     );
762 
763     // Command pointers for WGL_EXT_swap_control
764     alias PFN_wglSwapIntervalEXT = BOOL function (
765         int interval,
766     );
767     alias PFN_wglGetSwapIntervalEXT = int function ();
768 
769     // Command pointers for WGL_I3D_digital_video_control
770     alias PFN_wglGetDigitalVideoParametersI3D = BOOL function (
771         HDC  hDC,
772         int  iAttribute,
773         int* piValue,
774     );
775     alias PFN_wglSetDigitalVideoParametersI3D = BOOL function (
776         HDC         hDC,
777         int         iAttribute,
778         const(int)* piValue,
779     );
780 
781     // Command pointers for WGL_I3D_gamma
782     alias PFN_wglGetGammaTableParametersI3D = BOOL function (
783         HDC  hDC,
784         int  iAttribute,
785         int* piValue,
786     );
787     alias PFN_wglSetGammaTableParametersI3D = BOOL function (
788         HDC         hDC,
789         int         iAttribute,
790         const(int)* piValue,
791     );
792     alias PFN_wglGetGammaTableI3D = BOOL function (
793         HDC     hDC,
794         int     iEntries,
795         USHORT* puRed,
796         USHORT* puGreen,
797         USHORT* puBlue,
798     );
799     alias PFN_wglSetGammaTableI3D = BOOL function (
800         HDC            hDC,
801         int            iEntries,
802         const(USHORT)* puRed,
803         const(USHORT)* puGreen,
804         const(USHORT)* puBlue,
805     );
806 
807     // Command pointers for WGL_I3D_genlock
808     alias PFN_wglEnableGenlockI3D = BOOL function (
809         HDC hDC,
810     );
811     alias PFN_wglDisableGenlockI3D = BOOL function (
812         HDC hDC,
813     );
814     alias PFN_wglIsEnabledGenlockI3D = BOOL function (
815         HDC   hDC,
816         BOOL* pFlag,
817     );
818     alias PFN_wglGenlockSourceI3D = BOOL function (
819         HDC  hDC,
820         UINT uSource,
821     );
822     alias PFN_wglGetGenlockSourceI3D = BOOL function (
823         HDC   hDC,
824         UINT* uSource,
825     );
826     alias PFN_wglGenlockSourceEdgeI3D = BOOL function (
827         HDC  hDC,
828         UINT uEdge,
829     );
830     alias PFN_wglGetGenlockSourceEdgeI3D = BOOL function (
831         HDC   hDC,
832         UINT* uEdge,
833     );
834     alias PFN_wglGenlockSampleRateI3D = BOOL function (
835         HDC  hDC,
836         UINT uRate,
837     );
838     alias PFN_wglGetGenlockSampleRateI3D = BOOL function (
839         HDC   hDC,
840         UINT* uRate,
841     );
842     alias PFN_wglGenlockSourceDelayI3D = BOOL function (
843         HDC  hDC,
844         UINT uDelay,
845     );
846     alias PFN_wglGetGenlockSourceDelayI3D = BOOL function (
847         HDC   hDC,
848         UINT* uDelay,
849     );
850     alias PFN_wglQueryGenlockMaxSourceDelayI3D = BOOL function (
851         HDC   hDC,
852         UINT* uMaxLineDelay,
853         UINT* uMaxPixelDelay,
854     );
855 
856     // Command pointers for WGL_I3D_image_buffer
857     alias PFN_wglCreateImageBufferI3D = LPVOID function (
858         HDC   hDC,
859         DWORD dwSize,
860         UINT  uFlags,
861     );
862     alias PFN_wglDestroyImageBufferI3D = BOOL function (
863         HDC    hDC,
864         LPVOID pAddress,
865     );
866     alias PFN_wglAssociateImageBufferEventsI3D = BOOL function (
867         HDC            hDC,
868         const(HANDLE)* pEvent,
869         const(LPVOID)* pAddress,
870         const(DWORD)*  pSize,
871         UINT           count,
872     );
873     alias PFN_wglReleaseImageBufferEventsI3D = BOOL function (
874         HDC            hDC,
875         const(LPVOID)* pAddress,
876         UINT           count,
877     );
878 
879     // Command pointers for WGL_I3D_swap_frame_lock
880     alias PFN_wglEnableFrameLockI3D = BOOL function ();
881     alias PFN_wglDisableFrameLockI3D = BOOL function ();
882     alias PFN_wglIsEnabledFrameLockI3D = BOOL function (
883         BOOL* pFlag,
884     );
885     alias PFN_wglQueryFrameLockMasterI3D = BOOL function (
886         BOOL* pFlag,
887     );
888 
889     // Command pointers for WGL_I3D_swap_frame_usage
890     alias PFN_wglGetFrameUsageI3D = BOOL function (
891         float* pUsage,
892     );
893     alias PFN_wglBeginFrameTrackingI3D = BOOL function ();
894     alias PFN_wglEndFrameTrackingI3D = BOOL function ();
895     alias PFN_wglQueryFrameTrackingI3D = BOOL function (
896         DWORD* pFrameCount,
897         DWORD* pMissedFrames,
898         float* pLastMissedUsage,
899     );
900 
901     // Command pointers for WGL_NV_DX_interop
902     alias PFN_wglDXSetResourceShareHandleNV = BOOL function (
903         void*  dxObject,
904         HANDLE shareHandle,
905     );
906     alias PFN_wglDXOpenDeviceNV = HANDLE function (
907         void* dxDevice,
908     );
909     alias PFN_wglDXCloseDeviceNV = BOOL function (
910         HANDLE hDevice,
911     );
912     alias PFN_wglDXRegisterObjectNV = HANDLE function (
913         HANDLE hDevice,
914         void*  dxObject,
915         GLuint name,
916         GLenum type,
917         GLenum access,
918     );
919     alias PFN_wglDXUnregisterObjectNV = BOOL function (
920         HANDLE hDevice,
921         HANDLE hObject,
922     );
923     alias PFN_wglDXObjectAccessNV = BOOL function (
924         HANDLE hObject,
925         GLenum access,
926     );
927     alias PFN_wglDXLockObjectsNV = BOOL function (
928         HANDLE  hDevice,
929         GLint   count,
930         HANDLE* hObjects,
931     );
932     alias PFN_wglDXUnlockObjectsNV = BOOL function (
933         HANDLE  hDevice,
934         GLint   count,
935         HANDLE* hObjects,
936     );
937 
938     // Command pointers for WGL_NV_copy_image
939     alias PFN_wglCopyImageSubDataNV = BOOL function (
940         HGLRC   hSrcRC,
941         GLuint  srcName,
942         GLenum  srcTarget,
943         GLint   srcLevel,
944         GLint   srcX,
945         GLint   srcY,
946         GLint   srcZ,
947         HGLRC   hDstRC,
948         GLuint  dstName,
949         GLenum  dstTarget,
950         GLint   dstLevel,
951         GLint   dstX,
952         GLint   dstY,
953         GLint   dstZ,
954         GLsizei width,
955         GLsizei height,
956         GLsizei depth,
957     );
958 
959     // Command pointers for WGL_NV_delay_before_swap
960     alias PFN_wglDelayBeforeSwapNV = BOOL function (
961         HDC     hDC,
962         GLfloat seconds,
963     );
964 
965     // Command pointers for WGL_NV_gpu_affinity
966     alias PFN_wglEnumGpusNV = BOOL function (
967         UINT    iGpuIndex,
968         HGPUNV* phGpu,
969     );
970     alias PFN_wglEnumGpuDevicesNV = BOOL function (
971         HGPUNV      hGpu,
972         UINT        iDeviceIndex,
973         PGPU_DEVICE lpGpuDevice,
974     );
975     alias PFN_wglCreateAffinityDCNV = HDC function (
976         const(HGPUNV)* phGpuList,
977     );
978     alias PFN_wglEnumGpusFromAffinityDCNV = BOOL function (
979         HDC     hAffinityDC,
980         UINT    iGpuIndex,
981         HGPUNV* hGpu,
982     );
983     alias PFN_wglDeleteDCNV = BOOL function (
984         HDC hdc,
985     );
986 
987     // Command pointers for WGL_NV_present_video
988     alias PFN_wglEnumerateVideoDevicesNV = int function (
989         HDC                   hDC,
990         HVIDEOOUTPUTDEVICENV* phDeviceList,
991     );
992     alias PFN_wglBindVideoDeviceNV = BOOL function (
993         HDC                  hDC,
994         uint                 uVideoSlot,
995         HVIDEOOUTPUTDEVICENV hVideoDevice,
996         const(int)*          piAttribList,
997     );
998     alias PFN_wglQueryCurrentContextNV = BOOL function (
999         int  iAttribute,
1000         int* piValue,
1001     );
1002 
1003     // Command pointers for WGL_NV_swap_group
1004     alias PFN_wglJoinSwapGroupNV = BOOL function (
1005         HDC    hDC,
1006         GLuint group,
1007     );
1008     alias PFN_wglBindSwapBarrierNV = BOOL function (
1009         GLuint group,
1010         GLuint barrier,
1011     );
1012     alias PFN_wglQuerySwapGroupNV = BOOL function (
1013         HDC     hDC,
1014         GLuint* group,
1015         GLuint* barrier,
1016     );
1017     alias PFN_wglQueryMaxSwapGroupsNV = BOOL function (
1018         HDC     hDC,
1019         GLuint* maxGroups,
1020         GLuint* maxBarriers,
1021     );
1022     alias PFN_wglQueryFrameCountNV = BOOL function (
1023         HDC     hDC,
1024         GLuint* count,
1025     );
1026     alias PFN_wglResetFrameCountNV = BOOL function (
1027         HDC hDC,
1028     );
1029 
1030     // Command pointers for WGL_NV_vertex_array_range
1031     alias PFN_wglAllocateMemoryNV = void * function (
1032         GLsizei size,
1033         GLfloat readfreq,
1034         GLfloat writefreq,
1035         GLfloat priority,
1036     );
1037     alias PFN_wglFreeMemoryNV = void function (
1038         void* pointer,
1039     );
1040 
1041     // Command pointers for WGL_NV_video_capture
1042     alias PFN_wglBindVideoCaptureDeviceNV = BOOL function (
1043         UINT                uVideoSlot,
1044         HVIDEOINPUTDEVICENV hDevice,
1045     );
1046     alias PFN_wglEnumerateVideoCaptureDevicesNV = UINT function (
1047         HDC                  hDc,
1048         HVIDEOINPUTDEVICENV* phDeviceList,
1049     );
1050     alias PFN_wglLockVideoCaptureDeviceNV = BOOL function (
1051         HDC                 hDc,
1052         HVIDEOINPUTDEVICENV hDevice,
1053     );
1054     alias PFN_wglQueryVideoCaptureDeviceNV = BOOL function (
1055         HDC                 hDc,
1056         HVIDEOINPUTDEVICENV hDevice,
1057         int                 iAttribute,
1058         int*                piValue,
1059     );
1060     alias PFN_wglReleaseVideoCaptureDeviceNV = BOOL function (
1061         HDC                 hDc,
1062         HVIDEOINPUTDEVICENV hDevice,
1063     );
1064 
1065     // Command pointers for WGL_NV_video_output
1066     alias PFN_wglGetVideoDeviceNV = BOOL function (
1067         HDC         hDC,
1068         int         numDevices,
1069         HPVIDEODEV* hVideoDevice,
1070     );
1071     alias PFN_wglReleaseVideoDeviceNV = BOOL function (
1072         HPVIDEODEV hVideoDevice,
1073     );
1074     alias PFN_wglBindVideoImageNV = BOOL function (
1075         HPVIDEODEV  hVideoDevice,
1076         HPBUFFERARB hPbuffer,
1077         int         iVideoBuffer,
1078     );
1079     alias PFN_wglReleaseVideoImageNV = BOOL function (
1080         HPBUFFERARB hPbuffer,
1081         int         iVideoBuffer,
1082     );
1083     alias PFN_wglSendPbufferToVideoNV = BOOL function (
1084         HPBUFFERARB hPbuffer,
1085         int         iBufferType,
1086         c_ulong*    pulCounterPbuffer,
1087         BOOL        bBlock,
1088     );
1089     alias PFN_wglGetVideoInfoNV = BOOL function (
1090         HPVIDEODEV hpVideoDevice,
1091         c_ulong*   pulCounterOutputPbuffer,
1092         c_ulong*   pulCounterOutputVideo,
1093     );
1094 
1095     // Command pointers for WGL_OML_sync_control
1096     alias PFN_wglGetSyncValuesOML = BOOL function (
1097         HDC    hdc,
1098         INT64* ust,
1099         INT64* msc,
1100         INT64* sbc,
1101     );
1102     alias PFN_wglGetMscRateOML = BOOL function (
1103         HDC    hdc,
1104         INT32* numerator,
1105         INT32* denominator,
1106     );
1107     alias PFN_wglSwapBuffersMscOML = INT64 function (
1108         HDC   hdc,
1109         INT64 target_msc,
1110         INT64 divisor,
1111         INT64 remainder,
1112     );
1113     alias PFN_wglSwapLayerBuffersMscOML = INT64 function (
1114         HDC   hdc,
1115         int   fuPlanes,
1116         INT64 target_msc,
1117         INT64 divisor,
1118         INT64 remainder,
1119     );
1120     alias PFN_wglWaitForMscOML = BOOL function (
1121         HDC    hdc,
1122         INT64  target_msc,
1123         INT64  divisor,
1124         INT64  remainder,
1125         INT64* ust,
1126         INT64* msc,
1127         INT64* sbc,
1128     );
1129     alias PFN_wglWaitForSbcOML = BOOL function (
1130         HDC    hdc,
1131         INT64  target_sbc,
1132         INT64* ust,
1133         INT64* msc,
1134         INT64* sbc,
1135     );
1136 }
1137 
1138 /// WglVersion describes the version of WinGL
1139 enum WglVersion {
1140     wgl10 = 10,
1141 }
1142 
1143 /// WinGL loader base class
1144 final class Wgl {
1145     this(SymbolLoader loader) {
1146 
1147         // WGL_VERSION_1_0
1148         _CopyContext = cast(PFN_wglCopyContext)loadSymbol(loader, "wglCopyContext", []);
1149         _CreateContext = cast(PFN_wglCreateContext)loadSymbol(loader, "wglCreateContext", []);
1150         _CreateLayerContext = cast(PFN_wglCreateLayerContext)loadSymbol(loader, "wglCreateLayerContext", []);
1151         _DeleteContext = cast(PFN_wglDeleteContext)loadSymbol(loader, "wglDeleteContext", []);
1152         _DescribeLayerPlane = cast(PFN_wglDescribeLayerPlane)loadSymbol(loader, "wglDescribeLayerPlane", []);
1153         _GetCurrentContext = cast(PFN_wglGetCurrentContext)loadSymbol(loader, "wglGetCurrentContext", []);
1154         _GetCurrentDC = cast(PFN_wglGetCurrentDC)loadSymbol(loader, "wglGetCurrentDC", []);
1155         _GetLayerPaletteEntries = cast(PFN_wglGetLayerPaletteEntries)loadSymbol(loader, "wglGetLayerPaletteEntries", []);
1156         _GetProcAddress = cast(PFN_wglGetProcAddress)loadSymbol(loader, "wglGetProcAddress", []);
1157         _MakeCurrent = cast(PFN_wglMakeCurrent)loadSymbol(loader, "wglMakeCurrent", []);
1158         _RealizeLayerPalette = cast(PFN_wglRealizeLayerPalette)loadSymbol(loader, "wglRealizeLayerPalette", []);
1159         _SetLayerPaletteEntries = cast(PFN_wglSetLayerPaletteEntries)loadSymbol(loader, "wglSetLayerPaletteEntries", []);
1160         _ShareLists = cast(PFN_wglShareLists)loadSymbol(loader, "wglShareLists", []);
1161         _SwapLayerBuffers = cast(PFN_wglSwapLayerBuffers)loadSymbol(loader, "wglSwapLayerBuffers", []);
1162         _UseFontBitmaps = cast(PFN_wglUseFontBitmaps)loadSymbol(loader, "wglUseFontBitmaps", []);
1163         _UseFontBitmapsA = cast(PFN_wglUseFontBitmapsA)loadSymbol(loader, "wglUseFontBitmapsA", []);
1164         _UseFontBitmapsW = cast(PFN_wglUseFontBitmapsW)loadSymbol(loader, "wglUseFontBitmapsW", []);
1165         _UseFontOutlines = cast(PFN_wglUseFontOutlines)loadSymbol(loader, "wglUseFontOutlines", []);
1166         _UseFontOutlinesA = cast(PFN_wglUseFontOutlinesA)loadSymbol(loader, "wglUseFontOutlinesA", []);
1167         _UseFontOutlinesW = cast(PFN_wglUseFontOutlinesW)loadSymbol(loader, "wglUseFontOutlinesW", []);
1168 
1169         // WGL_ARB_buffer_region,
1170         _CreateBufferRegionARB = cast(PFN_wglCreateBufferRegionARB)loadSymbol(loader, "wglCreateBufferRegionARB", []);
1171         _DeleteBufferRegionARB = cast(PFN_wglDeleteBufferRegionARB)loadSymbol(loader, "wglDeleteBufferRegionARB", []);
1172         _SaveBufferRegionARB = cast(PFN_wglSaveBufferRegionARB)loadSymbol(loader, "wglSaveBufferRegionARB", []);
1173         _RestoreBufferRegionARB = cast(PFN_wglRestoreBufferRegionARB)loadSymbol(loader, "wglRestoreBufferRegionARB", []);
1174 
1175         // WGL_ARB_create_context,
1176         _CreateContextAttribsARB = cast(PFN_wglCreateContextAttribsARB)loadSymbol(loader, "wglCreateContextAttribsARB", []);
1177 
1178         // WGL_ARB_extensions_string,
1179         _GetExtensionsStringARB = cast(PFN_wglGetExtensionsStringARB)loadSymbol(loader, "wglGetExtensionsStringARB", []);
1180 
1181         // WGL_ARB_make_current_read,
1182         _MakeContextCurrentARB = cast(PFN_wglMakeContextCurrentARB)loadSymbol(loader, "wglMakeContextCurrentARB", []);
1183         _GetCurrentReadDCARB = cast(PFN_wglGetCurrentReadDCARB)loadSymbol(loader, "wglGetCurrentReadDCARB", []);
1184 
1185         // WGL_ARB_pbuffer,
1186         _CreatePbufferARB = cast(PFN_wglCreatePbufferARB)loadSymbol(loader, "wglCreatePbufferARB", []);
1187         _GetPbufferDCARB = cast(PFN_wglGetPbufferDCARB)loadSymbol(loader, "wglGetPbufferDCARB", []);
1188         _ReleasePbufferDCARB = cast(PFN_wglReleasePbufferDCARB)loadSymbol(loader, "wglReleasePbufferDCARB", []);
1189         _DestroyPbufferARB = cast(PFN_wglDestroyPbufferARB)loadSymbol(loader, "wglDestroyPbufferARB", []);
1190         _QueryPbufferARB = cast(PFN_wglQueryPbufferARB)loadSymbol(loader, "wglQueryPbufferARB", []);
1191 
1192         // WGL_ARB_pixel_format,
1193         _GetPixelFormatAttribivARB = cast(PFN_wglGetPixelFormatAttribivARB)loadSymbol(loader, "wglGetPixelFormatAttribivARB", []);
1194         _GetPixelFormatAttribfvARB = cast(PFN_wglGetPixelFormatAttribfvARB)loadSymbol(loader, "wglGetPixelFormatAttribfvARB", []);
1195         _ChoosePixelFormatARB = cast(PFN_wglChoosePixelFormatARB)loadSymbol(loader, "wglChoosePixelFormatARB", []);
1196 
1197         // WGL_ARB_render_texture,
1198         _BindTexImageARB = cast(PFN_wglBindTexImageARB)loadSymbol(loader, "wglBindTexImageARB", []);
1199         _ReleaseTexImageARB = cast(PFN_wglReleaseTexImageARB)loadSymbol(loader, "wglReleaseTexImageARB", []);
1200         _SetPbufferAttribARB = cast(PFN_wglSetPbufferAttribARB)loadSymbol(loader, "wglSetPbufferAttribARB", []);
1201 
1202         // WGL_3DL_stereo_control,
1203         _SetStereoEmitterState3DL = cast(PFN_wglSetStereoEmitterState3DL)loadSymbol(loader, "wglSetStereoEmitterState3DL", []);
1204 
1205         // WGL_AMD_gpu_association,
1206         _GetGPUIDsAMD = cast(PFN_wglGetGPUIDsAMD)loadSymbol(loader, "wglGetGPUIDsAMD", []);
1207         _GetGPUInfoAMD = cast(PFN_wglGetGPUInfoAMD)loadSymbol(loader, "wglGetGPUInfoAMD", []);
1208         _GetContextGPUIDAMD = cast(PFN_wglGetContextGPUIDAMD)loadSymbol(loader, "wglGetContextGPUIDAMD", []);
1209         _CreateAssociatedContextAMD = cast(PFN_wglCreateAssociatedContextAMD)loadSymbol(loader, "wglCreateAssociatedContextAMD", []);
1210         _CreateAssociatedContextAttribsAMD = cast(PFN_wglCreateAssociatedContextAttribsAMD)loadSymbol(loader, "wglCreateAssociatedContextAttribsAMD", []);
1211         _DeleteAssociatedContextAMD = cast(PFN_wglDeleteAssociatedContextAMD)loadSymbol(loader, "wglDeleteAssociatedContextAMD", []);
1212         _MakeAssociatedContextCurrentAMD = cast(PFN_wglMakeAssociatedContextCurrentAMD)loadSymbol(loader, "wglMakeAssociatedContextCurrentAMD", []);
1213         _GetCurrentAssociatedContextAMD = cast(PFN_wglGetCurrentAssociatedContextAMD)loadSymbol(loader, "wglGetCurrentAssociatedContextAMD", []);
1214         _BlitContextFramebufferAMD = cast(PFN_wglBlitContextFramebufferAMD)loadSymbol(loader, "wglBlitContextFramebufferAMD", []);
1215 
1216         // WGL_EXT_display_color_table,
1217         _CreateDisplayColorTableEXT = cast(PFN_wglCreateDisplayColorTableEXT)loadSymbol(loader, "wglCreateDisplayColorTableEXT", []);
1218         _LoadDisplayColorTableEXT = cast(PFN_wglLoadDisplayColorTableEXT)loadSymbol(loader, "wglLoadDisplayColorTableEXT", []);
1219         _BindDisplayColorTableEXT = cast(PFN_wglBindDisplayColorTableEXT)loadSymbol(loader, "wglBindDisplayColorTableEXT", []);
1220         _DestroyDisplayColorTableEXT = cast(PFN_wglDestroyDisplayColorTableEXT)loadSymbol(loader, "wglDestroyDisplayColorTableEXT", []);
1221 
1222         // WGL_EXT_extensions_string,
1223         _GetExtensionsStringEXT = cast(PFN_wglGetExtensionsStringEXT)loadSymbol(loader, "wglGetExtensionsStringEXT", []);
1224 
1225         // WGL_EXT_make_current_read,
1226         _MakeContextCurrentEXT = cast(PFN_wglMakeContextCurrentEXT)loadSymbol(loader, "wglMakeContextCurrentEXT", []);
1227         _GetCurrentReadDCEXT = cast(PFN_wglGetCurrentReadDCEXT)loadSymbol(loader, "wglGetCurrentReadDCEXT", []);
1228 
1229         // WGL_EXT_pbuffer,
1230         _CreatePbufferEXT = cast(PFN_wglCreatePbufferEXT)loadSymbol(loader, "wglCreatePbufferEXT", []);
1231         _GetPbufferDCEXT = cast(PFN_wglGetPbufferDCEXT)loadSymbol(loader, "wglGetPbufferDCEXT", []);
1232         _ReleasePbufferDCEXT = cast(PFN_wglReleasePbufferDCEXT)loadSymbol(loader, "wglReleasePbufferDCEXT", []);
1233         _DestroyPbufferEXT = cast(PFN_wglDestroyPbufferEXT)loadSymbol(loader, "wglDestroyPbufferEXT", []);
1234         _QueryPbufferEXT = cast(PFN_wglQueryPbufferEXT)loadSymbol(loader, "wglQueryPbufferEXT", []);
1235 
1236         // WGL_EXT_pixel_format,
1237         _GetPixelFormatAttribivEXT = cast(PFN_wglGetPixelFormatAttribivEXT)loadSymbol(loader, "wglGetPixelFormatAttribivEXT", []);
1238         _GetPixelFormatAttribfvEXT = cast(PFN_wglGetPixelFormatAttribfvEXT)loadSymbol(loader, "wglGetPixelFormatAttribfvEXT", []);
1239         _ChoosePixelFormatEXT = cast(PFN_wglChoosePixelFormatEXT)loadSymbol(loader, "wglChoosePixelFormatEXT", []);
1240 
1241         // WGL_EXT_swap_control,
1242         _SwapIntervalEXT = cast(PFN_wglSwapIntervalEXT)loadSymbol(loader, "wglSwapIntervalEXT", []);
1243         _GetSwapIntervalEXT = cast(PFN_wglGetSwapIntervalEXT)loadSymbol(loader, "wglGetSwapIntervalEXT", []);
1244 
1245         // WGL_I3D_digital_video_control,
1246         _GetDigitalVideoParametersI3D = cast(PFN_wglGetDigitalVideoParametersI3D)loadSymbol(loader, "wglGetDigitalVideoParametersI3D", []);
1247         _SetDigitalVideoParametersI3D = cast(PFN_wglSetDigitalVideoParametersI3D)loadSymbol(loader, "wglSetDigitalVideoParametersI3D", []);
1248 
1249         // WGL_I3D_gamma,
1250         _GetGammaTableParametersI3D = cast(PFN_wglGetGammaTableParametersI3D)loadSymbol(loader, "wglGetGammaTableParametersI3D", []);
1251         _SetGammaTableParametersI3D = cast(PFN_wglSetGammaTableParametersI3D)loadSymbol(loader, "wglSetGammaTableParametersI3D", []);
1252         _GetGammaTableI3D = cast(PFN_wglGetGammaTableI3D)loadSymbol(loader, "wglGetGammaTableI3D", []);
1253         _SetGammaTableI3D = cast(PFN_wglSetGammaTableI3D)loadSymbol(loader, "wglSetGammaTableI3D", []);
1254 
1255         // WGL_I3D_genlock,
1256         _EnableGenlockI3D = cast(PFN_wglEnableGenlockI3D)loadSymbol(loader, "wglEnableGenlockI3D", []);
1257         _DisableGenlockI3D = cast(PFN_wglDisableGenlockI3D)loadSymbol(loader, "wglDisableGenlockI3D", []);
1258         _IsEnabledGenlockI3D = cast(PFN_wglIsEnabledGenlockI3D)loadSymbol(loader, "wglIsEnabledGenlockI3D", []);
1259         _GenlockSourceI3D = cast(PFN_wglGenlockSourceI3D)loadSymbol(loader, "wglGenlockSourceI3D", []);
1260         _GetGenlockSourceI3D = cast(PFN_wglGetGenlockSourceI3D)loadSymbol(loader, "wglGetGenlockSourceI3D", []);
1261         _GenlockSourceEdgeI3D = cast(PFN_wglGenlockSourceEdgeI3D)loadSymbol(loader, "wglGenlockSourceEdgeI3D", []);
1262         _GetGenlockSourceEdgeI3D = cast(PFN_wglGetGenlockSourceEdgeI3D)loadSymbol(loader, "wglGetGenlockSourceEdgeI3D", []);
1263         _GenlockSampleRateI3D = cast(PFN_wglGenlockSampleRateI3D)loadSymbol(loader, "wglGenlockSampleRateI3D", []);
1264         _GetGenlockSampleRateI3D = cast(PFN_wglGetGenlockSampleRateI3D)loadSymbol(loader, "wglGetGenlockSampleRateI3D", []);
1265         _GenlockSourceDelayI3D = cast(PFN_wglGenlockSourceDelayI3D)loadSymbol(loader, "wglGenlockSourceDelayI3D", []);
1266         _GetGenlockSourceDelayI3D = cast(PFN_wglGetGenlockSourceDelayI3D)loadSymbol(loader, "wglGetGenlockSourceDelayI3D", []);
1267         _QueryGenlockMaxSourceDelayI3D = cast(PFN_wglQueryGenlockMaxSourceDelayI3D)loadSymbol(loader, "wglQueryGenlockMaxSourceDelayI3D", []);
1268 
1269         // WGL_I3D_image_buffer,
1270         _CreateImageBufferI3D = cast(PFN_wglCreateImageBufferI3D)loadSymbol(loader, "wglCreateImageBufferI3D", []);
1271         _DestroyImageBufferI3D = cast(PFN_wglDestroyImageBufferI3D)loadSymbol(loader, "wglDestroyImageBufferI3D", []);
1272         _AssociateImageBufferEventsI3D = cast(PFN_wglAssociateImageBufferEventsI3D)loadSymbol(loader, "wglAssociateImageBufferEventsI3D", []);
1273         _ReleaseImageBufferEventsI3D = cast(PFN_wglReleaseImageBufferEventsI3D)loadSymbol(loader, "wglReleaseImageBufferEventsI3D", []);
1274 
1275         // WGL_I3D_swap_frame_lock,
1276         _EnableFrameLockI3D = cast(PFN_wglEnableFrameLockI3D)loadSymbol(loader, "wglEnableFrameLockI3D", []);
1277         _DisableFrameLockI3D = cast(PFN_wglDisableFrameLockI3D)loadSymbol(loader, "wglDisableFrameLockI3D", []);
1278         _IsEnabledFrameLockI3D = cast(PFN_wglIsEnabledFrameLockI3D)loadSymbol(loader, "wglIsEnabledFrameLockI3D", []);
1279         _QueryFrameLockMasterI3D = cast(PFN_wglQueryFrameLockMasterI3D)loadSymbol(loader, "wglQueryFrameLockMasterI3D", []);
1280 
1281         // WGL_I3D_swap_frame_usage,
1282         _GetFrameUsageI3D = cast(PFN_wglGetFrameUsageI3D)loadSymbol(loader, "wglGetFrameUsageI3D", []);
1283         _BeginFrameTrackingI3D = cast(PFN_wglBeginFrameTrackingI3D)loadSymbol(loader, "wglBeginFrameTrackingI3D", []);
1284         _EndFrameTrackingI3D = cast(PFN_wglEndFrameTrackingI3D)loadSymbol(loader, "wglEndFrameTrackingI3D", []);
1285         _QueryFrameTrackingI3D = cast(PFN_wglQueryFrameTrackingI3D)loadSymbol(loader, "wglQueryFrameTrackingI3D", []);
1286 
1287         // WGL_NV_DX_interop,
1288         _DXSetResourceShareHandleNV = cast(PFN_wglDXSetResourceShareHandleNV)loadSymbol(loader, "wglDXSetResourceShareHandleNV", []);
1289         _DXOpenDeviceNV = cast(PFN_wglDXOpenDeviceNV)loadSymbol(loader, "wglDXOpenDeviceNV", []);
1290         _DXCloseDeviceNV = cast(PFN_wglDXCloseDeviceNV)loadSymbol(loader, "wglDXCloseDeviceNV", []);
1291         _DXRegisterObjectNV = cast(PFN_wglDXRegisterObjectNV)loadSymbol(loader, "wglDXRegisterObjectNV", []);
1292         _DXUnregisterObjectNV = cast(PFN_wglDXUnregisterObjectNV)loadSymbol(loader, "wglDXUnregisterObjectNV", []);
1293         _DXObjectAccessNV = cast(PFN_wglDXObjectAccessNV)loadSymbol(loader, "wglDXObjectAccessNV", []);
1294         _DXLockObjectsNV = cast(PFN_wglDXLockObjectsNV)loadSymbol(loader, "wglDXLockObjectsNV", []);
1295         _DXUnlockObjectsNV = cast(PFN_wglDXUnlockObjectsNV)loadSymbol(loader, "wglDXUnlockObjectsNV", []);
1296 
1297         // WGL_NV_copy_image,
1298         _CopyImageSubDataNV = cast(PFN_wglCopyImageSubDataNV)loadSymbol(loader, "wglCopyImageSubDataNV", []);
1299 
1300         // WGL_NV_delay_before_swap,
1301         _DelayBeforeSwapNV = cast(PFN_wglDelayBeforeSwapNV)loadSymbol(loader, "wglDelayBeforeSwapNV", []);
1302 
1303         // WGL_NV_gpu_affinity,
1304         _EnumGpusNV = cast(PFN_wglEnumGpusNV)loadSymbol(loader, "wglEnumGpusNV", []);
1305         _EnumGpuDevicesNV = cast(PFN_wglEnumGpuDevicesNV)loadSymbol(loader, "wglEnumGpuDevicesNV", []);
1306         _CreateAffinityDCNV = cast(PFN_wglCreateAffinityDCNV)loadSymbol(loader, "wglCreateAffinityDCNV", []);
1307         _EnumGpusFromAffinityDCNV = cast(PFN_wglEnumGpusFromAffinityDCNV)loadSymbol(loader, "wglEnumGpusFromAffinityDCNV", []);
1308         _DeleteDCNV = cast(PFN_wglDeleteDCNV)loadSymbol(loader, "wglDeleteDCNV", []);
1309 
1310         // WGL_NV_present_video,
1311         _EnumerateVideoDevicesNV = cast(PFN_wglEnumerateVideoDevicesNV)loadSymbol(loader, "wglEnumerateVideoDevicesNV", []);
1312         _BindVideoDeviceNV = cast(PFN_wglBindVideoDeviceNV)loadSymbol(loader, "wglBindVideoDeviceNV", []);
1313         _QueryCurrentContextNV = cast(PFN_wglQueryCurrentContextNV)loadSymbol(loader, "wglQueryCurrentContextNV", []);
1314 
1315         // WGL_NV_swap_group,
1316         _JoinSwapGroupNV = cast(PFN_wglJoinSwapGroupNV)loadSymbol(loader, "wglJoinSwapGroupNV", []);
1317         _BindSwapBarrierNV = cast(PFN_wglBindSwapBarrierNV)loadSymbol(loader, "wglBindSwapBarrierNV", []);
1318         _QuerySwapGroupNV = cast(PFN_wglQuerySwapGroupNV)loadSymbol(loader, "wglQuerySwapGroupNV", []);
1319         _QueryMaxSwapGroupsNV = cast(PFN_wglQueryMaxSwapGroupsNV)loadSymbol(loader, "wglQueryMaxSwapGroupsNV", []);
1320         _QueryFrameCountNV = cast(PFN_wglQueryFrameCountNV)loadSymbol(loader, "wglQueryFrameCountNV", []);
1321         _ResetFrameCountNV = cast(PFN_wglResetFrameCountNV)loadSymbol(loader, "wglResetFrameCountNV", []);
1322 
1323         // WGL_NV_vertex_array_range,
1324         _AllocateMemoryNV = cast(PFN_wglAllocateMemoryNV)loadSymbol(loader, "wglAllocateMemoryNV", []);
1325         _FreeMemoryNV = cast(PFN_wglFreeMemoryNV)loadSymbol(loader, "wglFreeMemoryNV", []);
1326 
1327         // WGL_NV_video_capture,
1328         _BindVideoCaptureDeviceNV = cast(PFN_wglBindVideoCaptureDeviceNV)loadSymbol(loader, "wglBindVideoCaptureDeviceNV", []);
1329         _EnumerateVideoCaptureDevicesNV = cast(PFN_wglEnumerateVideoCaptureDevicesNV)loadSymbol(loader, "wglEnumerateVideoCaptureDevicesNV", []);
1330         _LockVideoCaptureDeviceNV = cast(PFN_wglLockVideoCaptureDeviceNV)loadSymbol(loader, "wglLockVideoCaptureDeviceNV", []);
1331         _QueryVideoCaptureDeviceNV = cast(PFN_wglQueryVideoCaptureDeviceNV)loadSymbol(loader, "wglQueryVideoCaptureDeviceNV", []);
1332         _ReleaseVideoCaptureDeviceNV = cast(PFN_wglReleaseVideoCaptureDeviceNV)loadSymbol(loader, "wglReleaseVideoCaptureDeviceNV", []);
1333 
1334         // WGL_NV_video_output,
1335         _GetVideoDeviceNV = cast(PFN_wglGetVideoDeviceNV)loadSymbol(loader, "wglGetVideoDeviceNV", []);
1336         _ReleaseVideoDeviceNV = cast(PFN_wglReleaseVideoDeviceNV)loadSymbol(loader, "wglReleaseVideoDeviceNV", []);
1337         _BindVideoImageNV = cast(PFN_wglBindVideoImageNV)loadSymbol(loader, "wglBindVideoImageNV", []);
1338         _ReleaseVideoImageNV = cast(PFN_wglReleaseVideoImageNV)loadSymbol(loader, "wglReleaseVideoImageNV", []);
1339         _SendPbufferToVideoNV = cast(PFN_wglSendPbufferToVideoNV)loadSymbol(loader, "wglSendPbufferToVideoNV", []);
1340         _GetVideoInfoNV = cast(PFN_wglGetVideoInfoNV)loadSymbol(loader, "wglGetVideoInfoNV", []);
1341 
1342         // WGL_OML_sync_control,
1343         _GetSyncValuesOML = cast(PFN_wglGetSyncValuesOML)loadSymbol(loader, "wglGetSyncValuesOML", []);
1344         _GetMscRateOML = cast(PFN_wglGetMscRateOML)loadSymbol(loader, "wglGetMscRateOML", []);
1345         _SwapBuffersMscOML = cast(PFN_wglSwapBuffersMscOML)loadSymbol(loader, "wglSwapBuffersMscOML", []);
1346         _SwapLayerBuffersMscOML = cast(PFN_wglSwapLayerBuffersMscOML)loadSymbol(loader, "wglSwapLayerBuffersMscOML", []);
1347         _WaitForMscOML = cast(PFN_wglWaitForMscOML)loadSymbol(loader, "wglWaitForMscOML", []);
1348         _WaitForSbcOML = cast(PFN_wglWaitForSbcOML)loadSymbol(loader, "wglWaitForSbcOML", []);
1349     }
1350 
1351     private static void* loadSymbol(SymbolLoader loader, in string name, in string[] aliases) {
1352         void* sym = loader(name);
1353         if (sym) return sym;
1354         foreach (n; aliases) {
1355             sym = loader(n);
1356             if (sym) return sym;
1357         }
1358         return null;
1359     }
1360 
1361     /// Commands for WGL_VERSION_1_0
1362     public BOOL CopyContext (HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) const {
1363         assert(_CopyContext !is null, "WinGL command wglCopyContext was not loaded");
1364         return _CopyContext (hglrcSrc, hglrcDst, mask);
1365     }
1366     /// ditto
1367     public HGLRC CreateContext (HDC hDc) const {
1368         assert(_CreateContext !is null, "WinGL command wglCreateContext was not loaded");
1369         return _CreateContext (hDc);
1370     }
1371     /// ditto
1372     public HGLRC CreateLayerContext (HDC hDc, int level) const {
1373         assert(_CreateLayerContext !is null, "WinGL command wglCreateLayerContext was not loaded");
1374         return _CreateLayerContext (hDc, level);
1375     }
1376     /// ditto
1377     public BOOL DeleteContext (HGLRC oldContext) const {
1378         assert(_DeleteContext !is null, "WinGL command wglDeleteContext was not loaded");
1379         return _DeleteContext (oldContext);
1380     }
1381     /// ditto
1382     public BOOL DescribeLayerPlane (HDC hDc, int pixelFormat, int layerPlane, UINT nBytes, const(LAYERPLANEDESCRIPTOR)* plpd) const {
1383         assert(_DescribeLayerPlane !is null, "WinGL command wglDescribeLayerPlane was not loaded");
1384         return _DescribeLayerPlane (hDc, pixelFormat, layerPlane, nBytes, plpd);
1385     }
1386     /// ditto
1387     public HGLRC GetCurrentContext () const {
1388         assert(_GetCurrentContext !is null, "WinGL command wglGetCurrentContext was not loaded");
1389         return _GetCurrentContext ();
1390     }
1391     /// ditto
1392     public HDC GetCurrentDC () const {
1393         assert(_GetCurrentDC !is null, "WinGL command wglGetCurrentDC was not loaded");
1394         return _GetCurrentDC ();
1395     }
1396     /// ditto
1397     public int GetLayerPaletteEntries (HDC hdc, int iLayerPlane, int iStart, int cEntries, const(COLORREF)* pcr) const {
1398         assert(_GetLayerPaletteEntries !is null, "WinGL command wglGetLayerPaletteEntries was not loaded");
1399         return _GetLayerPaletteEntries (hdc, iLayerPlane, iStart, cEntries, pcr);
1400     }
1401     /// ditto
1402     public PROC GetProcAddress (LPCSTR lpszProc) const {
1403         assert(_GetProcAddress !is null, "WinGL command wglGetProcAddress was not loaded");
1404         return _GetProcAddress (lpszProc);
1405     }
1406     /// ditto
1407     public BOOL MakeCurrent (HDC hDc, HGLRC newContext) const {
1408         assert(_MakeCurrent !is null, "WinGL command wglMakeCurrent was not loaded");
1409         return _MakeCurrent (hDc, newContext);
1410     }
1411     /// ditto
1412     public BOOL RealizeLayerPalette (HDC hdc, int iLayerPlane, BOOL bRealize) const {
1413         assert(_RealizeLayerPalette !is null, "WinGL command wglRealizeLayerPalette was not loaded");
1414         return _RealizeLayerPalette (hdc, iLayerPlane, bRealize);
1415     }
1416     /// ditto
1417     public int SetLayerPaletteEntries (HDC hdc, int iLayerPlane, int iStart, int cEntries, const(COLORREF)* pcr) const {
1418         assert(_SetLayerPaletteEntries !is null, "WinGL command wglSetLayerPaletteEntries was not loaded");
1419         return _SetLayerPaletteEntries (hdc, iLayerPlane, iStart, cEntries, pcr);
1420     }
1421     /// ditto
1422     public BOOL ShareLists (HGLRC hrcSrvShare, HGLRC hrcSrvSource) const {
1423         assert(_ShareLists !is null, "WinGL command wglShareLists was not loaded");
1424         return _ShareLists (hrcSrvShare, hrcSrvSource);
1425     }
1426     /// ditto
1427     public BOOL SwapLayerBuffers (HDC hdc, UINT fuFlags) const {
1428         assert(_SwapLayerBuffers !is null, "WinGL command wglSwapLayerBuffers was not loaded");
1429         return _SwapLayerBuffers (hdc, fuFlags);
1430     }
1431     /// ditto
1432     public BOOL UseFontBitmaps (HDC hDC, DWORD first, DWORD count, DWORD listBase) const {
1433         assert(_UseFontBitmaps !is null, "WinGL command wglUseFontBitmaps was not loaded");
1434         return _UseFontBitmaps (hDC, first, count, listBase);
1435     }
1436     /// ditto
1437     public BOOL UseFontBitmapsA (HDC hDC, DWORD first, DWORD count, DWORD listBase) const {
1438         assert(_UseFontBitmapsA !is null, "WinGL command wglUseFontBitmapsA was not loaded");
1439         return _UseFontBitmapsA (hDC, first, count, listBase);
1440     }
1441     /// ditto
1442     public BOOL UseFontBitmapsW (HDC hDC, DWORD first, DWORD count, DWORD listBase) const {
1443         assert(_UseFontBitmapsW !is null, "WinGL command wglUseFontBitmapsW was not loaded");
1444         return _UseFontBitmapsW (hDC, first, count, listBase);
1445     }
1446     /// ditto
1447     public BOOL UseFontOutlines (HDC hDC, DWORD first, DWORD count, DWORD listBase, FLOAT deviation, FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf) const {
1448         assert(_UseFontOutlines !is null, "WinGL command wglUseFontOutlines was not loaded");
1449         return _UseFontOutlines (hDC, first, count, listBase, deviation, extrusion, format, lpgmf);
1450     }
1451     /// ditto
1452     public BOOL UseFontOutlinesA (HDC hDC, DWORD first, DWORD count, DWORD listBase, FLOAT deviation, FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf) const {
1453         assert(_UseFontOutlinesA !is null, "WinGL command wglUseFontOutlinesA was not loaded");
1454         return _UseFontOutlinesA (hDC, first, count, listBase, deviation, extrusion, format, lpgmf);
1455     }
1456     /// ditto
1457     public BOOL UseFontOutlinesW (HDC hDC, DWORD first, DWORD count, DWORD listBase, FLOAT deviation, FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf) const {
1458         assert(_UseFontOutlinesW !is null, "WinGL command wglUseFontOutlinesW was not loaded");
1459         return _UseFontOutlinesW (hDC, first, count, listBase, deviation, extrusion, format, lpgmf);
1460     }
1461 
1462     /// Commands for WGL_ARB_buffer_region
1463     public HANDLE CreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType) const {
1464         assert(_CreateBufferRegionARB !is null, "WinGL command wglCreateBufferRegionARB was not loaded");
1465         return _CreateBufferRegionARB (hDC, iLayerPlane, uType);
1466     }
1467     /// ditto
1468     public VOID DeleteBufferRegionARB (HANDLE hRegion) const {
1469         assert(_DeleteBufferRegionARB !is null, "WinGL command wglDeleteBufferRegionARB was not loaded");
1470         return _DeleteBufferRegionARB (hRegion);
1471     }
1472     /// ditto
1473     public BOOL SaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height) const {
1474         assert(_SaveBufferRegionARB !is null, "WinGL command wglSaveBufferRegionARB was not loaded");
1475         return _SaveBufferRegionARB (hRegion, x, y, width, height);
1476     }
1477     /// ditto
1478     public BOOL RestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc) const {
1479         assert(_RestoreBufferRegionARB !is null, "WinGL command wglRestoreBufferRegionARB was not loaded");
1480         return _RestoreBufferRegionARB (hRegion, x, y, width, height, xSrc, ySrc);
1481     }
1482 
1483     /// Commands for WGL_ARB_create_context
1484     public HGLRC CreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const(int)* attribList) const {
1485         assert(_CreateContextAttribsARB !is null, "WinGL command wglCreateContextAttribsARB was not loaded");
1486         return _CreateContextAttribsARB (hDC, hShareContext, attribList);
1487     }
1488 
1489     /// Commands for WGL_ARB_extensions_string
1490     public const(char)* GetExtensionsStringARB (HDC hdc) const {
1491         assert(_GetExtensionsStringARB !is null, "WinGL command wglGetExtensionsStringARB was not loaded");
1492         return _GetExtensionsStringARB (hdc);
1493     }
1494 
1495     /// Commands for WGL_ARB_make_current_read
1496     public BOOL MakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc) const {
1497         assert(_MakeContextCurrentARB !is null, "WinGL command wglMakeContextCurrentARB was not loaded");
1498         return _MakeContextCurrentARB (hDrawDC, hReadDC, hglrc);
1499     }
1500     /// ditto
1501     public HDC GetCurrentReadDCARB () const {
1502         assert(_GetCurrentReadDCARB !is null, "WinGL command wglGetCurrentReadDCARB was not loaded");
1503         return _GetCurrentReadDCARB ();
1504     }
1505 
1506     /// Commands for WGL_ARB_pbuffer
1507     public HPBUFFERARB CreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const(int)* piAttribList) const {
1508         assert(_CreatePbufferARB !is null, "WinGL command wglCreatePbufferARB was not loaded");
1509         return _CreatePbufferARB (hDC, iPixelFormat, iWidth, iHeight, piAttribList);
1510     }
1511     /// ditto
1512     public HDC GetPbufferDCARB (HPBUFFERARB hPbuffer) const {
1513         assert(_GetPbufferDCARB !is null, "WinGL command wglGetPbufferDCARB was not loaded");
1514         return _GetPbufferDCARB (hPbuffer);
1515     }
1516     /// ditto
1517     public int ReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC) const {
1518         assert(_ReleasePbufferDCARB !is null, "WinGL command wglReleasePbufferDCARB was not loaded");
1519         return _ReleasePbufferDCARB (hPbuffer, hDC);
1520     }
1521     /// ditto
1522     public BOOL DestroyPbufferARB (HPBUFFERARB hPbuffer) const {
1523         assert(_DestroyPbufferARB !is null, "WinGL command wglDestroyPbufferARB was not loaded");
1524         return _DestroyPbufferARB (hPbuffer);
1525     }
1526     /// ditto
1527     public BOOL QueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int* piValue) const {
1528         assert(_QueryPbufferARB !is null, "WinGL command wglQueryPbufferARB was not loaded");
1529         return _QueryPbufferARB (hPbuffer, iAttribute, piValue);
1530     }
1531 
1532     /// Commands for WGL_ARB_pixel_format
1533     public BOOL GetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const(int)* piAttributes, int* piValues) const {
1534         assert(_GetPixelFormatAttribivARB !is null, "WinGL command wglGetPixelFormatAttribivARB was not loaded");
1535         return _GetPixelFormatAttribivARB (hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues);
1536     }
1537     /// ditto
1538     public BOOL GetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const(int)* piAttributes, FLOAT* pfValues) const {
1539         assert(_GetPixelFormatAttribfvARB !is null, "WinGL command wglGetPixelFormatAttribfvARB was not loaded");
1540         return _GetPixelFormatAttribfvARB (hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues);
1541     }
1542     /// ditto
1543     public BOOL ChoosePixelFormatARB (HDC hdc, const(int)* piAttribIList, const(FLOAT)* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats) const {
1544         assert(_ChoosePixelFormatARB !is null, "WinGL command wglChoosePixelFormatARB was not loaded");
1545         return _ChoosePixelFormatARB (hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats);
1546     }
1547 
1548     /// Commands for WGL_ARB_render_texture
1549     public BOOL BindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer) const {
1550         assert(_BindTexImageARB !is null, "WinGL command wglBindTexImageARB was not loaded");
1551         return _BindTexImageARB (hPbuffer, iBuffer);
1552     }
1553     /// ditto
1554     public BOOL ReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer) const {
1555         assert(_ReleaseTexImageARB !is null, "WinGL command wglReleaseTexImageARB was not loaded");
1556         return _ReleaseTexImageARB (hPbuffer, iBuffer);
1557     }
1558     /// ditto
1559     public BOOL SetPbufferAttribARB (HPBUFFERARB hPbuffer, const(int)* piAttribList) const {
1560         assert(_SetPbufferAttribARB !is null, "WinGL command wglSetPbufferAttribARB was not loaded");
1561         return _SetPbufferAttribARB (hPbuffer, piAttribList);
1562     }
1563 
1564     /// Commands for WGL_3DL_stereo_control
1565     public BOOL SetStereoEmitterState3DL (HDC hDC, UINT uState) const {
1566         assert(_SetStereoEmitterState3DL !is null, "WinGL command wglSetStereoEmitterState3DL was not loaded");
1567         return _SetStereoEmitterState3DL (hDC, uState);
1568     }
1569 
1570     /// Commands for WGL_AMD_gpu_association
1571     public UINT GetGPUIDsAMD (UINT maxCount, UINT* ids) const {
1572         assert(_GetGPUIDsAMD !is null, "WinGL command wglGetGPUIDsAMD was not loaded");
1573         return _GetGPUIDsAMD (maxCount, ids);
1574     }
1575     /// ditto
1576     public INT GetGPUInfoAMD (UINT id, int property, GLenum dataType, UINT size, void* data) const {
1577         assert(_GetGPUInfoAMD !is null, "WinGL command wglGetGPUInfoAMD was not loaded");
1578         return _GetGPUInfoAMD (id, property, dataType, size, data);
1579     }
1580     /// ditto
1581     public UINT GetContextGPUIDAMD (HGLRC hglrc) const {
1582         assert(_GetContextGPUIDAMD !is null, "WinGL command wglGetContextGPUIDAMD was not loaded");
1583         return _GetContextGPUIDAMD (hglrc);
1584     }
1585     /// ditto
1586     public HGLRC CreateAssociatedContextAMD (UINT id) const {
1587         assert(_CreateAssociatedContextAMD !is null, "WinGL command wglCreateAssociatedContextAMD was not loaded");
1588         return _CreateAssociatedContextAMD (id);
1589     }
1590     /// ditto
1591     public HGLRC CreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const(int)* attribList) const {
1592         assert(_CreateAssociatedContextAttribsAMD !is null, "WinGL command wglCreateAssociatedContextAttribsAMD was not loaded");
1593         return _CreateAssociatedContextAttribsAMD (id, hShareContext, attribList);
1594     }
1595     /// ditto
1596     public BOOL DeleteAssociatedContextAMD (HGLRC hglrc) const {
1597         assert(_DeleteAssociatedContextAMD !is null, "WinGL command wglDeleteAssociatedContextAMD was not loaded");
1598         return _DeleteAssociatedContextAMD (hglrc);
1599     }
1600     /// ditto
1601     public BOOL MakeAssociatedContextCurrentAMD (HGLRC hglrc) const {
1602         assert(_MakeAssociatedContextCurrentAMD !is null, "WinGL command wglMakeAssociatedContextCurrentAMD was not loaded");
1603         return _MakeAssociatedContextCurrentAMD (hglrc);
1604     }
1605     /// ditto
1606     public HGLRC GetCurrentAssociatedContextAMD () const {
1607         assert(_GetCurrentAssociatedContextAMD !is null, "WinGL command wglGetCurrentAssociatedContextAMD was not loaded");
1608         return _GetCurrentAssociatedContextAMD ();
1609     }
1610     /// ditto
1611     public VOID BlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) const {
1612         assert(_BlitContextFramebufferAMD !is null, "WinGL command wglBlitContextFramebufferAMD was not loaded");
1613         return _BlitContextFramebufferAMD (dstCtx, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
1614     }
1615 
1616     /// Commands for WGL_EXT_display_color_table
1617     public GLboolean CreateDisplayColorTableEXT (GLushort id) const {
1618         assert(_CreateDisplayColorTableEXT !is null, "WinGL command wglCreateDisplayColorTableEXT was not loaded");
1619         return _CreateDisplayColorTableEXT (id);
1620     }
1621     /// ditto
1622     public GLboolean LoadDisplayColorTableEXT (const(GLushort)* table, GLuint length) const {
1623         assert(_LoadDisplayColorTableEXT !is null, "WinGL command wglLoadDisplayColorTableEXT was not loaded");
1624         return _LoadDisplayColorTableEXT (table, length);
1625     }
1626     /// ditto
1627     public GLboolean BindDisplayColorTableEXT (GLushort id) const {
1628         assert(_BindDisplayColorTableEXT !is null, "WinGL command wglBindDisplayColorTableEXT was not loaded");
1629         return _BindDisplayColorTableEXT (id);
1630     }
1631     /// ditto
1632     public VOID DestroyDisplayColorTableEXT (GLushort id) const {
1633         assert(_DestroyDisplayColorTableEXT !is null, "WinGL command wglDestroyDisplayColorTableEXT was not loaded");
1634         return _DestroyDisplayColorTableEXT (id);
1635     }
1636 
1637     /// Commands for WGL_EXT_extensions_string
1638     public const(char)* GetExtensionsStringEXT () const {
1639         assert(_GetExtensionsStringEXT !is null, "WinGL command wglGetExtensionsStringEXT was not loaded");
1640         return _GetExtensionsStringEXT ();
1641     }
1642 
1643     /// Commands for WGL_EXT_make_current_read
1644     public BOOL MakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc) const {
1645         assert(_MakeContextCurrentEXT !is null, "WinGL command wglMakeContextCurrentEXT was not loaded");
1646         return _MakeContextCurrentEXT (hDrawDC, hReadDC, hglrc);
1647     }
1648     /// ditto
1649     public HDC GetCurrentReadDCEXT () const {
1650         assert(_GetCurrentReadDCEXT !is null, "WinGL command wglGetCurrentReadDCEXT was not loaded");
1651         return _GetCurrentReadDCEXT ();
1652     }
1653 
1654     /// Commands for WGL_EXT_pbuffer
1655     public HPBUFFEREXT CreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const(int)* piAttribList) const {
1656         assert(_CreatePbufferEXT !is null, "WinGL command wglCreatePbufferEXT was not loaded");
1657         return _CreatePbufferEXT (hDC, iPixelFormat, iWidth, iHeight, piAttribList);
1658     }
1659     /// ditto
1660     public HDC GetPbufferDCEXT (HPBUFFEREXT hPbuffer) const {
1661         assert(_GetPbufferDCEXT !is null, "WinGL command wglGetPbufferDCEXT was not loaded");
1662         return _GetPbufferDCEXT (hPbuffer);
1663     }
1664     /// ditto
1665     public int ReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC) const {
1666         assert(_ReleasePbufferDCEXT !is null, "WinGL command wglReleasePbufferDCEXT was not loaded");
1667         return _ReleasePbufferDCEXT (hPbuffer, hDC);
1668     }
1669     /// ditto
1670     public BOOL DestroyPbufferEXT (HPBUFFEREXT hPbuffer) const {
1671         assert(_DestroyPbufferEXT !is null, "WinGL command wglDestroyPbufferEXT was not loaded");
1672         return _DestroyPbufferEXT (hPbuffer);
1673     }
1674     /// ditto
1675     public BOOL QueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int* piValue) const {
1676         assert(_QueryPbufferEXT !is null, "WinGL command wglQueryPbufferEXT was not loaded");
1677         return _QueryPbufferEXT (hPbuffer, iAttribute, piValue);
1678     }
1679 
1680     /// Commands for WGL_EXT_pixel_format
1681     public BOOL GetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, int* piValues) const {
1682         assert(_GetPixelFormatAttribivEXT !is null, "WinGL command wglGetPixelFormatAttribivEXT was not loaded");
1683         return _GetPixelFormatAttribivEXT (hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues);
1684     }
1685     /// ditto
1686     public BOOL GetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int* piAttributes, FLOAT* pfValues) const {
1687         assert(_GetPixelFormatAttribfvEXT !is null, "WinGL command wglGetPixelFormatAttribfvEXT was not loaded");
1688         return _GetPixelFormatAttribfvEXT (hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues);
1689     }
1690     /// ditto
1691     public BOOL ChoosePixelFormatEXT (HDC hdc, const(int)* piAttribIList, const(FLOAT)* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats) const {
1692         assert(_ChoosePixelFormatEXT !is null, "WinGL command wglChoosePixelFormatEXT was not loaded");
1693         return _ChoosePixelFormatEXT (hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats);
1694     }
1695 
1696     /// Commands for WGL_EXT_swap_control
1697     public BOOL SwapIntervalEXT (int interval) const {
1698         assert(_SwapIntervalEXT !is null, "WinGL command wglSwapIntervalEXT was not loaded");
1699         return _SwapIntervalEXT (interval);
1700     }
1701     /// ditto
1702     public int GetSwapIntervalEXT () const {
1703         assert(_GetSwapIntervalEXT !is null, "WinGL command wglGetSwapIntervalEXT was not loaded");
1704         return _GetSwapIntervalEXT ();
1705     }
1706 
1707     /// Commands for WGL_I3D_digital_video_control
1708     public BOOL GetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int* piValue) const {
1709         assert(_GetDigitalVideoParametersI3D !is null, "WinGL command wglGetDigitalVideoParametersI3D was not loaded");
1710         return _GetDigitalVideoParametersI3D (hDC, iAttribute, piValue);
1711     }
1712     /// ditto
1713     public BOOL SetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const(int)* piValue) const {
1714         assert(_SetDigitalVideoParametersI3D !is null, "WinGL command wglSetDigitalVideoParametersI3D was not loaded");
1715         return _SetDigitalVideoParametersI3D (hDC, iAttribute, piValue);
1716     }
1717 
1718     /// Commands for WGL_I3D_gamma
1719     public BOOL GetGammaTableParametersI3D (HDC hDC, int iAttribute, int* piValue) const {
1720         assert(_GetGammaTableParametersI3D !is null, "WinGL command wglGetGammaTableParametersI3D was not loaded");
1721         return _GetGammaTableParametersI3D (hDC, iAttribute, piValue);
1722     }
1723     /// ditto
1724     public BOOL SetGammaTableParametersI3D (HDC hDC, int iAttribute, const(int)* piValue) const {
1725         assert(_SetGammaTableParametersI3D !is null, "WinGL command wglSetGammaTableParametersI3D was not loaded");
1726         return _SetGammaTableParametersI3D (hDC, iAttribute, piValue);
1727     }
1728     /// ditto
1729     public BOOL GetGammaTableI3D (HDC hDC, int iEntries, USHORT* puRed, USHORT* puGreen, USHORT* puBlue) const {
1730         assert(_GetGammaTableI3D !is null, "WinGL command wglGetGammaTableI3D was not loaded");
1731         return _GetGammaTableI3D (hDC, iEntries, puRed, puGreen, puBlue);
1732     }
1733     /// ditto
1734     public BOOL SetGammaTableI3D (HDC hDC, int iEntries, const(USHORT)* puRed, const(USHORT)* puGreen, const(USHORT)* puBlue) const {
1735         assert(_SetGammaTableI3D !is null, "WinGL command wglSetGammaTableI3D was not loaded");
1736         return _SetGammaTableI3D (hDC, iEntries, puRed, puGreen, puBlue);
1737     }
1738 
1739     /// Commands for WGL_I3D_genlock
1740     public BOOL EnableGenlockI3D (HDC hDC) const {
1741         assert(_EnableGenlockI3D !is null, "WinGL command wglEnableGenlockI3D was not loaded");
1742         return _EnableGenlockI3D (hDC);
1743     }
1744     /// ditto
1745     public BOOL DisableGenlockI3D (HDC hDC) const {
1746         assert(_DisableGenlockI3D !is null, "WinGL command wglDisableGenlockI3D was not loaded");
1747         return _DisableGenlockI3D (hDC);
1748     }
1749     /// ditto
1750     public BOOL IsEnabledGenlockI3D (HDC hDC, BOOL* pFlag) const {
1751         assert(_IsEnabledGenlockI3D !is null, "WinGL command wglIsEnabledGenlockI3D was not loaded");
1752         return _IsEnabledGenlockI3D (hDC, pFlag);
1753     }
1754     /// ditto
1755     public BOOL GenlockSourceI3D (HDC hDC, UINT uSource) const {
1756         assert(_GenlockSourceI3D !is null, "WinGL command wglGenlockSourceI3D was not loaded");
1757         return _GenlockSourceI3D (hDC, uSource);
1758     }
1759     /// ditto
1760     public BOOL GetGenlockSourceI3D (HDC hDC, UINT* uSource) const {
1761         assert(_GetGenlockSourceI3D !is null, "WinGL command wglGetGenlockSourceI3D was not loaded");
1762         return _GetGenlockSourceI3D (hDC, uSource);
1763     }
1764     /// ditto
1765     public BOOL GenlockSourceEdgeI3D (HDC hDC, UINT uEdge) const {
1766         assert(_GenlockSourceEdgeI3D !is null, "WinGL command wglGenlockSourceEdgeI3D was not loaded");
1767         return _GenlockSourceEdgeI3D (hDC, uEdge);
1768     }
1769     /// ditto
1770     public BOOL GetGenlockSourceEdgeI3D (HDC hDC, UINT* uEdge) const {
1771         assert(_GetGenlockSourceEdgeI3D !is null, "WinGL command wglGetGenlockSourceEdgeI3D was not loaded");
1772         return _GetGenlockSourceEdgeI3D (hDC, uEdge);
1773     }
1774     /// ditto
1775     public BOOL GenlockSampleRateI3D (HDC hDC, UINT uRate) const {
1776         assert(_GenlockSampleRateI3D !is null, "WinGL command wglGenlockSampleRateI3D was not loaded");
1777         return _GenlockSampleRateI3D (hDC, uRate);
1778     }
1779     /// ditto
1780     public BOOL GetGenlockSampleRateI3D (HDC hDC, UINT* uRate) const {
1781         assert(_GetGenlockSampleRateI3D !is null, "WinGL command wglGetGenlockSampleRateI3D was not loaded");
1782         return _GetGenlockSampleRateI3D (hDC, uRate);
1783     }
1784     /// ditto
1785     public BOOL GenlockSourceDelayI3D (HDC hDC, UINT uDelay) const {
1786         assert(_GenlockSourceDelayI3D !is null, "WinGL command wglGenlockSourceDelayI3D was not loaded");
1787         return _GenlockSourceDelayI3D (hDC, uDelay);
1788     }
1789     /// ditto
1790     public BOOL GetGenlockSourceDelayI3D (HDC hDC, UINT* uDelay) const {
1791         assert(_GetGenlockSourceDelayI3D !is null, "WinGL command wglGetGenlockSourceDelayI3D was not loaded");
1792         return _GetGenlockSourceDelayI3D (hDC, uDelay);
1793     }
1794     /// ditto
1795     public BOOL QueryGenlockMaxSourceDelayI3D (HDC hDC, UINT* uMaxLineDelay, UINT* uMaxPixelDelay) const {
1796         assert(_QueryGenlockMaxSourceDelayI3D !is null, "WinGL command wglQueryGenlockMaxSourceDelayI3D was not loaded");
1797         return _QueryGenlockMaxSourceDelayI3D (hDC, uMaxLineDelay, uMaxPixelDelay);
1798     }
1799 
1800     /// Commands for WGL_I3D_image_buffer
1801     public LPVOID CreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags) const {
1802         assert(_CreateImageBufferI3D !is null, "WinGL command wglCreateImageBufferI3D was not loaded");
1803         return _CreateImageBufferI3D (hDC, dwSize, uFlags);
1804     }
1805     /// ditto
1806     public BOOL DestroyImageBufferI3D (HDC hDC, LPVOID pAddress) const {
1807         assert(_DestroyImageBufferI3D !is null, "WinGL command wglDestroyImageBufferI3D was not loaded");
1808         return _DestroyImageBufferI3D (hDC, pAddress);
1809     }
1810     /// ditto
1811     public BOOL AssociateImageBufferEventsI3D (HDC hDC, const(HANDLE)* pEvent, const(LPVOID)* pAddress, const(DWORD)* pSize, UINT count) const {
1812         assert(_AssociateImageBufferEventsI3D !is null, "WinGL command wglAssociateImageBufferEventsI3D was not loaded");
1813         return _AssociateImageBufferEventsI3D (hDC, pEvent, pAddress, pSize, count);
1814     }
1815     /// ditto
1816     public BOOL ReleaseImageBufferEventsI3D (HDC hDC, const(LPVOID)* pAddress, UINT count) const {
1817         assert(_ReleaseImageBufferEventsI3D !is null, "WinGL command wglReleaseImageBufferEventsI3D was not loaded");
1818         return _ReleaseImageBufferEventsI3D (hDC, pAddress, count);
1819     }
1820 
1821     /// Commands for WGL_I3D_swap_frame_lock
1822     public BOOL EnableFrameLockI3D () const {
1823         assert(_EnableFrameLockI3D !is null, "WinGL command wglEnableFrameLockI3D was not loaded");
1824         return _EnableFrameLockI3D ();
1825     }
1826     /// ditto
1827     public BOOL DisableFrameLockI3D () const {
1828         assert(_DisableFrameLockI3D !is null, "WinGL command wglDisableFrameLockI3D was not loaded");
1829         return _DisableFrameLockI3D ();
1830     }
1831     /// ditto
1832     public BOOL IsEnabledFrameLockI3D (BOOL* pFlag) const {
1833         assert(_IsEnabledFrameLockI3D !is null, "WinGL command wglIsEnabledFrameLockI3D was not loaded");
1834         return _IsEnabledFrameLockI3D (pFlag);
1835     }
1836     /// ditto
1837     public BOOL QueryFrameLockMasterI3D (BOOL* pFlag) const {
1838         assert(_QueryFrameLockMasterI3D !is null, "WinGL command wglQueryFrameLockMasterI3D was not loaded");
1839         return _QueryFrameLockMasterI3D (pFlag);
1840     }
1841 
1842     /// Commands for WGL_I3D_swap_frame_usage
1843     public BOOL GetFrameUsageI3D (float* pUsage) const {
1844         assert(_GetFrameUsageI3D !is null, "WinGL command wglGetFrameUsageI3D was not loaded");
1845         return _GetFrameUsageI3D (pUsage);
1846     }
1847     /// ditto
1848     public BOOL BeginFrameTrackingI3D () const {
1849         assert(_BeginFrameTrackingI3D !is null, "WinGL command wglBeginFrameTrackingI3D was not loaded");
1850         return _BeginFrameTrackingI3D ();
1851     }
1852     /// ditto
1853     public BOOL EndFrameTrackingI3D () const {
1854         assert(_EndFrameTrackingI3D !is null, "WinGL command wglEndFrameTrackingI3D was not loaded");
1855         return _EndFrameTrackingI3D ();
1856     }
1857     /// ditto
1858     public BOOL QueryFrameTrackingI3D (DWORD* pFrameCount, DWORD* pMissedFrames, float* pLastMissedUsage) const {
1859         assert(_QueryFrameTrackingI3D !is null, "WinGL command wglQueryFrameTrackingI3D was not loaded");
1860         return _QueryFrameTrackingI3D (pFrameCount, pMissedFrames, pLastMissedUsage);
1861     }
1862 
1863     /// Commands for WGL_NV_DX_interop
1864     public BOOL DXSetResourceShareHandleNV (void* dxObject, HANDLE shareHandle) const {
1865         assert(_DXSetResourceShareHandleNV !is null, "WinGL command wglDXSetResourceShareHandleNV was not loaded");
1866         return _DXSetResourceShareHandleNV (dxObject, shareHandle);
1867     }
1868     /// ditto
1869     public HANDLE DXOpenDeviceNV (void* dxDevice) const {
1870         assert(_DXOpenDeviceNV !is null, "WinGL command wglDXOpenDeviceNV was not loaded");
1871         return _DXOpenDeviceNV (dxDevice);
1872     }
1873     /// ditto
1874     public BOOL DXCloseDeviceNV (HANDLE hDevice) const {
1875         assert(_DXCloseDeviceNV !is null, "WinGL command wglDXCloseDeviceNV was not loaded");
1876         return _DXCloseDeviceNV (hDevice);
1877     }
1878     /// ditto
1879     public HANDLE DXRegisterObjectNV (HANDLE hDevice, void* dxObject, GLuint name, GLenum type, GLenum access) const {
1880         assert(_DXRegisterObjectNV !is null, "WinGL command wglDXRegisterObjectNV was not loaded");
1881         return _DXRegisterObjectNV (hDevice, dxObject, name, type, access);
1882     }
1883     /// ditto
1884     public BOOL DXUnregisterObjectNV (HANDLE hDevice, HANDLE hObject) const {
1885         assert(_DXUnregisterObjectNV !is null, "WinGL command wglDXUnregisterObjectNV was not loaded");
1886         return _DXUnregisterObjectNV (hDevice, hObject);
1887     }
1888     /// ditto
1889     public BOOL DXObjectAccessNV (HANDLE hObject, GLenum access) const {
1890         assert(_DXObjectAccessNV !is null, "WinGL command wglDXObjectAccessNV was not loaded");
1891         return _DXObjectAccessNV (hObject, access);
1892     }
1893     /// ditto
1894     public BOOL DXLockObjectsNV (HANDLE hDevice, GLint count, HANDLE* hObjects) const {
1895         assert(_DXLockObjectsNV !is null, "WinGL command wglDXLockObjectsNV was not loaded");
1896         return _DXLockObjectsNV (hDevice, count, hObjects);
1897     }
1898     /// ditto
1899     public BOOL DXUnlockObjectsNV (HANDLE hDevice, GLint count, HANDLE* hObjects) const {
1900         assert(_DXUnlockObjectsNV !is null, "WinGL command wglDXUnlockObjectsNV was not loaded");
1901         return _DXUnlockObjectsNV (hDevice, count, hObjects);
1902     }
1903 
1904     /// Commands for WGL_NV_copy_image
1905     public BOOL CopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) const {
1906         assert(_CopyImageSubDataNV !is null, "WinGL command wglCopyImageSubDataNV was not loaded");
1907         return _CopyImageSubDataNV (hSrcRC, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, hDstRC, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth);
1908     }
1909 
1910     /// Commands for WGL_NV_delay_before_swap
1911     public BOOL DelayBeforeSwapNV (HDC hDC, GLfloat seconds) const {
1912         assert(_DelayBeforeSwapNV !is null, "WinGL command wglDelayBeforeSwapNV was not loaded");
1913         return _DelayBeforeSwapNV (hDC, seconds);
1914     }
1915 
1916     /// Commands for WGL_NV_gpu_affinity
1917     public BOOL EnumGpusNV (UINT iGpuIndex, HGPUNV* phGpu) const {
1918         assert(_EnumGpusNV !is null, "WinGL command wglEnumGpusNV was not loaded");
1919         return _EnumGpusNV (iGpuIndex, phGpu);
1920     }
1921     /// ditto
1922     public BOOL EnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice) const {
1923         assert(_EnumGpuDevicesNV !is null, "WinGL command wglEnumGpuDevicesNV was not loaded");
1924         return _EnumGpuDevicesNV (hGpu, iDeviceIndex, lpGpuDevice);
1925     }
1926     /// ditto
1927     public HDC CreateAffinityDCNV (const(HGPUNV)* phGpuList) const {
1928         assert(_CreateAffinityDCNV !is null, "WinGL command wglCreateAffinityDCNV was not loaded");
1929         return _CreateAffinityDCNV (phGpuList);
1930     }
1931     /// ditto
1932     public BOOL EnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV* hGpu) const {
1933         assert(_EnumGpusFromAffinityDCNV !is null, "WinGL command wglEnumGpusFromAffinityDCNV was not loaded");
1934         return _EnumGpusFromAffinityDCNV (hAffinityDC, iGpuIndex, hGpu);
1935     }
1936     /// ditto
1937     public BOOL DeleteDCNV (HDC hdc) const {
1938         assert(_DeleteDCNV !is null, "WinGL command wglDeleteDCNV was not loaded");
1939         return _DeleteDCNV (hdc);
1940     }
1941 
1942     /// Commands for WGL_NV_present_video
1943     public int EnumerateVideoDevicesNV (HDC hDC, HVIDEOOUTPUTDEVICENV* phDeviceList) const {
1944         assert(_EnumerateVideoDevicesNV !is null, "WinGL command wglEnumerateVideoDevicesNV was not loaded");
1945         return _EnumerateVideoDevicesNV (hDC, phDeviceList);
1946     }
1947     /// ditto
1948     public BOOL BindVideoDeviceNV (HDC hDC, uint uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const(int)* piAttribList) const {
1949         assert(_BindVideoDeviceNV !is null, "WinGL command wglBindVideoDeviceNV was not loaded");
1950         return _BindVideoDeviceNV (hDC, uVideoSlot, hVideoDevice, piAttribList);
1951     }
1952     /// ditto
1953     public BOOL QueryCurrentContextNV (int iAttribute, int* piValue) const {
1954         assert(_QueryCurrentContextNV !is null, "WinGL command wglQueryCurrentContextNV was not loaded");
1955         return _QueryCurrentContextNV (iAttribute, piValue);
1956     }
1957 
1958     /// Commands for WGL_NV_swap_group
1959     public BOOL JoinSwapGroupNV (HDC hDC, GLuint group) const {
1960         assert(_JoinSwapGroupNV !is null, "WinGL command wglJoinSwapGroupNV was not loaded");
1961         return _JoinSwapGroupNV (hDC, group);
1962     }
1963     /// ditto
1964     public BOOL BindSwapBarrierNV (GLuint group, GLuint barrier) const {
1965         assert(_BindSwapBarrierNV !is null, "WinGL command wglBindSwapBarrierNV was not loaded");
1966         return _BindSwapBarrierNV (group, barrier);
1967     }
1968     /// ditto
1969     public BOOL QuerySwapGroupNV (HDC hDC, GLuint* group, GLuint* barrier) const {
1970         assert(_QuerySwapGroupNV !is null, "WinGL command wglQuerySwapGroupNV was not loaded");
1971         return _QuerySwapGroupNV (hDC, group, barrier);
1972     }
1973     /// ditto
1974     public BOOL QueryMaxSwapGroupsNV (HDC hDC, GLuint* maxGroups, GLuint* maxBarriers) const {
1975         assert(_QueryMaxSwapGroupsNV !is null, "WinGL command wglQueryMaxSwapGroupsNV was not loaded");
1976         return _QueryMaxSwapGroupsNV (hDC, maxGroups, maxBarriers);
1977     }
1978     /// ditto
1979     public BOOL QueryFrameCountNV (HDC hDC, GLuint* count) const {
1980         assert(_QueryFrameCountNV !is null, "WinGL command wglQueryFrameCountNV was not loaded");
1981         return _QueryFrameCountNV (hDC, count);
1982     }
1983     /// ditto
1984     public BOOL ResetFrameCountNV (HDC hDC) const {
1985         assert(_ResetFrameCountNV !is null, "WinGL command wglResetFrameCountNV was not loaded");
1986         return _ResetFrameCountNV (hDC);
1987     }
1988 
1989     /// Commands for WGL_NV_vertex_array_range
1990     public void * AllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority) const {
1991         assert(_AllocateMemoryNV !is null, "WinGL command wglAllocateMemoryNV was not loaded");
1992         return _AllocateMemoryNV (size, readfreq, writefreq, priority);
1993     }
1994     /// ditto
1995     public void FreeMemoryNV (void* pointer) const {
1996         assert(_FreeMemoryNV !is null, "WinGL command wglFreeMemoryNV was not loaded");
1997         return _FreeMemoryNV (pointer);
1998     }
1999 
2000     /// Commands for WGL_NV_video_capture
2001     public BOOL BindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice) const {
2002         assert(_BindVideoCaptureDeviceNV !is null, "WinGL command wglBindVideoCaptureDeviceNV was not loaded");
2003         return _BindVideoCaptureDeviceNV (uVideoSlot, hDevice);
2004     }
2005     /// ditto
2006     public UINT EnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV* phDeviceList) const {
2007         assert(_EnumerateVideoCaptureDevicesNV !is null, "WinGL command wglEnumerateVideoCaptureDevicesNV was not loaded");
2008         return _EnumerateVideoCaptureDevicesNV (hDc, phDeviceList);
2009     }
2010     /// ditto
2011     public BOOL LockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice) const {
2012         assert(_LockVideoCaptureDeviceNV !is null, "WinGL command wglLockVideoCaptureDeviceNV was not loaded");
2013         return _LockVideoCaptureDeviceNV (hDc, hDevice);
2014     }
2015     /// ditto
2016     public BOOL QueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int* piValue) const {
2017         assert(_QueryVideoCaptureDeviceNV !is null, "WinGL command wglQueryVideoCaptureDeviceNV was not loaded");
2018         return _QueryVideoCaptureDeviceNV (hDc, hDevice, iAttribute, piValue);
2019     }
2020     /// ditto
2021     public BOOL ReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice) const {
2022         assert(_ReleaseVideoCaptureDeviceNV !is null, "WinGL command wglReleaseVideoCaptureDeviceNV was not loaded");
2023         return _ReleaseVideoCaptureDeviceNV (hDc, hDevice);
2024     }
2025 
2026     /// Commands for WGL_NV_video_output
2027     public BOOL GetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV* hVideoDevice) const {
2028         assert(_GetVideoDeviceNV !is null, "WinGL command wglGetVideoDeviceNV was not loaded");
2029         return _GetVideoDeviceNV (hDC, numDevices, hVideoDevice);
2030     }
2031     /// ditto
2032     public BOOL ReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice) const {
2033         assert(_ReleaseVideoDeviceNV !is null, "WinGL command wglReleaseVideoDeviceNV was not loaded");
2034         return _ReleaseVideoDeviceNV (hVideoDevice);
2035     }
2036     /// ditto
2037     public BOOL BindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer) const {
2038         assert(_BindVideoImageNV !is null, "WinGL command wglBindVideoImageNV was not loaded");
2039         return _BindVideoImageNV (hVideoDevice, hPbuffer, iVideoBuffer);
2040     }
2041     /// ditto
2042     public BOOL ReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer) const {
2043         assert(_ReleaseVideoImageNV !is null, "WinGL command wglReleaseVideoImageNV was not loaded");
2044         return _ReleaseVideoImageNV (hPbuffer, iVideoBuffer);
2045     }
2046     /// ditto
2047     public BOOL SendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, c_ulong* pulCounterPbuffer, BOOL bBlock) const {
2048         assert(_SendPbufferToVideoNV !is null, "WinGL command wglSendPbufferToVideoNV was not loaded");
2049         return _SendPbufferToVideoNV (hPbuffer, iBufferType, pulCounterPbuffer, bBlock);
2050     }
2051     /// ditto
2052     public BOOL GetVideoInfoNV (HPVIDEODEV hpVideoDevice, c_ulong* pulCounterOutputPbuffer, c_ulong* pulCounterOutputVideo) const {
2053         assert(_GetVideoInfoNV !is null, "WinGL command wglGetVideoInfoNV was not loaded");
2054         return _GetVideoInfoNV (hpVideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo);
2055     }
2056 
2057     /// Commands for WGL_OML_sync_control
2058     public BOOL GetSyncValuesOML (HDC hdc, INT64* ust, INT64* msc, INT64* sbc) const {
2059         assert(_GetSyncValuesOML !is null, "WinGL command wglGetSyncValuesOML was not loaded");
2060         return _GetSyncValuesOML (hdc, ust, msc, sbc);
2061     }
2062     /// ditto
2063     public BOOL GetMscRateOML (HDC hdc, INT32* numerator, INT32* denominator) const {
2064         assert(_GetMscRateOML !is null, "WinGL command wglGetMscRateOML was not loaded");
2065         return _GetMscRateOML (hdc, numerator, denominator);
2066     }
2067     /// ditto
2068     public INT64 SwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder) const {
2069         assert(_SwapBuffersMscOML !is null, "WinGL command wglSwapBuffersMscOML was not loaded");
2070         return _SwapBuffersMscOML (hdc, target_msc, divisor, remainder);
2071     }
2072     /// ditto
2073     public INT64 SwapLayerBuffersMscOML (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder) const {
2074         assert(_SwapLayerBuffersMscOML !is null, "WinGL command wglSwapLayerBuffersMscOML was not loaded");
2075         return _SwapLayerBuffersMscOML (hdc, fuPlanes, target_msc, divisor, remainder);
2076     }
2077     /// ditto
2078     public BOOL WaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64* ust, INT64* msc, INT64* sbc) const {
2079         assert(_WaitForMscOML !is null, "WinGL command wglWaitForMscOML was not loaded");
2080         return _WaitForMscOML (hdc, target_msc, divisor, remainder, ust, msc, sbc);
2081     }
2082     /// ditto
2083     public BOOL WaitForSbcOML (HDC hdc, INT64 target_sbc, INT64* ust, INT64* msc, INT64* sbc) const {
2084         assert(_WaitForSbcOML !is null, "WinGL command wglWaitForSbcOML was not loaded");
2085         return _WaitForSbcOML (hdc, target_sbc, ust, msc, sbc);
2086     }
2087 
2088     // WGL_VERSION_1_0
2089     private PFN_wglCopyContext _CopyContext;
2090     private PFN_wglCreateContext _CreateContext;
2091     private PFN_wglCreateLayerContext _CreateLayerContext;
2092     private PFN_wglDeleteContext _DeleteContext;
2093     private PFN_wglDescribeLayerPlane _DescribeLayerPlane;
2094     private PFN_wglGetCurrentContext _GetCurrentContext;
2095     private PFN_wglGetCurrentDC _GetCurrentDC;
2096     private PFN_wglGetLayerPaletteEntries _GetLayerPaletteEntries;
2097     private PFN_wglGetProcAddress _GetProcAddress;
2098     private PFN_wglMakeCurrent _MakeCurrent;
2099     private PFN_wglRealizeLayerPalette _RealizeLayerPalette;
2100     private PFN_wglSetLayerPaletteEntries _SetLayerPaletteEntries;
2101     private PFN_wglShareLists _ShareLists;
2102     private PFN_wglSwapLayerBuffers _SwapLayerBuffers;
2103     private PFN_wglUseFontBitmaps _UseFontBitmaps;
2104     private PFN_wglUseFontBitmapsA _UseFontBitmapsA;
2105     private PFN_wglUseFontBitmapsW _UseFontBitmapsW;
2106     private PFN_wglUseFontOutlines _UseFontOutlines;
2107     private PFN_wglUseFontOutlinesA _UseFontOutlinesA;
2108     private PFN_wglUseFontOutlinesW _UseFontOutlinesW;
2109 
2110     // WGL_ARB_buffer_region,
2111     private PFN_wglCreateBufferRegionARB _CreateBufferRegionARB;
2112     private PFN_wglDeleteBufferRegionARB _DeleteBufferRegionARB;
2113     private PFN_wglSaveBufferRegionARB _SaveBufferRegionARB;
2114     private PFN_wglRestoreBufferRegionARB _RestoreBufferRegionARB;
2115 
2116     // WGL_ARB_create_context,
2117     private PFN_wglCreateContextAttribsARB _CreateContextAttribsARB;
2118 
2119     // WGL_ARB_extensions_string,
2120     private PFN_wglGetExtensionsStringARB _GetExtensionsStringARB;
2121 
2122     // WGL_ARB_make_current_read,
2123     private PFN_wglMakeContextCurrentARB _MakeContextCurrentARB;
2124     private PFN_wglGetCurrentReadDCARB _GetCurrentReadDCARB;
2125 
2126     // WGL_ARB_pbuffer,
2127     private PFN_wglCreatePbufferARB _CreatePbufferARB;
2128     private PFN_wglGetPbufferDCARB _GetPbufferDCARB;
2129     private PFN_wglReleasePbufferDCARB _ReleasePbufferDCARB;
2130     private PFN_wglDestroyPbufferARB _DestroyPbufferARB;
2131     private PFN_wglQueryPbufferARB _QueryPbufferARB;
2132 
2133     // WGL_ARB_pixel_format,
2134     private PFN_wglGetPixelFormatAttribivARB _GetPixelFormatAttribivARB;
2135     private PFN_wglGetPixelFormatAttribfvARB _GetPixelFormatAttribfvARB;
2136     private PFN_wglChoosePixelFormatARB _ChoosePixelFormatARB;
2137 
2138     // WGL_ARB_render_texture,
2139     private PFN_wglBindTexImageARB _BindTexImageARB;
2140     private PFN_wglReleaseTexImageARB _ReleaseTexImageARB;
2141     private PFN_wglSetPbufferAttribARB _SetPbufferAttribARB;
2142 
2143     // WGL_3DL_stereo_control,
2144     private PFN_wglSetStereoEmitterState3DL _SetStereoEmitterState3DL;
2145 
2146     // WGL_AMD_gpu_association,
2147     private PFN_wglGetGPUIDsAMD _GetGPUIDsAMD;
2148     private PFN_wglGetGPUInfoAMD _GetGPUInfoAMD;
2149     private PFN_wglGetContextGPUIDAMD _GetContextGPUIDAMD;
2150     private PFN_wglCreateAssociatedContextAMD _CreateAssociatedContextAMD;
2151     private PFN_wglCreateAssociatedContextAttribsAMD _CreateAssociatedContextAttribsAMD;
2152     private PFN_wglDeleteAssociatedContextAMD _DeleteAssociatedContextAMD;
2153     private PFN_wglMakeAssociatedContextCurrentAMD _MakeAssociatedContextCurrentAMD;
2154     private PFN_wglGetCurrentAssociatedContextAMD _GetCurrentAssociatedContextAMD;
2155     private PFN_wglBlitContextFramebufferAMD _BlitContextFramebufferAMD;
2156 
2157     // WGL_EXT_display_color_table,
2158     private PFN_wglCreateDisplayColorTableEXT _CreateDisplayColorTableEXT;
2159     private PFN_wglLoadDisplayColorTableEXT _LoadDisplayColorTableEXT;
2160     private PFN_wglBindDisplayColorTableEXT _BindDisplayColorTableEXT;
2161     private PFN_wglDestroyDisplayColorTableEXT _DestroyDisplayColorTableEXT;
2162 
2163     // WGL_EXT_extensions_string,
2164     private PFN_wglGetExtensionsStringEXT _GetExtensionsStringEXT;
2165 
2166     // WGL_EXT_make_current_read,
2167     private PFN_wglMakeContextCurrentEXT _MakeContextCurrentEXT;
2168     private PFN_wglGetCurrentReadDCEXT _GetCurrentReadDCEXT;
2169 
2170     // WGL_EXT_pbuffer,
2171     private PFN_wglCreatePbufferEXT _CreatePbufferEXT;
2172     private PFN_wglGetPbufferDCEXT _GetPbufferDCEXT;
2173     private PFN_wglReleasePbufferDCEXT _ReleasePbufferDCEXT;
2174     private PFN_wglDestroyPbufferEXT _DestroyPbufferEXT;
2175     private PFN_wglQueryPbufferEXT _QueryPbufferEXT;
2176 
2177     // WGL_EXT_pixel_format,
2178     private PFN_wglGetPixelFormatAttribivEXT _GetPixelFormatAttribivEXT;
2179     private PFN_wglGetPixelFormatAttribfvEXT _GetPixelFormatAttribfvEXT;
2180     private PFN_wglChoosePixelFormatEXT _ChoosePixelFormatEXT;
2181 
2182     // WGL_EXT_swap_control,
2183     private PFN_wglSwapIntervalEXT _SwapIntervalEXT;
2184     private PFN_wglGetSwapIntervalEXT _GetSwapIntervalEXT;
2185 
2186     // WGL_I3D_digital_video_control,
2187     private PFN_wglGetDigitalVideoParametersI3D _GetDigitalVideoParametersI3D;
2188     private PFN_wglSetDigitalVideoParametersI3D _SetDigitalVideoParametersI3D;
2189 
2190     // WGL_I3D_gamma,
2191     private PFN_wglGetGammaTableParametersI3D _GetGammaTableParametersI3D;
2192     private PFN_wglSetGammaTableParametersI3D _SetGammaTableParametersI3D;
2193     private PFN_wglGetGammaTableI3D _GetGammaTableI3D;
2194     private PFN_wglSetGammaTableI3D _SetGammaTableI3D;
2195 
2196     // WGL_I3D_genlock,
2197     private PFN_wglEnableGenlockI3D _EnableGenlockI3D;
2198     private PFN_wglDisableGenlockI3D _DisableGenlockI3D;
2199     private PFN_wglIsEnabledGenlockI3D _IsEnabledGenlockI3D;
2200     private PFN_wglGenlockSourceI3D _GenlockSourceI3D;
2201     private PFN_wglGetGenlockSourceI3D _GetGenlockSourceI3D;
2202     private PFN_wglGenlockSourceEdgeI3D _GenlockSourceEdgeI3D;
2203     private PFN_wglGetGenlockSourceEdgeI3D _GetGenlockSourceEdgeI3D;
2204     private PFN_wglGenlockSampleRateI3D _GenlockSampleRateI3D;
2205     private PFN_wglGetGenlockSampleRateI3D _GetGenlockSampleRateI3D;
2206     private PFN_wglGenlockSourceDelayI3D _GenlockSourceDelayI3D;
2207     private PFN_wglGetGenlockSourceDelayI3D _GetGenlockSourceDelayI3D;
2208     private PFN_wglQueryGenlockMaxSourceDelayI3D _QueryGenlockMaxSourceDelayI3D;
2209 
2210     // WGL_I3D_image_buffer,
2211     private PFN_wglCreateImageBufferI3D _CreateImageBufferI3D;
2212     private PFN_wglDestroyImageBufferI3D _DestroyImageBufferI3D;
2213     private PFN_wglAssociateImageBufferEventsI3D _AssociateImageBufferEventsI3D;
2214     private PFN_wglReleaseImageBufferEventsI3D _ReleaseImageBufferEventsI3D;
2215 
2216     // WGL_I3D_swap_frame_lock,
2217     private PFN_wglEnableFrameLockI3D _EnableFrameLockI3D;
2218     private PFN_wglDisableFrameLockI3D _DisableFrameLockI3D;
2219     private PFN_wglIsEnabledFrameLockI3D _IsEnabledFrameLockI3D;
2220     private PFN_wglQueryFrameLockMasterI3D _QueryFrameLockMasterI3D;
2221 
2222     // WGL_I3D_swap_frame_usage,
2223     private PFN_wglGetFrameUsageI3D _GetFrameUsageI3D;
2224     private PFN_wglBeginFrameTrackingI3D _BeginFrameTrackingI3D;
2225     private PFN_wglEndFrameTrackingI3D _EndFrameTrackingI3D;
2226     private PFN_wglQueryFrameTrackingI3D _QueryFrameTrackingI3D;
2227 
2228     // WGL_NV_DX_interop,
2229     private PFN_wglDXSetResourceShareHandleNV _DXSetResourceShareHandleNV;
2230     private PFN_wglDXOpenDeviceNV _DXOpenDeviceNV;
2231     private PFN_wglDXCloseDeviceNV _DXCloseDeviceNV;
2232     private PFN_wglDXRegisterObjectNV _DXRegisterObjectNV;
2233     private PFN_wglDXUnregisterObjectNV _DXUnregisterObjectNV;
2234     private PFN_wglDXObjectAccessNV _DXObjectAccessNV;
2235     private PFN_wglDXLockObjectsNV _DXLockObjectsNV;
2236     private PFN_wglDXUnlockObjectsNV _DXUnlockObjectsNV;
2237 
2238     // WGL_NV_copy_image,
2239     private PFN_wglCopyImageSubDataNV _CopyImageSubDataNV;
2240 
2241     // WGL_NV_delay_before_swap,
2242     private PFN_wglDelayBeforeSwapNV _DelayBeforeSwapNV;
2243 
2244     // WGL_NV_gpu_affinity,
2245     private PFN_wglEnumGpusNV _EnumGpusNV;
2246     private PFN_wglEnumGpuDevicesNV _EnumGpuDevicesNV;
2247     private PFN_wglCreateAffinityDCNV _CreateAffinityDCNV;
2248     private PFN_wglEnumGpusFromAffinityDCNV _EnumGpusFromAffinityDCNV;
2249     private PFN_wglDeleteDCNV _DeleteDCNV;
2250 
2251     // WGL_NV_present_video,
2252     private PFN_wglEnumerateVideoDevicesNV _EnumerateVideoDevicesNV;
2253     private PFN_wglBindVideoDeviceNV _BindVideoDeviceNV;
2254     private PFN_wglQueryCurrentContextNV _QueryCurrentContextNV;
2255 
2256     // WGL_NV_swap_group,
2257     private PFN_wglJoinSwapGroupNV _JoinSwapGroupNV;
2258     private PFN_wglBindSwapBarrierNV _BindSwapBarrierNV;
2259     private PFN_wglQuerySwapGroupNV _QuerySwapGroupNV;
2260     private PFN_wglQueryMaxSwapGroupsNV _QueryMaxSwapGroupsNV;
2261     private PFN_wglQueryFrameCountNV _QueryFrameCountNV;
2262     private PFN_wglResetFrameCountNV _ResetFrameCountNV;
2263 
2264     // WGL_NV_vertex_array_range,
2265     private PFN_wglAllocateMemoryNV _AllocateMemoryNV;
2266     private PFN_wglFreeMemoryNV _FreeMemoryNV;
2267 
2268     // WGL_NV_video_capture,
2269     private PFN_wglBindVideoCaptureDeviceNV _BindVideoCaptureDeviceNV;
2270     private PFN_wglEnumerateVideoCaptureDevicesNV _EnumerateVideoCaptureDevicesNV;
2271     private PFN_wglLockVideoCaptureDeviceNV _LockVideoCaptureDeviceNV;
2272     private PFN_wglQueryVideoCaptureDeviceNV _QueryVideoCaptureDeviceNV;
2273     private PFN_wglReleaseVideoCaptureDeviceNV _ReleaseVideoCaptureDeviceNV;
2274 
2275     // WGL_NV_video_output,
2276     private PFN_wglGetVideoDeviceNV _GetVideoDeviceNV;
2277     private PFN_wglReleaseVideoDeviceNV _ReleaseVideoDeviceNV;
2278     private PFN_wglBindVideoImageNV _BindVideoImageNV;
2279     private PFN_wglReleaseVideoImageNV _ReleaseVideoImageNV;
2280     private PFN_wglSendPbufferToVideoNV _SendPbufferToVideoNV;
2281     private PFN_wglGetVideoInfoNV _GetVideoInfoNV;
2282 
2283     // WGL_OML_sync_control,
2284     private PFN_wglGetSyncValuesOML _GetSyncValuesOML;
2285     private PFN_wglGetMscRateOML _GetMscRateOML;
2286     private PFN_wglSwapBuffersMscOML _SwapBuffersMscOML;
2287     private PFN_wglSwapLayerBuffersMscOML _SwapLayerBuffersMscOML;
2288     private PFN_wglWaitForMscOML _WaitForMscOML;
2289     private PFN_wglWaitForSbcOML _WaitForSbcOML;
2290 }