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