ReactOS 0.4.15-dev-7842-g558ab78
dd.h
Go to the documentation of this file.
1/* $Id: dd.h,v 1.15 1997/12/05 04:38:28 brianp Exp $ */
2
3/*
4 * Mesa 3-D graphics library
5 * Version: 2.6
6 * Copyright (C) 1995-1997 Brian Paul
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
17 *
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the Free
20 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23
24/*
25 * $Log: dd.h,v $
26 * Revision 1.15 1997/12/05 04:38:28 brianp
27 * added ClearColorAndDepth() function pointer (David Bucciarelli)
28 *
29 * Revision 1.14 1997/11/25 03:39:41 brianp
30 * added TexSubImage() function pointer (David Bucciarelli)
31 *
32 * Revision 1.13 1997/10/29 02:23:54 brianp
33 * added UseGlobalTexturePalette() dd function (David Bucciarelli v20 3dfx)
34 *
35 * Revision 1.12 1997/10/16 02:27:53 brianp
36 * more comments
37 *
38 * Revision 1.11 1997/10/14 00:07:40 brianp
39 * added DavidB's fxmesa v19 changes
40 *
41 * Revision 1.10 1997/09/29 23:26:50 brianp
42 * new texture functions
43 *
44 * Revision 1.9 1997/04/29 01:31:07 brianp
45 * added RasterSetup() function to device driver
46 *
47 * Revision 1.8 1997/04/20 19:47:27 brianp
48 * added RenderVB to device driver
49 *
50 * Revision 1.7 1997/04/20 16:31:08 brianp
51 * added NearFar device driver function
52 *
53 * Revision 1.6 1997/04/12 12:27:31 brianp
54 * added QuadFunc and RectFunc
55 *
56 * Revision 1.5 1997/03/21 01:57:07 brianp
57 * added RendererString() function
58 *
59 * Revision 1.4 1997/02/10 19:22:47 brianp
60 * added device driver Error() function
61 *
62 * Revision 1.3 1997/01/16 03:34:33 brianp
63 * added preliminary texture mapping functions and cleaned up documentation
64 *
65 * Revision 1.2 1996/11/13 03:51:59 brianp
66 * updated comments
67 *
68 * Revision 1.1 1996/09/13 01:38:16 brianp
69 * Initial revision
70 *
71 */
72
73
74#ifndef DD_INCLUDED
75#define DD_INCLUDED
76
77
78/* THIS FILE ONLY INCLUDED BY types.h !!!!! */
79
80
81/*
82 * Device Driver (DD) interface
83 *
84 *
85 * All device driver functions are accessed through pointers in the
86 * dd_function_table struct (defined below) which is stored in the GLcontext
87 * struct. Since the device driver is strictly accessed trough a table of
88 * function pointers we can:
89 * 1. switch between a number of different device drivers at runtime.
90 * 2. use optimized functions dependant on current rendering state or
91 * frame buffer configuration.
92 *
93 * The function pointers in the dd_function_table struct are divided into
94 * two groups: mandatory and optional.
95 * Mandatory functions have to be implemented by every device driver.
96 * Optional functions may or may not be implemented by the device driver.
97 * The optional functions provide ways to take advantage of special hardware
98 * or optimized algorithms.
99 *
100 * The function pointers in the dd_function_table struct are first
101 * initialized in the "MakeCurrent" function. The "MakeCurrent" function
102 * is a little different in each device driver. See the X/Mesa, GLX, or
103 * OS/Mesa drivers for examples.
104 *
105 * Later, Mesa may call the dd_function_table's UpdateState() function.
106 * This function should initialize the dd_function_table's pointers again.
107 * The UpdateState() function is called whenever the core (GL) rendering
108 * state is changed in a way which may effect rasterization. For example,
109 * the TriangleFunc() pointer may have to point to different functions
110 * depending on whether smooth or flat shading is enabled.
111 *
112 * Note that the first argument to every device driver function is a
113 * GLcontext *. In turn, the GLcontext->DriverCtx pointer points to
114 * the driver-specific context struct. See the X/Mesa or OS/Mesa interface
115 * for an example.
116 *
117 * For more information about writing a device driver see the ddsample.c
118 * file and other device drivers (xmesa[123].c, osmesa.c, etc) for examples.
119 *
120 *
121 * Look below in the dd_function_table struct definition for descriptions
122 * of each device driver function.
123 *
124 *
125 * In the future more function pointers may be added for glReadPixels
126 * glCopyPixels, etc.
127 *
128 *
129 * Notes:
130 * ------
131 * RGBA = red/green/blue/alpha
132 * CI = color index (color mapped mode)
133 * mono = all pixels have the same color or index
134 *
135 * The write_ functions all take an array of mask flags which indicate
136 * whether or not the pixel should be written. One special case exists
137 * in the write_color_span function: if the mask array is NULL, then
138 * draw all pixels. This is an optimization used for glDrawPixels().
139 *
140 * IN ALL CASES:
141 * X coordinates start at 0 at the left and increase to the right
142 * Y coordinates start at 0 at the bottom and increase upward
143 *
144 */
145
146
147
148
149
150/*
151 * Device Driver function table.
152 */
154
155 /**********************************************************************
156 *** Mandatory functions: these functions must be implemented by ***
157 *** every device driver. ***
158 **********************************************************************/
159
160 const char * (*RendererString)(void);
161 /*
162 * Return a string which uniquely identifies this device driver.
163 * The string should contain no whitespace. Examples: "X11" "OffScreen"
164 * "MSWindows" "SVGA".
165 */
166
168 /*
169 * UpdateState() is called whenver Mesa thinks the device driver should
170 * update its state and/or the other pointers (such as PointsFunc,
171 * LineFunc, or TriangleFunc).
172 */
173
175 /*
176 * Called whenever glClearIndex() is called. Set the index for clearing
177 * the color buffer.
178 */
179
182 /*
183 * Called whenever glClearColor() is called. Set the color for clearing
184 * the color buffer.
185 */
186
189 /*
190 * Clear the current color buffer. If 'all' is set the clear the whole
191 * buffer, else clear the region defined by (x,y,width,height).
192 */
193
195 /*
196 * Sets current color index for drawing flat-shaded primitives.
197 */
198
201 /*
202 * Sets current color for drawing flat-shaded primitives.
203 */
204
206 /*
207 * Selects either the front or back color buffer for reading and writing.
208 * mode is either GL_FRONT or GL_BACK.
209 */
210
213 /*
214 * Returns the width and height of the current color buffer.
215 */
216
217
218 /***
219 *** Functions for writing pixels to the frame buffer:
220 ***/
222 GLuint n, GLint x, GLint y,
223 const GLubyte red[], const GLubyte green[],
224 const GLubyte blue[], const GLubyte alpha[],
225 const GLubyte mask[] );
226 /*
227 * Write a horizontal run of RGBA pixels.
228 */
229
231 GLuint n, GLint x, GLint y,
232 const GLubyte mask[] );
233 /*
234 * Write a horizontal run of mono-RGBA pixels.
235 */
236
238 GLuint n, const GLint x[], const GLint y[],
239 const GLubyte red[], const GLubyte green[],
240 const GLubyte blue[], const GLubyte alpha[],
241 const GLubyte mask[] );
242 /*
243 * Write an array of RGBA pixels at random locations.
244 */
245
247 GLuint n, const GLint x[], const GLint y[],
248 const GLubyte mask[] );
249 /*
250 * Write an array of mono-RGBA pixels at random locations.
251 */
252
254 GLuint n, GLint x, GLint y, const GLuint index[],
255 const GLubyte mask[] );
256 /*
257 * Write a horizontal run of CI pixels.
258 */
259
261 GLuint n, GLint x, GLint y,
262 const GLubyte mask[] );
263 /*
264 * Write a horizontal run of mono-CI pixels.
265 */
266
268 GLuint n, const GLint x[], const GLint y[],
269 const GLuint index[], const GLubyte mask[] );
270 /*
271 * Write a random array of CI pixels.
272 */
273
275 GLuint n, const GLint x[], const GLint y[],
276 const GLubyte mask[] );
277 /*
278 * Write a random array of mono-CI pixels.
279 */
280
281 /***
282 *** Functions to read pixels from frame buffer:
283 ***/
285 GLuint n, GLint x, GLint y, GLuint index[] );
286 /*
287 * Read a horizontal run of color index pixels.
288 */
289
291 GLuint n, GLint x, GLint y,
293 GLubyte blue[], GLubyte alpha[] );
294 /*
295 * Read a horizontal run of RGBA pixels.
296 */
297
299 GLuint n, const GLint x[], const GLint y[],
300 GLuint indx[], const GLubyte mask[] );
301 /*
302 * Read a random array of CI pixels.
303 */
304
306 GLuint n, const GLint x[], const GLint y[],
309 const GLubyte mask[] );
310 /*
311 * Read a random array of RGBA pixels.
312 */
313
314
315 /**********************************************************************
316 *** Optional functions: these functions may or may not be ***
317 *** implemented by the device driver. If the device driver ***
318 *** doesn't implement them it should never touch these pointers ***
319 *** since Mesa will either set them to NULL or point them at a ***
320 *** fall-back function. ***
321 **********************************************************************/
322
324 /*
325 * Called whenever glFinish() is called.
326 */
327
329 /*
330 * Called whenever glFlush() is called.
331 */
332
334 /*
335 * Implements glIndexMask() if possible, else return GL_FALSE.
336 */
337
341 /*
342 * Implements glColorMask() if possible, else return GL_FALSE.
343 */
344
346 /*
347 * Implements glLogicOp() if possible, else return GL_FALSE.
348 */
349
351 /*
352 * Enable/disable dithering.
353 */
354
356 /*
357 * Called whenever an error is generated. ctx->ErrorValue contains
358 * the error value.
359 */
360
361 void (*NearFar)( GLcontext *ctx, GLfloat nearVal, GLfloat farVal );
362 /*
363 * Called from glFrustum and glOrtho to tell device driver the
364 * near and far clipping plane Z values. The 3Dfx driver, for example,
365 * uses this.
366 */
367
368
369 /***
370 *** For supporting hardware Z buffers:
371 ***/
372
374 /*
375 * Called when the depth buffer must be allocated or possibly resized.
376 */
377
379 /*
380 * Clear the depth buffer to depth specified by CC.Depth.Clear value.
381 */
382
384 GLuint n, GLint x, GLint y, const GLdepth z[],
385 GLubyte mask[] );
387 GLuint n, const GLint x[], const GLint y[],
388 const GLdepth z[], GLubyte mask[] );
389 /*
390 * Apply the depth buffer test to an span/array of pixels and return
391 * an updated pixel mask. This function is not used when accelerated
392 * point, line, polygon functions are used.
393 */
394
399 /*
400 * Return depth values as integers for glReadPixels.
401 * Floats should be returned in the range [0,1].
402 * Ints (GLdepth) values should be in the range [0,MAXDEPTH].
403 */
404
405
407 GLboolean all, GLint x, GLint y,
409 /*
410 * If this function is implemented then it will be called when both the
411 * color and depth buffers are to be cleared.
412 */
413
414
415 /***
416 *** Accelerated point, line, polygon, glDrawPixels and glBitmap functions:
417 ***/
418
420 /*
421 * Called to draw an array of points.
422 */
423
425 /*
426 * Called to draw a line segment.
427 */
428
430 /*
431 * Called to draw a filled triangle.
432 */
433
435 /*
436 * Called to draw a filled quadrilateral.
437 */
438
440 /*
441 * Called to draw a filled, screen-aligned 2-D rectangle.
442 */
443
447 const GLvoid *pixels );
448 /*
449 * Called from glDrawPixels().
450 */
451
453 GLfloat xorig, GLfloat yorig,
454 GLfloat xmove, GLfloat ymove,
455 const struct gl_image *bitmap );
456 /*
457 * Called from glBitmap().
458 */
459
462 /*
463 * These are called whenever glBegin() or glEnd() are called.
464 * The device driver may do some sort of window locking/unlocking here.
465 */
466
467
469 /*
470 * This function, if not NULL, is called whenever new window coordinates
471 * are put in the vertex buffer. The vertices in question are those n
472 * such that start <= n < end.
473 * The device driver can convert the window coords to its own specialized
474 * format. The 3Dfx driver uses this.
475 */
476
478 /*
479 * This function allows the device driver to rasterize an entire
480 * buffer of primitives at once. See the gl_render_vb() function
481 * in vbrender.c for more details.
482 * Return GL_TRUE if vertex buffer successfully rendered.
483 * Return GL_FALSE if failure, let core Mesa render the vertex buffer.
484 */
485
486 /***
487 *** Texture mapping functions:
488 ***/
489
491 /*
492 * Called whenever glTexEnv*() is called.
493 * Pname will be one of GL_TEXTURE_ENV_MODE or GL_TEXTURE_ENV_COLOR.
494 * If pname is GL_TEXTURE_ENV_MODE then param will be one
495 * of GL_MODULATE, GL_BLEND, GL_DECAL, or GL_REPLACE.
496 */
497
499 struct gl_texture_object *tObj, GLint level,
501 const struct gl_texture_image *image );
502 /*
503 * Called whenever a texture object's image is changed.
504 * texObject is the number of the texture object being changed.
505 * level indicates the mipmap level.
506 * internalFormat is the format in which the texture is to be stored.
507 * image is a pointer to a gl_texture_image struct which contains
508 * the actual image data.
509 */
510
512 struct gl_texture_object *tObj, GLint level,
516 const struct gl_texture_image *image );
517 /*
518 * Called from glTexSubImage() to define a sub-region of a texture.
519 */
520
522 struct gl_texture_object *tObj,
523 GLenum pname, const GLfloat *params );
524 /*
525 * Called whenever glTexParameter*() is called.
526 * target is GL_TEXTURE_1D or GL_TEXTURE_2D
527 * texObject is the texture object to modify
528 * pname is one of GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER,
529 * GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, or GL_TEXTURE_BORDER_COLOR.
530 * params is dependant on pname. See man glTexParameter.
531 */
532
534 struct gl_texture_object *tObj );
535 /*
536 * Called whenever glBindTexture() is called. This specifies which
537 * texture is to be the current one.
538 */
539
541 /*
542 * Called when a texture object can be deallocated.
543 */
544
546 struct gl_texture_object *tObj );
547 /*
548 * Called when the texture's color lookup table is changed.
549 * If tObj is NULL then the shared texture palette ctx->Texture.Palette
550 * was changed.
551 */
552};
553
554
555
556#endif
557
#define index(s, c)
Definition: various.h:29
UINT op
Definition: effect.c:236
DWORD gmask
Definition: surface.c:187
DWORD amask
Definition: surface.c:189
DWORD rmask
Definition: surface.c:186
void(* rect_func)(GLcontext *ctx, GLint x, GLint y, GLint width, GLint height)
Definition: types.h:247
void(* quad_func)(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint v4, GLuint pv)
Definition: types.h:244
void(* points_func)(GLcontext *ctx, GLuint first, GLuint last)
Definition: types.h:237
void(* line_func)(GLcontext *ctx, GLuint v1, GLuint v2, GLuint pv)
Definition: types.h:239
void(* triangle_func)(GLcontext *ctx, GLuint v1, GLuint v2, GLuint v3, GLuint pv)
Definition: types.h:241
GLint GLdepth
Definition: types.h:218
unsigned char GLubyte
Definition: gl.h:157
GLuint start
Definition: gl.h:1545
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLint level
Definition: gl.h:1546
float GLfloat
Definition: gl.h:161
GLclampf green
Definition: gl.h:1740
GLint GLint xoffset
Definition: gl.h:1547
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: gl.h:1546
GLeglImageOES image
Definition: gl.h:2204
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLclampf GLclampf GLclampf alpha
Definition: gl.h:1740
unsigned int GLenum
Definition: gl.h:150
unsigned int GLuint
Definition: gl.h:159
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint GLuint end
Definition: gl.h:1545
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLclampf GLclampf blue
Definition: gl.h:1740
int GLsizei
Definition: gl.h:160
int GLint
Definition: gl.h:156
GLint GLint GLsizei width
Definition: gl.h:1546
GLint GLint GLint yoffset
Definition: gl.h:1547
unsigned char GLboolean
Definition: gl.h:151
GLdouble n
Definition: glext.h:7729
GLuint index
Definition: glext.h:6031
GLenum GLint GLuint mask
Definition: glext.h:6028
GLenum pname
Definition: glext.h:5645
GLenum mode
Definition: glext.h:6217
GLenum const GLfloat * params
Definition: glext.h:5645
GLboolean enable
Definition: glext.h:11120
GLfloat param
Definition: glext.h:5796
GLuint GLenum GLsizei GLsizei GLint GLint GLboolean packed
Definition: glext.h:9271
GLdouble GLdouble z
Definition: glext.h:5874
GLenum internalFormat
Definition: glext.h:8404
GLenum target
Definition: glext.h:7315
static const int bmask[16]
Definition: jdhuff.c:579
#define red
Definition: linetest.c:67
Definition: uimain.c:89
void(* WriteMonocolorSpan)(GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[])
Definition: dd.h:230
void(* TexEnv)(GLcontext *ctx, GLenum pname, const GLfloat *param)
Definition: dd.h:490
GLboolean(* SetBuffer)(GLcontext *ctx, GLenum mode)
Definition: dd.h:205
void(* ReadDepthSpanFloat)(GLcontext *ctx, GLuint n, GLint x, GLint y, GLfloat depth[])
Definition: dd.h:395
GLboolean(* LogicOp)(GLcontext *ctx, GLenum op)
Definition: dd.h:345
void(* TexImage)(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, GLint level, GLint internalFormat, const struct gl_texture_image *image)
Definition: dd.h:498
void(* WriteMonoindexSpan)(GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[])
Definition: dd.h:260
GLboolean(* IndexMask)(GLcontext *ctx, GLuint mask)
Definition: dd.h:333
void(* BindTexture)(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj)
Definition: dd.h:533
GLboolean(* DrawPixels)(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLboolean packed, const GLvoid *pixels)
Definition: dd.h:444
void(* ClearColorAndDepth)(GLcontext *ctx, GLboolean all, GLint x, GLint y, GLint width, GLint height)
Definition: dd.h:406
void(* ReadColorPixels)(GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte red[], GLubyte green[], GLubyte blue[], GLubyte alpha[], const GLubyte mask[])
Definition: dd.h:305
void(* Begin)(GLcontext *ctx, GLenum mode)
Definition: dd.h:460
void(* Finish)(GLcontext *ctx)
Definition: dd.h:323
void(* Clear)(GLcontext *ctx, GLboolean all, GLint x, GLint y, GLint width, GLint height)
Definition: dd.h:187
void(* ReadIndexSpan)(GLcontext *ctx, GLuint n, GLint x, GLint y, GLuint index[])
Definition: dd.h:284
void(* WriteMonoindexPixels)(GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[])
Definition: dd.h:274
void(* WriteMonocolorPixels)(GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[])
Definition: dd.h:246
void(* AllocDepthBuffer)(GLcontext *ctx)
Definition: dd.h:373
void(* WriteColorPixels)(GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte red[], const GLubyte green[], const GLubyte blue[], const GLubyte alpha[], const GLubyte mask[])
Definition: dd.h:237
quad_func QuadFunc
Definition: dd.h:434
points_func PointsFunc
Definition: dd.h:419
GLboolean(* ColorMask)(GLcontext *ctx, GLboolean rmask, GLboolean gmask, GLboolean bmask, GLboolean amask)
Definition: dd.h:338
void(* WriteIndexSpan)(GLcontext *ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[])
Definition: dd.h:253
line_func LineFunc
Definition: dd.h:424
void(* GetBufferSize)(GLcontext *ctx, GLuint *width, GLuint *height)
Definition: dd.h:211
void(* TexSubImage)(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLint internalFormat, const struct gl_texture_image *image)
Definition: dd.h:511
void(* WriteColorSpan)(GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte red[], const GLubyte green[], const GLubyte blue[], const GLubyte alpha[], const GLubyte mask[])
Definition: dd.h:221
void(* RasterSetup)(GLcontext *ctx, GLuint start, GLuint end)
Definition: dd.h:468
void(* DepthTestPixels)(GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLdepth z[], GLubyte mask[])
Definition: dd.h:386
GLboolean(* RenderVB)(GLcontext *ctx, GLboolean allDone)
Definition: dd.h:477
void(* Flush)(GLcontext *ctx)
Definition: dd.h:328
void(* TexParameter)(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, GLenum pname, const GLfloat *params)
Definition: dd.h:521
void(* Dither)(GLcontext *ctx, GLboolean enable)
Definition: dd.h:350
GLuint(* DepthTestSpan)(GLcontext *ctx, GLuint n, GLint x, GLint y, const GLdepth z[], GLubyte mask[])
Definition: dd.h:383
void(* WriteIndexPixels)(GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[])
Definition: dd.h:267
void(* ReadColorSpan)(GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte red[], GLubyte green[], GLubyte blue[], GLubyte alpha[])
Definition: dd.h:290
void(* ReadIndexPixels)(GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLuint indx[], const GLubyte mask[])
Definition: dd.h:298
void(* ClearColor)(GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
Definition: dd.h:180
void(* ClearIndex)(GLcontext *ctx, GLuint index)
Definition: dd.h:174
triangle_func TriangleFunc
Definition: dd.h:429
void(* UpdateState)(GLcontext *ctx)
Definition: dd.h:167
rect_func RectFunc
Definition: dd.h:439
void(* ClearDepthBuffer)(GLcontext *ctx)
Definition: dd.h:378
void(* Error)(GLcontext *ctx)
Definition: dd.h:355
void(* UpdateTexturePalette)(GLcontext *ctx, struct gl_texture_object *tObj)
Definition: dd.h:545
void(* NearFar)(GLcontext *ctx, GLfloat nearVal, GLfloat farVal)
Definition: dd.h:361
void(* DeleteTexture)(GLcontext *ctx, struct gl_texture_object *tObj)
Definition: dd.h:540
void(* ReadDepthSpanInt)(GLcontext *ctx, GLuint n, GLint x, GLint y, GLdepth depth[])
Definition: dd.h:397
void(* End)(GLcontext *ctx)
Definition: dd.h:461
_In_ WDFCOLLECTION _In_ ULONG Index