root/trunk/gl/wglext.d

Revision 157, 25.8 kB (checked in by jpelcis, 6 years ago)

Added an OpenAL implementation with ALUT.

Added an OpenGL implementation with all extensions, GLU, and GLUT.

Removed a second copy of d3d9.d.

Line 
1 module c.gl.wglext;
2
3 version (Windows) {
4 private import c.gl.gl;
5 private import std.c.windows.windows, std.loader;
6
7 /*
8  * Constants
9  */
10 /*
11  * ARB Extensions
12  */
13 // 4 - WGL_ARB_buffer_region
14 const GLuint WGL_FRONT_COLOR_BUFFER_BIT_ARB     = 0x00000001;
15 const GLuint WGL_BACK_COLOR_BUFFER_BIT_ARB      = 0x00000002;
16 const GLuint WGL_DEPTH_BUFFER_BIT_ARB           = 0x00000004;
17 const GLuint WGL_STENCIL_BUFFER_BIT_ARB         = 0x00000008;
18
19 // 5 - WGL_ARB_multisample
20 const GLuint WGL_SAMPLE_BUFFERS_ARB         = 0x2041;
21 const GLuint WGL_SAMPLES_ARB                = 0x2042;
22
23 // 9 - WGL_ARB_pixel_format
24 const GLuint WGL_NUMBER_PIXEL_FORMATS_ARB       = 0x2000;
25 const GLuint WGL_DRAW_TO_WINDOW_ARB         = 0x2001;
26 const GLuint WGL_DRAW_TO_BITMAP_ARB         = 0x2002;
27 const GLuint WGL_ACCELERATION_ARB           = 0x2003;
28 const GLuint WGL_NEED_PALETTE_ARB           = 0x2004;
29 const GLuint WGL_NEED_SYSTEM_PALETTE_ARB        = 0x2005;
30 const GLuint WGL_SWAP_LAYER_BUFFERS_ARB         = 0x2006;
31 const GLuint WGL_SWAP_METHOD_ARB            = 0x2007;
32 const GLuint WGL_NUMBER_OVERLAYS_ARB            = 0x2008;
33 const GLuint WGL_NUMBER_UNDERLAYS_ARB           = 0x2009;
34 const GLuint WGL_TRANSPARENT_ARB            = 0x200A;
35 const GLuint WGL_TRANSPARENT_RED_VALUE_ARB      = 0x2037;
36 const GLuint WGL_TRANSPARENT_GREEN_VALUE_ARB        = 0x2038;
37 const GLuint WGL_TRANSPARENT_BLUE_VALUE_ARB     = 0x2039;
38 const GLuint WGL_TRANSPARENT_ALPHA_VALUE_ARB        = 0x203A;
39 const GLuint WGL_TRANSPARENT_INDEX_VALUE_ARB        = 0x203B;
40 const GLuint WGL_SHARE_DEPTH_ARB            = 0x200C;
41 const GLuint WGL_SHARE_STENCIL_ARB          = 0x200D;
42 const GLuint WGL_SHARE_ACCUM_ARB            = 0x200E;
43 const GLuint WGL_SUPPORT_GDI_ARB            = 0x200F;
44 const GLuint WGL_SUPPORT_OPENGL_ARB         = 0x2010;
45 const GLuint WGL_DOUBLE_BUFFER_ARB          = 0x2011;
46 const GLuint WGL_STEREO_ARB             = 0x2012;
47 const GLuint WGL_PIXEL_TYPE_ARB             = 0x2013;
48 const GLuint WGL_COLOR_BITS_ARB             = 0x2014;
49 const GLuint WGL_RED_BITS_ARB               = 0x2015;
50 const GLuint WGL_RED_SHIFT_ARB              = 0x2016;
51 const GLuint WGL_GREEN_BITS_ARB             = 0x2017;
52 const GLuint WGL_GREEN_SHIFT_ARB            = 0x2018;
53 const GLuint WGL_BLUE_BITS_ARB              = 0x2019;
54 const GLuint WGL_BLUE_SHIFT_ARB             = 0x201A;
55 const GLuint WGL_ALPHA_BITS_ARB             = 0x201B;
56 const GLuint WGL_ALPHA_SHIFT_ARB            = 0x201C;
57 const GLuint WGL_ACCUM_BITS_ARB             = 0x201D;
58 const GLuint WGL_ACCUM_RED_BITS_ARB         = 0x201E;
59 const GLuint WGL_ACCUM_GREEN_BITS_ARB           = 0x201F;
60 const GLuint WGL_ACCUM_BLUE_BITS_ARB            = 0x2020;
61 const GLuint WGL_ACCUM_ALPHA_BITS_ARB           = 0x2021;
62 const GLuint WGL_DEPTH_BITS_ARB             = 0x2022;
63 const GLuint GL_STENCIL_BITS_ARB            = 0x2023;
64 const GLuint WGL_AUX_BUFFERS_ARB            = 0x2024;
65
66 // 10 - WGL_ARB_make_current_read
67 const GLuint ERROR_INVALID_PIXEL_TYPE_ARB       = 0x2043;
68 const GLuint ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = 0x2054;
69
70 // 11 - WGL_ARB_pbuffer
71 const GLuint WGL_DRAW_TO_PBUFFER_ARB            = 0x202D;
72 const GLuint WGL_MAX_PBUFFER_PIXELS_ARB         = 0x202E;
73 const GLuint WGL_MAX_PBUFFER_WIDTH_ARB          = 0x202F;
74 const GLuint WGL_MAX_PBUFFER_HEIGHT_ARB         = 0x2030;
75 const GLuint WGL_PBUFFER_LARGEST_ARB            = 0x2033;
76 const GLuint WGL_PBUFFER_WIDTH_ARB          = 0x2034;
77 const GLuint WGL_PBUFFER_HEIGHT_ARB         = 0x2035;
78 const GLuint WGL_PBUFFER_LOST_ARB           = 0x2036;
79
80 // 20 - WGL_ARB_render_texture
81 const GLuint WGL_BIND_TO_TEXTURE_RGB_ARB        = 0x2070;
82 const GLuint WGL_BIND_TO_TEXTURE_RGBA_ARB       = 0x2071;
83 const GLuint WGL_TEXTURE_FORMAT_ARB         = 0x2072;
84 const GLuint WGL_TEXTURE_TARGET_ARB         = 0x2073;
85 const GLuint WGL_MIPMAP_TEXTURE_ARB         = 0x2074;
86 const GLuint WGL_TEXTURE_RGB_ARB            = 0x2075;
87 const GLuint WGL_TEXTURE_RGBA_ARB           = 0x2076;
88 const GLuint WGL_NO_TEXTURE_ARB             = 0x2077;
89 const GLuint WGL_TEXTURE_CUBE_MAP_ARB           = 0x2078;
90 const GLuint WGL_TEXTURE_1D_ARB             = 0x2079;
91 const GLuint WGL_TEXTURE_2D_ARB             = 0x207A;
92 const GLuint WGL_MIPMAP_LEVEL_ARB           = 0x207B;
93 const GLuint WGL_CUBE_MAP_FACE_ARB          = 0x207C;
94 const GLuint WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB    = 0x207D;
95 const GLuint WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB    = 0x207E;
96 const GLuint WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB    = 0x207F;
97 const GLuint WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB    = 0x2080;
98 const GLuint WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB    = 0x2081;
99 const GLuint WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB    = 0x2082;
100 const GLuint WGL_FRONT_LEFT_ARB             = 0x2083;
101 const GLuint WGL_FRONT_RIGHT_ARB            = 0x2084;
102 const GLuint WGL_BACK_LEFT_ARB              = 0x2085;
103 const GLuint WGL_BACK_RIGHT_ARB             = 0x2086;
104 const GLuint WGL_AUX0_ARB               = 0x2087;
105 const GLuint WGL_AUX1_ARB               = 0x2088;
106 const GLuint WGL_AUX2_ARB               = 0x2089;
107 const GLuint WGL_AUX3_ARB               = 0x208A;
108 const GLuint WGL_AUX4_ARB               = 0x208B;
109 const GLuint WGL_AUX5_ARB               = 0x208C;
110 const GLuint WGL_AUX6_ARB               = 0x208D;
111 const GLuint WGL_AUX7_ARB               = 0x208E;
112 const GLuint WGL_AUX8_ARB               = 0x208F;
113 const GLuint WGL_AUX9_ARB               = 0x2090;
114
115 // 39 - WGL_ARB_pixel_format_float
116 const GLuint WGL_TYPE_RBGA_FLOAT_ARB            = 0x21A0;
117
118 /*
119  * Non-ARB Extensions
120  */
121 // 169 - WGL_EXT_make_current_read
122 const GLuint ERROR_INVALID_PIXEL_TYPE_EXT       = 0x2043;
123
124 // 170 - WGL_EXT_pixel_format
125 const GLuint WGL_NUMBER_PIXEL_FORMATS_EXT       = 0x2000;
126 const GLuint WGL_DRAW_TO_WINDOW_EXT         = 0x2001;
127 const GLuint WGL_DRAW_TO_BITMAP_EXT         = 0x2002;
128 const GLuint WGL_ACCELERATION_EXT           = 0x2003;
129 const GLuint WGL_NEED_PALETTE_EXT           = 0x2004;
130 const GLuint WGL_NEED_SYSTEM_PALETTE_EXT        = 0x2005;
131 const GLuint WGL_SWAP_LAYER_BUFFERS_EXT         = 0x2006;
132 const GLuint WGL_SWAP_METHOD_EXT            = 0x2007;
133 const GLuint WGL_NUMBER_OVERLAYS_EXT            = 0x2008;
134 const GLuint WGL_NUMBER_UNDERLAYS_EXT           = 0x2009;
135 const GLuint WGL_TRANSPARENT_EXT            = 0x200A;
136 const GLuint WGL_TRANSPARENT_VALUE_EXT          = 0x200B;
137 const GLuint WGL_SHARE_DEPTH_EXT            = 0x200C;
138 const GLuint WGL_SHARE_STENCIL_EXT          = 0x200D;
139 const GLuint WGL_SHARE_ACCUM_EXT            = 0x200E;
140 const GLuint WGL_SUPPORT_GDI_EXT            = 0x200F;
141 const GLuint WGL_SUPPORT_OPENGL_EXT         = 0x2010;
142 const GLuint WGL_DOUBLE_BUFFER_EXT          = 0x2011;
143 const GLuint WGL_STEREO_EXT             = 0x2012;
144 const GLuint WGL_PIXEL_TYPE_EXT             = 0x2013;
145 const GLuint WGL_COLOR_BITS_EXT             = 0x2014;
146 const GLuint WGL_RED_BITS_EXT               = 0x2015;
147 const GLuint WGL_RED_SHIFT_EXT              = 0x2016;
148 const GLuint WGL_GREEN_BITS_EXT             = 0x2017;
149 const GLuint WGL_GREEN_SHIFT_EXT            = 0x2018;
150 const GLuint WGL_BLUE_BITS_EXT              = 0x2019;
151 const GLuint WGL_BLUE_SHIFT_EXT             = 0x201A;
152 const GLuint WGL_ALPHA_BITS_EXT             = 0x201B;
153 const GLuint WGL_ALPHA_SHIFT_EXT            = 0x201C;
154 const GLuint WGL_ACCUM_BITS_EXT             = 0x201D;
155 const GLuint WGL_ACCUM_RED_BITS_EXT         = 0x201E;
156 const GLuint WGL_ACCUM_GREEN_BITS_EXT           = 0x201F;
157 const GLuint WGL_ACCUM_BLUE_BITS_EXT            = 0x2020;
158 const GLuint WGL_ACCUM_ALPHA_BITS_EXT           = 0x2021;
159 const GLuint WGL_DEPTH_BITS_EXT             = 0x2022;
160 const GLuint WGL_STENCIL_BITS_EXT           = 0x2023;
161 const GLuint WGL_AUX_BUFFERS_EXT            = 0x2024;
162 const GLuint WGL_NO_ACCELERATION_EXT            = 0x2025;
163 const GLuint WGL_GENERIC_ACCELERATION_EXT       = 0x2026;
164 const GLuint WGL_FULL_ACCELERATION_EXT          = 0x2027;
165 const GLuint WGL_SWAP_EXCHANGE_EXT          = 0x2028;
166 const GLuint WGL_SWAP_COPY_EXT              = 0x2029;
167 const GLuint WGL_SWAP_UNDEFINED_EXT         = 0x202A;
168 const GLuint WGL_TYPE_RGBA_EXT              = 0x202B;
169 const GLuint WGL_TYPE_COLORINDEX_EXT            = 0x202C;
170
171 // 171 - WGL_EXT_pbuffer
172 const GLuint WGL_DRAW_TO_PBUFFER_EXT            = 0x202D;
173 const GLuint WGL_MAX_PBUFFER_PIXELS_EXT         = 0x202E;
174 const GLuint WGL_MAX_PBUFFER_WIDTH_EXT          = 0x202F;
175 const GLuint WGL_MAX_PBUFFER_HEIGHT_EXT         = 0x2030;
176 const GLuint WGL_OPTIMAL_PBUFFER_WIDTH_EXT      = 0x2031;
177 const GLuint WGL_OPTIMAL_PBUFFER_HEIGHT_EXT     = 0x2032;
178 const GLuint WGL_PBUFFER_LARGEST_EXT            = 0x2033;
179 const GLuint WGL_PBUFFER_WIDTH_EXT          = 0x2034;
180 const GLuint WGL_PBUFFER_HEIGHT_EXT         = 0x2035;
181
182 // 177 - WGL_EXT_depth_float
183 const GLuint    WGL_DEPTH_FLOAT_EXT         = 0x2040;
184
185 // 207 - WGL_3DFX_multisample
186 const GLuint WGL_SAMPLE_BUFFERS_3DFX            = 0x2060;
187 const GLuint WGL_SAMPLES_3DFX               = 0x2061;
188
189 // 209 - WGL_EXT_multisample
190 const GLuint WGL_SAMPLE_BUFFERS_EXT         = 0x2041;
191 const GLuint WGL_SAMPLES_EXT                = 0x2042;
192
193 // 250 - WGL_I3D_digital_video_control
194 const GLuint WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D= 0x2050;
195 const GLuint WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D   = 0x2051;
196 const GLuint WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D  = 0x2052;
197 const GLuint WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D  = 0x2053;
198
199 // 251 - WGL_I3D_gamma
200 const GLuint WGL_GAMMA_TABLE_SIZE_I3D           = 0x204E;
201 const GLuint WGL_GAMMA_EXCLUDE_DESKTOP_I3D      = 0x204F;
202
203 // 252 - WGL_I3D_genlock
204 const GLuint WGL_GENLOCK_SOURCE_MULTIVIEW_I3D       = 0x2044;
205 const GLuint WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D    = 0x2045;
206 const GLuint WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D   = 0x2046;
207 const GLuint WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D     = 0x2047;
208 const GLuint WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D    = 0x2048;
209 const GLuint WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D   = 0x2049;
210 const GLuint WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D    = 0x204A;
211 const GLuint WGL_GENLOCK_SOURCE_EDGE_RISING_I3D     = 0x204B;
212 const GLuint WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D       = 0x204C;
213
214 // 253 - WGL_I3D_image_buffer
215 const GLuint WGL_IMAGE_BUFFER_MIN_ACCESS_I3D        = 0x00000001;
216 const GLuint WGL_IMAGE_BUFFER_LOCK_I3D          = 0x00000002;
217
218 // 263 - WGL_NV_render_depth_texture
219 const GLuint WGL_BIND_TO_TEXTURE_DEPTH_NV       = 0x20A3;
220 const GLuint WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV = 0x20A4;
221 const GLuint WGL_DEPTH_TEXTURE_FORMAT_NV        = 0x20A5;
222 const GLuint WGL_TEXTURE_DEPTH_COMPONENT_NV     = 0x20A6;
223 const GLuint WGL_DEPTH_COMPONENT_NV         = 0x20A7;
224
225 // 264 - WGL_NV_render_texture_rectangle
226 const GLuint WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV   = 0x20A0;
227 const GLuint WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV  = 0x20A1;
228 const GLuint WGL_TEXTURE_RECTANGLE_NV           = 0x20A2;
229
230 // 278 - WGL_ATI_pixel_format_float
231 const GLuint WGL_TYPE_RGBA_FLOAT_ATI            = 0x21A0;
232
233 // 281 - WGL_NV_float_buffer
234 const GLuint WGL_FLOAT_COMPONENTS_NV            = 0x20B0;
235 const GLuint WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV   = 0x20B1;
236 const GLuint WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV  = 0x20B2;
237 const GLuint WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV = 0x20B3;
238 const GLuint WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV= 0x20B4;
239 const GLuint WGL_TEXTURE_FLOAT_R_NV         = 0x20B5;
240 const GLuint WGL_TEXTURE_FLOAT_RG_NV            = 0x20B6;
241 const GLuint WGL_TEXTURE_FLOAT_RGB_NV           = 0x20B7;
242 const GLuint WGL_TEXTURE_FLOAT_RGBA_NV          = 0x20B8;
243
244 // 313 - WGL_3DL_stereo_control
245 const GLuint WGL_STEREO_EMITTER_ENABLE_3DL      = 0x2055;
246 const GLuint WGL_STEREO_EMITTER_DISABLE_3DL     = 0x2056;
247 const GLuint WGL_STEREO_POLARITY_NORMAL_3DL     = 0x2057;
248 const GLuint WGL_STEREO_POLARITY_INVERT_3DL     = 0x2058;
249
250 /*
251  * Functions
252  */
253 private HXModule wglextdrv;
254 private void* getProc(char[] procname) {
255     void* symbol = ExeModule_GetSymbol(wglextdrv, procname);
256     if (symbol is null) {
257         printf ("Failed to load WGL extension proc address " ~ procname ~ ".\n");
258     }
259     return (symbol);
260 }
261
262 static this () {
263     wglextdrv = ExeModule_Load("OpenGL32.dll");
264     wglCreateBufferRegionARB = cast(pfwglCreateBufferRegionARB)getProc("wglCreateBufferRegionARB");
265     wglDeleteBufferRegionARB = cast(pfwglDeleteBufferRegionARB)getProc("wglDeleteBufferRegionARB");
266     wglSaveBufferRegionARB = cast(pfwglSaveBufferRegionARB)getProc("wglSaveBufferRegionARB");
267     wglRestoreBufferRegionARB = cast(pfwglRestoreBufferRegionARB)getProc("wglRestoreBufferRegionARB");
268
269     SampleCoverageARB = cast(pfSampleCoverageARB)getProc("SampleCoverageARB");
270
271     wglGetExtensionsStringARB = cast(pfwglGetExtensionsStringARB)getProc("wglGetExtensionsStringARB");
272
273     wglGetPixelFormatAttribivARB = cast(pfwglGetPixelFormatAttribivARB)getProc("wglGetPixelFormatAttribivARB");
274     wglGetPixelFormatAttribfvARB = cast(pfwglGetPixelFormatAttribfvARB)getProc("wglGetPixelFormatAttribfvARB");
275     wglChoosePixelFormatARB = cast(pfwglChoosePixelFormatARB)getProc("wglChoosePixelFormatARB");
276
277     wglMakeContextCurrentARB = cast(pfwglMakeContextCurrentARB)getProc("wglMakeContextCurrentARB");
278     wglGetCurrentReadDCARB = cast(pfwglGetCurrentReadDCARB)getProc("wglGetCurrentReadDCARB");
279
280     wglCreatePbufferARB = cast(pfwglCreatePbufferARB)getProc("wglCreatePbufferARB");
281     wglGetPbufferDCARB = cast(pfwglGetPbufferDCARB)getProc("wglGetPbufferDCARB");
282     wglReleasePbufferDCARB = cast(pfwglReleasePbufferDCARB)getProc("wglReleasePbufferDCARB");
283     wglDestroyPbufferARB = cast(pfwglDestroyPbufferARB)getProc("wglDestroyPbufferARB");
284     wglQueryPbufferARB = cast(pfwglQueryPbufferARB)getProc("wglQueryPbufferARB");
285
286     wglBindTexImageARB = cast(pfwglBindTexImageARB)getProc("wglBindTexImageARB");
287     wglReleaseTexImageARB = cast(pfwglReleaseTexImageARB)getProc("wglReleaseTexImageARB");
288     wglSetPbufferAttribARB = cast(pfwglSetPbufferAttribARB)getProc("wglSetPbufferAttribARB");
289
290     wglGetExtensionsStringEXT = cast(pfwglGetExtensionsStringEXT)getProc("wglGetExtensionsStringEXT");
291
292     wglMakeContextCurrentEXT = cast(pfwglMakeContextCurrentEXT)getProc("wglMakeContextCurrentEXT");
293     wglGetCurrentReadDCEXT = cast(pfwglGetCurrentReadDCEXT)getProc("wglGetCurrentReadDCEXT");
294
295     wglGetPixelFormatAttribivEXT = cast(pfwglGetPixelFormatAttribivEXT)getProc("wglGetPixelFormatAttribivEXT");
296     wglGetPixelFormatAttribfvEXT = cast(pfwglGetPixelFormatAttribfvEXT)getProc("wglGetPixelFormatAttribfvEXT");
297     wglChoosePixelFormatEXT = cast(pfwglChoosePixelFormatEXT)getProc("wglChoosePixelFormatEXT");
298
299     wglCreatePbufferEXT = cast(pfwglCreatePbufferEXT)getProc("wglCreatePbufferEXT");
300     wglGetPbufferDCEXT = cast(pfwglGetPbufferDCEXT)getProc("wglGetPbufferDCEXT");
301     wglReleasePbufferDCEXT = cast(pfwglReleasePbufferDCEXT)getProc("wglReleasePbufferDCEXT");
302     wglDestroyPbufferEXT = cast(pfwglDestroyPbufferEXT)getProc("wglDestroyPbufferEXT");
303     wglQueryPbufferEXT = cast(pfwglQueryPbufferEXT)getProc("wglQueryPbufferEXT");
304
305     wglSwapIntervalEXT = cast(pfwglSwapIntervalEXT)getProc("wglSwapIntervalEXT");
306     wglGetSwapIntervalEXT = cast(pfwglGetSwapIntervalEXT)getProc("wglGetSwapIntervalEXT");
307
308     SampleMaskEXT = cast(pfSampleMaskEXT)getProc("SampleMaskEXT");
309     SamplePatternEXT = cast(pfSamplePatternEXT)getProc("SamplePatternEXT");
310
311     wglGetSyncValuesOML = cast(pfwglGetSyncValuesOML)getProc("wglGetSyncValuesOML");
312     wglGetMscRateOML = cast(pfwglGetMscRateOML)getProc("wglGetMscRateOML");
313     wglSwapBuffersMscOML = cast(pfwglSwapBuffersMscOML)getProc("wglSwapBuffersMscOML");
314     wglSwapLayerBuffersMscOML = cast(pfwglSwapLayerBuffersMscOML)getProc("wglSwapLayerBuffersMscOML");
315     wglWaitForMscOML = cast(pfwglWaitForMscOML)getProc("wglWaitForMscOML");
316     wglWaitForSbcOML = cast(pfwglWaitForSbcOML)getProc("wglWaitForSbcOML");
317
318     wglGetDigitalVideoParametersI3D = cast(pfwglGetDigitalVideoParametersI3D)getProc("wglGetDigitalVideoParametersI3D");
319     wglSetDigitalVideoParametersI3D = cast(pfwglSetDigitalVideoParametersI3D)getProc("wglSetDigitalVideoParametersI3D");
320
321     wglGetGammaTableParametersI3D = cast(pfwglGetGammaTableParametersI3D)getProc("wglGetGammaTableParametersI3D");
322     wglSetGammaTableParametersI3D = cast(pfwglSetGammaTableParametersI3D)getProc("wglSetGammaTableParametersI3D");
323     wglGetGammaTableI3D = cast(pfwglGetGammaTableI3D)getProc("wglGetGammaTableI3D");
324     wglSetGammaTableI3D = cast(pfwglSetGammaTableI3D)getProc("wglSetGammaTableI3D");
325
326     wglEnableGenlockI3D = cast(pfwglEnableGenlockI3D)getProc("wglEnableGenlockI3D");
327     wglDisableGenlockI3D = cast(pfwglDisableGenlockI3D)getProc("wglDisableGenlockI3D");
328     wglIsEnabledGenlockI3D = cast(pfwglIsEnabledGenlockI3D)getProc("wglIsEnabledGenlockI3D");
329     wglGenlockSourceI3D = cast(pfwglGenlockSourceI3D)getProc("wglGenlockSourceI3D");
330     wglGetGenlockSourceI3D = cast(pfwglGetGenlockSourceI3D)getProc("wglGetGenlockSourceI3D");
331     wglGenlockSourceEdgeI3D = cast(pfwglGenlockSourceEdgeI3D)getProc("wglGenlockSourceEdgeI3D");
332     wglGetGenlockSourceEdgeI3D = cast(pfwglGetGenlockSourceEdgeI3D)getProc("wglGetGenlockSourceEdgeI3D");
333     wglGenlockSampleRateI3D = cast(pfwglGenlockSampleRateI3D)getProc("wglGenlockSampleRateI3D");
334     wglGetGenlockSampleRateI3D = cast(pfwglGetGenlockSampleRateI3D)getProc("wglGetGenlockSampleRateI3D");
335     wglGenlockSourceDelayI3D = cast(pfwglGenlockSourceDelayI3D)getProc("wglGenlockSourceDelayI3D");
336     wglGetGenlockSourceDelayI3D = cast(pfwglGetGenlockSourceDelayI3D)getProc("wglGetGenlockSourceDelayI3D");
337     wglQueryGenlockMaxSourceDelayI3D = cast(pfwglQueryGenlockMaxSourceDelayI3D)getProc("wglQueryGenlockMaxSourceDelayI3D");
338
339     wglCreateImageBufferI3D = cast(pfwglCreateImageBufferI3D)getProc("wglCreateImageBufferI3D");
340     wglDestroyImageBufferI3D = cast(pfwglDestroyImageBufferI3D)getProc("wglDestroyImageBufferI3D");
341     wglAssociateImageBufferEventsI3D = cast(pfwglAssociateImageBufferEventsI3D)getProc("wglAssociateImageBufferEventsI3D");
342     wglReleaseImageBufferEventsI3D = cast(pfwglReleaseImageBufferEventsI3D)getProc("wglReleaseImageBufferEventsI3D");
343     wglDisableFrameLockI3D = cast(pfwglDisableFrameLockI3D)getProc("wglDisableFrameLockI3D");
344     wglIsEnabledFrameLockI3D = cast(pfwglIsEnabledFrameLockI3D)getProc("wglIsEnabledFrameLockI3D");
345     wglQueryFrameLockMasterI3D = cast(pfwglQueryFrameLockMasterI3D)getProc("wglQueryFrameLockMasterI3D");
346
347     wglGetFrameUsageI3D = cast(pfwglGetFrameUsageI3D)getProc("wglGetFrameUsageI3D");
348     wglBeginFrameTrackingI3D = cast(pfwglBeginFrameTrackingI3D)getProc("wglBeginFrameTrackingI3D");
349     wglEndFrameTrackingI3D = cast(pfwglEndFrameTrackingI3D)getProc("wglEndFrameTrackingI3D");
350     wglQueryFrameTrackingI3D = cast(pfwglQueryFrameTrackingI3D)getProc("wglQueryFrameTrackingI3D");
351
352     wglSetStereoEmitterState3DL = cast(pfwglSetStereoEmitterState3DL)getProc("wglSetStereoEmitterState3DL");
353 }
354
355 static ~this () {
356     ExeModule_Release(wglextdrv);
357 }
358 extern (C):
359 /*
360  * ARB Extensions
361  */
362 // 4 - WGL_ARB_buffer_region
363 typedef HANDLE function(HDC, GLint, GLuint) pfwglCreateBufferRegionARB;
364 typedef GLvoid function(HANDLE) pfwglDeleteBufferRegionARB;
365 typedef BOOL function(HANDLE, GLint, GLint, GLint, GLint) pfwglSaveBufferRegionARB;
366 typedef BOOL function(HANDLE, GLint, GLint, GLint, GLint, GLint, GLint) pfwglRestoreBufferRegionARB;
367 pfwglCreateBufferRegionARB wglCreateBufferRegionARB;
368 pfwglDeleteBufferRegionARB wglDeleteBufferRegionARB;
369 pfwglSaveBufferRegionARB wglSaveBufferRegionARB;
370 pfwglRestoreBufferRegionARB wglRestoreBufferRegionARB;
371
372 // 5 - WGL_ARB_multisample
373 typedef GLvoid function(GLclampf, GLboolean) pfSampleCoverageARB;
374 pfSampleCoverageARB SampleCoverageARB;
375
376 // 8 - WGL_ARB_extensions_string
377 typedef GLchar* function(HDC) pfwglGetExtensionsStringARB;
378 pfwglGetExtensionsStringARB wglGetExtensionsStringARB;
379
380 // 9 - WGL_ARB_pixel_format
381 typedef BOOL function(HDC, GLint, GLint, GLuint, GLint*, GLint*) pfwglGetPixelFormatAttribivARB;
382 typedef BOOL function(HDC, GLint, GLint, GLuint, GLint*, FLOAT*) pfwglGetPixelFormatAttribfvARB;
383 typedef BOOL function(HDC, GLint*, FLOAT*, GLuint, GLint*, GLuint) pfwglChoosePixelFormatARB;
384 pfwglGetPixelFormatAttribivARB wglGetPixelFormatAttribivARB;
385 pfwglGetPixelFormatAttribfvARB wglGetPixelFormatAttribfvARB;
386 pfwglChoosePixelFormatARB wglChoosePixelFormatARB;
387
388 // 10 - WGL_ARB_make_current_read
389 typedef BOOL function(HDC, HDC, HGLRC) pfwglMakeContextCurrentARB;
390 typedef HDC function() pfwglGetCurrentReadDCARB;
391 pfwglMakeContextCurrentARB wglMakeContextCurrentARB;
392 pfwglGetCurrentReadDCARB wglGetCurrentReadDCARB;
393
394 // 11 - WGL_ARB_pbuffer
395 alias HANDLE HPBUFFERARB;
396 typedef HPBUFFERARB function(HDC, GLint, GLint, GLint, GLint*) pfwglCreatePbufferARB;
397 typedef HDC function(HPBUFFERARB) pfwglGetPbufferDCARB;
398 typedef GLint function(HPBUFFERARB, HDC) pfwglReleasePbufferDCARB;
399 typedef BOOL function(HPBUFFERARB) pfwglDestroyPbufferARB;
400 typedef BOOL function(HPBUFFERARB, GLint, GLint*) pfwglQueryPbufferARB;
401 pfwglCreatePbufferARB wglCreatePbufferARB;
402 pfwglGetPbufferDCARB wglGetPbufferDCARB;
403 pfwglReleasePbufferDCARB wglReleasePbufferDCARB;
404 pfwglDestroyPbufferARB wglDestroyPbufferARB;
405 pfwglQueryPbufferARB wglQueryPbufferARB;
406
407 // 20 - WGL_ARB_render_texture
408 typedef BOOL function(HPBUFFERARB, GLint) pfwglBindTexImageARB;
409 typedef BOOL function(HPBUFFERARB, GLint) pfwglReleaseTexImageARB;
410 typedef BOOL function(HPBUFFERARB, GLint*) pfwglSetPbufferAttribARB;
411 pfwglBindTexImageARB wglBindTexImageARB;
412 pfwglReleaseTexImageARB wglReleaseTexImageARB;
413 pfwglSetPbufferAttribARB wglSetPbufferAttribARB;
414
415 /*
416  * Non-ARB Extensions
417  */
418 // 168 - WGL_EXT_extensions_string
419 typedef GLchar* function() pfwglGetExtensionsStringEXT;
420 pfwglGetExtensionsStringEXT wglGetExtensionsStringEXT;
421
422 // 169 - WGL_EXT_make_current_read
423 typedef BOOL function(HDC, HDC, HGLRC) pfwglMakeContextCurrentEXT;
424 typedef HDC function() pfwglGetCurrentReadDCEXT;
425 pfwglMakeContextCurrentEXT wglMakeContextCurrentEXT;
426 pfwglGetCurrentReadDCEXT wglGetCurrentReadDCEXT;
427
428 // 170 - WGL_EXT_pixel_format
429 typedef BOOL function(HDC, GLint, GLint, GLuint, GLint*, GLint) pfwglGetPixelFormatAttribivEXT;
430 typedef BOOL function(HDC, GLint, GLint, GLuint, GLint*, FLOAT*) pfwglGetPixelFormatAttribfvEXT;
431 typedef BOOL function(HDC, GLint*, FLOAT*, GLuint, GLint*, GLuint*) pfwglChoosePixelFormatEXT;
432 pfwglGetPixelFormatAttribivEXT wglGetPixelFormatAttribivEXT;
433 pfwglGetPixelFormatAttribfvEXT wglGetPixelFormatAttribfvEXT;
434 pfwglChoosePixelFormatEXT wglChoosePixelFormatEXT;
435
436 // 171 - WGL_EXT_pbuffer
437 alias HANDLE HPBUFFEREXT;
438 typedef HPBUFFEREXT function(HDC, GLint, GLint, GLint, GLint*) pfwglCreatePbufferEXT;
439 typedef HDC function(HPBUFFEREXT) pfwglGetPbufferDCEXT;
440 typedef GLint function(HPBUFFEREXT, HDC) pfwglReleasePbufferDCEXT;
441 typedef BOOL function(HPBUFFEREXT) pfwglDestroyPbufferEXT;
442 typedef BOOL function(HPBUFFEREXT, GLint, GLint*) pfwglQueryPbufferEXT;
443 pfwglCreatePbufferEXT wglCreatePbufferEXT;
444 pfwglGetPbufferDCEXT wglGetPbufferDCEXT;
445 pfwglReleasePbufferDCEXT wglReleasePbufferDCEXT;
446 pfwglDestroyPbufferEXT wglDestroyPbufferEXT;
447 pfwglQueryPbufferEXT wglQueryPbufferEXT;
448
449 // 172 - WGL_EXT_swap_control
450 typedef BOOL function(GLint) pfwglSwapIntervalEXT;
451 typedef GLint function() pfwglGetSwapIntervalEXT;
452 pfwglSwapIntervalEXT wglSwapIntervalEXT;
453 pfwglGetSwapIntervalEXT wglGetSwapIntervalEXT;
454
455 // 207 - WGL_3DFX_multisample
456 typedef GLvoid function(GLclampf, GLboolean) pfSampleMaskEXT;
457 typedef GLvoid function(GLenum) pfSamplePatternEXT;
458 pfSampleMaskEXT SampleMaskEXT;
459 pfSamplePatternEXT SamplePatternEXT;
460
461 // 242 - WGL_OML_sync_control
462 typedef BOOL function(HDC, long*, long*, long*) pfwglGetSyncValuesOML;
463 typedef BOOL function(HDC, GLint*, GLint*) pfwglGetMscRateOML;
464 typedef long function(HDC, long, long, long) pfwglSwapBuffersMscOML;
465 typedef long function(HDC, GLint, long, long, long) pfwglSwapLayerBuffersMscOML;
466 typedef BOOL function(HDC, long, long, long, long*, long*, long*) pfwglWaitForMscOML;
467 typedef BOOL function(HDC, long, long*, long*, long*) pfwglWaitForSbcOML;
468 pfwglGetSyncValuesOML wglGetSyncValuesOML;
469 pfwglGetMscRateOML wglGetMscRateOML;
470 pfwglSwapBuffersMscOML wglSwapBuffersMscOML;
471 pfwglSwapLayerBuffersMscOML wglSwapLayerBuffersMscOML;
472 pfwglWaitForMscOML wglWaitForMscOML;
473 pfwglWaitForSbcOML wglWaitForSbcOML;
474
475 // 250 - WGL_I3D_digital_video_control
476 typedef BOOL function(HDC, GLint, GLint*) pfwglGetDigitalVideoParametersI3D;
477 typedef BOOL function(HDC, GLint, GLint*) pfwglSetDigitalVideoParametersI3D;
478 pfwglGetDigitalVideoParametersI3D wglGetDigitalVideoParametersI3D;
479 pfwglSetDigitalVideoParametersI3D wglSetDigitalVideoParametersI3D;
480
481 // 251 - WGL_I3D_gamma
482 typedef BOOL function(HDC, GLint, GLint*) pfwglGetGammaTableParametersI3D;
483 typedef BOOL function(HDC, GLint, GLint*) pfwglSetGammaTableParametersI3D;
484 typedef BOOL function(HDC, GLint, USHORT*, USHORT*, USHORT*) pfwglGetGammaTableI3D;
485 typedef BOOL function(HDC, GLint, USHORT*, USHORT*, USHORT*) pfwglSetGammaTableI3D;
486 pfwglGetGammaTableParametersI3D wglGetGammaTableParametersI3D;
487 pfwglSetGammaTableParametersI3D wglSetGammaTableParametersI3D;
488 pfwglGetGammaTableI3D wglGetGammaTableI3D;
489 pfwglSetGammaTableI3D wglSetGammaTableI3D;
490
491 // 252 - WGL_I3D_genlock
492 typedef BOOL function(HDC) pfwglEnableGenlockI3D;
493 typedef BOOL function(HDC) pfwglDisableGenlockI3D;
494 typedef BOOL function(HDC, BOOL*) pfwglIsEnabledGenlockI3D;
495 typedef BOOL function(HDC, GLuint) pfwglGenlockSourceI3D;
496 typedef BOOL function(HDC, GLuint*) pfwglGetGenlockSourceI3D;
497 typedef BOOL function(HDC, GLuint) pfwglGenlockSourceEdgeI3D;
498 typedef BOOL function(HDC, GLuint*) pfwglGetGenlockSourceEdgeI3D;
499 typedef BOOL function(HDC, GLuint) pfwglGenlockSampleRateI3D;
500 typedef BOOL function(HDC, GLuint*) pfwglGetGenlockSampleRateI3D;
501 typedef BOOL function(HDC, GLuint) pfwglGenlockSourceDelayI3D;
502 typedef BOOL function(HDC, GLuint*) pfwglGetGenlockSourceDelayI3D;
503 typedef BOOL function(HDC, GLuint*, GLuint*) pfwglQueryGenlockMaxSourceDelayI3D;
504 pfwglEnableGenlockI3D wglEnableGenlockI3D;
505 pfwglDisableGenlockI3D wglDisableGenlockI3D;
506 pfwglIsEnabledGenlockI3D wglIsEnabledGenlockI3D;
507 pfwglGenlockSourceI3D wglGenlockSourceI3D;
508 pfwglGetGenlockSourceI3D wglGetGenlockSourceI3D;
509 pfwglGenlockSourceEdgeI3D wglGenlockSourceEdgeI3D;
510 pfwglGetGenlockSourceEdgeI3D wglGetGenlockSourceEdgeI3D;
511 pfwglGenlockSampleRateI3D wglGenlockSampleRateI3D;
512 pfwglGetGenlockSampleRateI3D wglGetGenlockSampleRateI3D;
513 pfwglGenlockSourceDelayI3D wglGenlockSourceDelayI3D;
514 pfwglGetGenlockSourceDelayI3D wglGetGenlockSourceDelayI3D;
515 pfwglQueryGenlockMaxSourceDelayI3D wglQueryGenlockMaxSourceDelayI3D;
516
517 // 253 - WGL_I3D_image_buffer
518 typedef LPVOID function(HDC, DWORD, GLuint) pfwglCreateImageBufferI3D;
519 typedef BOOL function(HDC, LPVOID) pfwglDestroyImageBufferI3D;
520 typedef BOOL function(HDC, HANDLE*, LPVOID*, DWORD*, GLuint) pfwglAssociateImageBufferEventsI3D;
521 typedef BOOL function(HDC, LPVOID*, GLuint) pfwglReleaseImageBufferEventsI3D;
522 pfwglCreateImageBufferI3D wglCreateImageBufferI3D;
523 pfwglDestroyImageBufferI3D wglDestroyImageBufferI3D;
524 pfwglAssociateImageBufferEventsI3D wglAssociateImageBufferEventsI3D;
525 pfwglReleaseImageBufferEventsI3D wglReleaseImageBufferEventsI3D;
526
527 // 254 - WGL_I3D_swap_frame_lock
528 typedef BOOL function() pfwglEnableFrameLockI3D;
529 typedef BOOL function() pfwglDisableFrameLockI3D;
530 typedef BOOL function(BOOL*) pfwglIsEnabledFrameLockI3D;
531 typedef BOOL function(BOOL*) pfwglQueryFrameLockMasterI3D;
532 pfwglEnableFrameLockI3D wglEnableFrameLockI3D;
533 pfwglDisableFrameLockI3D wglDisableFrameLockI3D;
534 pfwglIsEnabledFrameLockI3D wglIsEnabledFrameLockI3D;
535 pfwglQueryFrameLockMasterI3D wglQueryFrameLockMasterI3D;
536
537 // 255 - WGL_I3D_swap_frame_usage
538 typedef BOOL function(GLfloat*) pfwglGetFrameUsageI3D;
539 typedef BOOL function() pfwglBeginFrameTrackingI3D;
540 typedef BOOL function() pfwglEndFrameTrackingI3D;
541 typedef BOOL function(DWORD*, DWORD*, GLfloat*) pfwglQueryFrameTrackingI3D;
542 pfwglGetFrameUsageI3D wglGetFrameUsageI3D;
543 pfwglBeginFrameTrackingI3D wglBeginFrameTrackingI3D;
544 pfwglEndFrameTrackingI3D wglEndFrameTrackingI3D;
545 pfwglQueryFrameTrackingI3D wglQueryFrameTrackingI3D;
546
547 // 313 - WGL_3DL_stereo_control
548 typedef BOOL function(HDC, GLuint) pfwglSetStereoEmitterState3DL;
549 pfwglSetStereoEmitterState3DL wglSetStereoEmitterState3DL;
550 }
Note: See TracBrowser for help on using the browser.