Changeset 3582 for trunk/src/opengl/mesa/dd.h
- Timestamp:
- May 21, 2000, 10:57:14 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/mesa/dd.h
r2938 r3582 1 /* $Id: dd.h,v 1. 1 2000-02-29 00:48:28 sandervlExp $ */1 /* $Id: dd.h,v 1.2 2000-05-21 20:30:06 jeroen Exp $ */ 2 2 3 3 /* 4 4 * Mesa 3-D graphics library 5 * Version: 3. 15 * Version: 3.3 6 6 * 7 7 * Copyright (C) 1999 Brian Paul All Rights Reserved. … … 119 119 120 120 121 /* Mask bits sent to the driver Clear() function */ 122 #define DD_FRONT_LEFT_BIT FRONT_LEFT_BIT /* 1 */ 123 #define DD_FRONT_RIGHT_BIT FRONT_RIGHT_BIT /* 2 */ 124 #define DD_BACK_LEFT_BIT BACK_LEFT_BIT /* 4 */ 125 #define DD_BACK_RIGHT_BIT BACK_RIGHT_BIT /* 8 */ 126 #define DD_DEPTH_BIT GL_DEPTH_BUFFER_BIT /* 0x00000100 */ 127 #define DD_STENCIL_BIT GL_STENCIL_BUFFER_BIT /* 0x00000400 */ 128 #define DD_ACCUM_BIT GL_ACCUM_BUFFER_BIT /* 0x00000200 */ 129 121 130 122 131 … … 131 140 **********************************************************************/ 132 141 133 const char * (*RendererString)(void); 134 /* 135 * Return a string which uniquely identifies this device driver. 136 * The string should contain no whitespace. Examples: "X11", "OffScreen", 137 * "MSWindows", "SVGA". 138 * NOTE: This function will be obsolete in favor of GetString in the future! 142 const GLubyte * (*GetString)( GLcontext *ctx, GLenum name ); 143 /* Return a string as needed by glGetString(). 144 * Only the GL_RENDERER token must be implemented. Otherwise, 145 * NULL can be returned. 139 146 */ 140 147 … … 162 169 GLint x, GLint y, GLint width, GLint height ); 163 170 /* Clear the color/depth/stencil/accum buffer(s). 164 * 'mask' indicates which buffers need to be cleared. Return a bitmask 165 * indicating which buffers weren't cleared by the driver function. 166 * If 'all' is true then the clear the whole buffer, else clear the 167 * region defined by (x,y,width,height). 171 * 'mask' is a bitmask of the DD_*_BIT values defined above that indicates 172 * which buffers need to be cleared. The driver should clear those 173 * buffers then return a new bitmask indicating which buffers should be 174 * cleared by software Mesa. 175 * If 'all' is true then the clear the whole buffer, else clear only the 176 * region defined by (x,y,width,height). 177 * This function must obey the glColorMask, glIndexMask and glStencilMask 178 * settings! Software Mesa can do masked clears if the device driver can't. 168 179 */ 169 180 … … 181 192 */ 182 193 183 GLboolean (*Set Buffer)( GLcontext *ctx, GLenum buffer );184 /* 185 * S elects the color buffer(s) for reading andwriting.194 GLboolean (*SetDrawBuffer)( GLcontext *ctx, GLenum buffer ); 195 /* 196 * Specifies the current buffer for writing. 186 197 * The following values must be accepted when applicable: 187 198 * GL_FRONT_LEFT - this buffer always exists … … 201 212 */ 202 213 214 void (*SetReadBuffer)( GLcontext *ctx, GLframebuffer *colorBuffer, 215 GLenum buffer ); 216 /* 217 * Specifies the current buffer for reading. 218 * colorBuffer will be one of: 219 * GL_FRONT_LEFT - this buffer always exists 220 * GL_BACK_LEFT - when double buffering 221 * GL_FRONT_RIGHT - when using stereo 222 * GL_BACK_RIGHT - when using stereo and double buffering 223 */ 224 203 225 void (*GetBufferSize)( GLcontext *ctx, GLuint *width, GLuint *height ); 204 226 /* … … 217 239 GLuint n, GLint x, GLint y, 218 240 CONST GLubyte rgb[][3], const GLubyte mask[] ); 219 /* Write a horizontal run of RGB[A] pixels. The later version is only 220 * used to accelerate GL_RGB, GL_UNSIGNED_BYTE glDrawPixels() calls. 241 /* Write a horizontal run of RGBA or RGB pixels. 221 242 * If mask is NULL, draw all pixels. 222 243 * If mask is not null, only draw pixel [i] when mask [i] is true. … … 305 326 *** fall-back function. *** 306 327 **********************************************************************/ 307 308 const char * (*ExtensionString)( GLcontext *ctx );309 /* Return a space-separated list of extensions for this driver.310 * NOTE: This function will be obsolete in favor of GetString in the future!311 */312 313 const GLubyte * (*GetString)( GLcontext *ctx, GLenum name );314 /* Return a string as needed by glGetString().315 * NOTE: This will replace the ExtensionString and RendererString316 * functions in the future!317 */318 328 319 329 void (*Finish)( GLcontext *ctx ); … … 381 391 /*** 382 392 *** For supporting hardware Z buffers: 393 *** Either ALL or NONE of these functions must be implemented! 394 *** NOTE that Each depth value is a 32-bit GLuint. If the depth 395 *** buffer is less than 32 bits deep then the extra upperbits are zero. 383 396 ***/ 384 397 385 void (*AllocDepthBuffer)( GLcontext *ctx ); 386 /* 387 * Called when the depth buffer must be allocated or possibly resized. 388 */ 389 390 GLuint (*DepthTestSpan)( GLcontext *ctx, 391 GLuint n, GLint x, GLint y, const GLdepth z[], 392 GLubyte mask[] ); 393 void (*DepthTestPixels)( GLcontext *ctx, 394 GLuint n, const GLint x[], const GLint y[], 395 const GLdepth z[], GLubyte mask[] ); 396 /* 397 * Apply the depth buffer test to an span/array of pixels and return 398 * an updated pixel mask. This function is not used when accelerated 399 * point, line, polygon functions are used. 400 */ 401 402 void (*ReadDepthSpanFloat)( GLcontext *ctx, 403 GLuint n, GLint x, GLint y, GLfloat depth[]); 404 void (*ReadDepthSpanInt)( GLcontext *ctx, 405 GLuint n, GLint x, GLint y, GLdepth depth[] ); 406 /* 407 * Return depth values as integers for glReadPixels. 408 * Floats should be returned in the range [0,1]. 409 * Ints (GLdepth) values should be in the range [0,MAXDEPTH]. 410 */ 398 void (*WriteDepthSpan)( GLcontext *ctx, GLuint n, GLint x, GLint y, 399 const GLdepth depth[], const GLubyte mask[] ); 400 /* Write a horizontal span of values into the depth buffer. Only write 401 * depth[i] value if mask[i] is nonzero. 402 */ 403 404 void (*ReadDepthSpan)( GLcontext *ctx, GLuint n, GLint x, GLint y, 405 GLdepth depth[] ); 406 /* Read a horizontal span of values from the depth buffer. 407 */ 408 409 410 void (*WriteDepthPixels)( GLcontext *ctx, GLuint n, 411 const GLint x[], const GLint y[], 412 const GLdepth depth[], const GLubyte mask[] ); 413 /* Write an array of randomly positioned depth values into the 414 * depth buffer. Only write depth[i] value if mask[i] is nonzero. 415 */ 416 417 void (*ReadDepthPixels)( GLcontext *ctx, GLuint n, 418 const GLint x[], const GLint y[], 419 GLdepth depth[] ); 420 /* Read an array of randomly positioned depth values from the depth buffer. 421 */ 422 411 423 412 424 413 425 /*** 414 *** Accelerated point, line, polygon, glDrawPixels and glBitmap functions: 426 *** For supporting hardware stencil buffers: 427 *** Either ALL or NONE of these functions must be implemented! 415 428 ***/ 416 429 417 points_func PointsFunc; 418 line_func LineFunc; 419 triangle_func TriangleFunc; 420 quad_func QuadFunc; 421 rect_func RectFunc; 422 430 void (*WriteStencilSpan)( GLcontext *ctx, GLuint n, GLint x, GLint y, 431 const GLstencil stencil[], const GLubyte mask[] ); 432 /* Write a horizontal span of stencil values into the stencil buffer. 433 * If mask is NULL, write all stencil values. 434 * Else, only write stencil[i] if mask[i] is non-zero. 435 */ 436 437 void (*ReadStencilSpan)( GLcontext *ctx, GLuint n, GLint x, GLint y, 438 GLstencil stencil[] ); 439 /* Read a horizontal span of stencil values from the stencil buffer. 440 */ 441 442 void (*WriteStencilPixels)( GLcontext *ctx, GLuint n, 443 const GLint x[], const GLint y[], 444 const GLstencil stencil[], 445 const GLubyte mask[] ); 446 /* Write an array of stencil values into the stencil buffer. 447 * If mask is NULL, write all stencil values. 448 * Else, only write stencil[i] if mask[i] is non-zero. 449 */ 450 451 void (*ReadStencilPixels)( GLcontext *ctx, GLuint n, 452 const GLint x[], const GLint y[], 453 GLstencil stencil[] ); 454 /* Read an array of stencil values from the stencil buffer. 455 */ 456 457 458 /*** 459 *** glDraw/Read/CopyPixels and glBitmap functions: 460 ***/ 423 461 424 462 GLboolean (*DrawPixels)( GLcontext *ctx, … … 433 471 */ 434 472 473 GLboolean (*ReadPixels)( GLcontext *ctx, 474 GLint x, GLint y, GLsizei width, GLsizei height, 475 GLenum format, GLenum type, 476 const struct gl_pixelstore_attrib *unpack, 477 GLvoid *dest ); 478 /* Called by glReadPixels. 479 * Return GL_TRUE if operation completed, else return GL_FALSE. 480 * This function must respect all glPixelTransfer settings. 481 */ 482 483 GLboolean (*CopyPixels)( GLcontext *ctx, 484 GLint srcx, GLint srcy, 485 GLsizei width, GLsizei height, 486 GLint dstx, GLint dsty, GLenum type ); 487 /* Do a glCopyPixels. Return GL_TRUE if operation completed, else 488 * return GL_FALSE. This function must respect all rasterization 489 * state, glPixelTransfer, glPixelZoom, etc. 490 */ 491 435 492 GLboolean (*Bitmap)( GLcontext *ctx, 436 493 GLint x, GLint y, GLsizei width, GLsizei height, … … 439 496 /* This is called by glBitmap. Works the same as DrawPixels, above. 440 497 */ 498 499 500 /*** 501 *** Texture mapping functions: 502 ***/ 503 504 void (*TexImage)( GLcontext *ctx, GLenum target, 505 struct gl_texture_object *tObj, GLint level, 506 GLint internalFormat, 507 const struct gl_texture_image *image ); 508 /* XXX this function is obsolete */ 509 /* Called whenever a texture object's image is changed. 510 * texObject is the number of the texture object being changed. 511 * level indicates the mipmap level. 512 * internalFormat is the format in which the texture is to be stored. 513 * image is a pointer to a gl_texture_image struct which contains 514 * the actual image data. 515 */ 516 517 void (*TexSubImage)( GLcontext *ctx, GLenum target, 518 struct gl_texture_object *tObj, GLint level, 519 GLint xoffset, GLint yoffset, 520 GLsizei width, GLsizei height, 521 GLint internalFormat, 522 const struct gl_texture_image *image ); 523 /* XXX this function is obsolete */ 524 /* Called from glTexSubImage() to define a sub-region of a texture. 525 */ 526 527 528 GLboolean (*TexImage1D)( GLcontext *ctx, GLenum target, GLint level, 529 GLenum format, GLenum type, const GLvoid *pixels, 530 const struct gl_pixelstore_attrib *packing, 531 struct gl_texture_object *texObj, 532 struct gl_texture_image *texImage, 533 GLboolean *retainInternalCopy ); 534 GLboolean (*TexImage2D)( GLcontext *ctx, GLenum target, GLint level, 535 GLenum format, GLenum type, const GLvoid *pixels, 536 const struct gl_pixelstore_attrib *packing, 537 struct gl_texture_object *texObj, 538 struct gl_texture_image *texImage, 539 GLboolean *retainInternalCopy ); 540 GLboolean (*TexImage3D)( GLcontext *ctx, GLenum target, GLint level, 541 GLenum format, GLenum type, const GLvoid *pixels, 542 const struct gl_pixelstore_attrib *packing, 543 struct gl_texture_object *texObj, 544 struct gl_texture_image *texImage, 545 GLboolean *retainInternalCopy ); 546 /* Called by glTexImage1/2/3D. 547 * Will not be called if any glPixelTransfer operations are enabled. 548 * Arguments: 549 * <target>, <level>, <format>, <type> and <pixels> are user specified. 550 * <packing> indicates the image packing of pixels. 551 * <texObj> is the target texture object. 552 * <texImage> is the target texture image. It will have the texture 553 * width, height, depth, border and internalFormat information. 554 * <retainInternalCopy> is returned by this function and indicates whether 555 * core Mesa should keep an internal copy of the texture image. 556 * Return GL_TRUE if operation completed, return GL_FALSE if core Mesa 557 * should do the job. If GL_FALSE is returned, this function will be 558 * called a second time after the texture image has been unpacked into 559 * GLubytes. It may be easier for the driver to handle then. 560 */ 561 562 GLboolean (*TexSubImage1D)( GLcontext *ctx, GLenum target, GLint level, 563 GLint xoffset, GLsizei width, 564 GLenum format, GLenum type, 565 const GLvoid *pixels, 566 const struct gl_pixelstore_attrib *packing, 567 struct gl_texture_object *texObj, 568 struct gl_texture_image *texImage ); 569 GLboolean (*TexSubImage2D)( GLcontext *ctx, GLenum target, GLint level, 570 GLint xoffset, GLint yoffset, 571 GLsizei width, GLsizei height, 572 GLenum format, GLenum type, 573 const GLvoid *pixels, 574 const struct gl_pixelstore_attrib *packing, 575 struct gl_texture_object *texObj, 576 struct gl_texture_image *texImage ); 577 GLboolean (*TexSubImage3D)( GLcontext *ctx, GLenum target, GLint level, 578 GLint xoffset, GLint yoffset, GLint zoffset, 579 GLsizei width, GLsizei height, GLint depth, 580 GLenum format, GLenum type, 581 const GLvoid *pixels, 582 const struct gl_pixelstore_attrib *packing, 583 struct gl_texture_object *texObj, 584 struct gl_texture_image *texImage ); 585 /* Called by glTexSubImage1/2/3D. 586 * Will not be called if any glPixelTransfer operations are enabled. 587 * Arguments: 588 * <target>, <level>, <xoffset>, <yoffset>, <zoffset>, <width>, <height>, 589 * <depth>, <format>, <type> and <pixels> are user specified. 590 * <packing> indicates the image packing of pixels. 591 * <texObj> is the target texture object. 592 * <texImage> is the target texture image. It will have the texture 593 * width, height, border and internalFormat information. 594 * Return GL_TRUE if operation completed, return GL_FALSE if core Mesa 595 * should do the job. If GL_FALSE is returned, then TexImage1/2/3D will 596 * be called with the complete texture image. 597 */ 598 599 GLboolean (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level, 600 GLenum internalFormat, GLint x, GLint y, 601 GLsizei width, GLint border ); 602 GLboolean (*CopyTexImage2D)( GLcontext *ctx, GLenum target, GLint level, 603 GLenum internalFormat, GLint x, GLint y, 604 GLsizei width, GLsizei height, GLint border ); 605 /* Called by glCopyTexImage1D and glCopyTexImage2D. 606 * Will not be called if any glPixelTransfer operations are enabled. 607 * Return GL_TRUE if operation completed, return GL_FALSE if core Mesa 608 * should do the job. 609 */ 610 611 GLboolean (*CopyTexSubImage1D)( GLcontext *ctx, GLenum target, GLint level, 612 GLint xoffset, 613 GLint x, GLint y, GLsizei width ); 614 GLboolean (*CopyTexSubImage2D)( GLcontext *ctx, GLenum target, GLint level, 615 GLint xoffset, GLint yoffset, 616 GLint x, GLint y, 617 GLsizei width, GLsizei height ); 618 GLboolean (*CopyTexSubImage3D)( GLcontext *ctx, GLenum target, GLint level, 619 GLint xoffset, GLint yoffset, GLint zoffset, 620 GLint x, GLint y, 621 GLsizei width, GLsizei height ); 622 /* Called by glCopyTexSubImage1/2/3D. 623 * Will not be called if any glPixelTransfer operations are enabled. 624 * Return GL_TRUE if operation completed, return GL_FALSE if core Mesa 625 * should do the job. 626 */ 627 628 GLvoid *(*GetTexImage)( GLcontext *ctx, GLenum target, GLint level, 629 GLenum *formatOut, GLenum *typeOut, 630 GLboolean *freeImageOut ); 631 /* Called by glGetTexImage or by core Mesa when a texture image 632 * is needed for software fallback rendering. 633 * Return the address of the texture image or NULL if failure. 634 * The image must be tightly packed (i.e. row stride = image width) 635 * Return the image's format and type in formatOut and typeOut. 636 * The format and type must be values which are accepted by glTexImage. 637 * Set the freeImageOut flag if the returned image should be deallocated 638 * with FREE() when finished. 639 * The size of the image can be deduced from the target and level. 640 * Core Mesa will perform any image format/type conversions that are needed. 641 */ 642 643 void (*TexEnv)( GLcontext *ctx, GLenum target, GLenum pname, 644 const GLfloat *param ); 645 /* Called by glTexEnv*(). 646 */ 647 648 void (*TexParameter)( GLcontext *ctx, GLenum target, 649 struct gl_texture_object *texObj, 650 GLenum pname, const GLfloat *params ); 651 /* Called by glTexParameter*(). 652 * <target> is user specified 653 * <texObj> the texture object to modify 654 * <pname> is one of GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, 655 * GL_TEXTURE_WRAP_[STR], or GL_TEXTURE_BORDER_COLOR. 656 * <params> is user specified. 657 */ 658 659 void (*BindTexture)( GLcontext *ctx, GLenum target, 660 struct gl_texture_object *tObj ); 661 /* Called by glBindTexture(). 662 */ 663 664 void (*DeleteTexture)( GLcontext *ctx, struct gl_texture_object *tObj ); 665 /* Called when a texture object is about to be deallocated. Driver 666 * should free anything attached to the DriverData pointers. 667 */ 668 669 GLboolean (*IsTextureResident)( GLcontext *ctx, 670 struct gl_texture_object *t ); 671 /* Called by glAreTextureResident(). 672 */ 673 674 void (*PrioritizeTexture)( GLcontext *ctx, struct gl_texture_object *t, 675 GLclampf priority ); 676 /* Called by glPrioritizeTextures(). 677 */ 678 679 void (*ActiveTexture)( GLcontext *ctx, GLuint texUnitNumber ); 680 /* Called by glActiveTextureARB to set current texture unit. 681 */ 682 683 void (*UpdateTexturePalette)( GLcontext *ctx, 684 struct gl_texture_object *tObj ); 685 /* Called when the texture's color lookup table is changed. 686 * If tObj is NULL then the shared texture palette ctx->Texture.Palette 687 * is to be updated. 688 */ 689 690 691 692 /*** 693 *** Accelerated point, line, polygon, glDrawPixels and glBitmap functions: 694 ***/ 695 696 points_func PointsFunc; 697 line_func LineFunc; 698 triangle_func TriangleFunc; 699 quad_func QuadFunc; 700 rect_func RectFunc; 701 702 703 /*** 704 *** Transformation/Rendering functions 705 ***/ 441 706 442 707 void (*RenderStart)( GLcontext *ctx ); … … 459 724 */ 460 725 461 462 726 render_func *RenderVBClippedTab; 463 727 render_func *RenderVBCulledTab; … … 468 732 */ 469 733 470 471 734 void (*ReducedPrimitiveChange)( GLcontext *ctx, GLenum primitive ); 472 735 /* If registered, this will be called when rendering transitions between … … 482 745 * implement DD_TRI_OFFSET. 483 746 */ 484 485 747 486 748 GLboolean (*MultipassFunc)( struct vertex_buffer *VB, GLuint passno ); … … 493 755 * This function will be first invoked with passno == 1. 494 756 */ 495 496 /***497 *** Texture mapping functions:498 ***/499 500 void (*TexEnv)( GLcontext *ctx, GLenum pname, const GLfloat *param );501 /*502 * Called whenever glTexEnv*() is called.503 * Pname will be one of GL_TEXTURE_ENV_MODE or GL_TEXTURE_ENV_COLOR.504 * If pname is GL_TEXTURE_ENV_MODE then param will be one505 * of GL_MODULATE, GL_BLEND, GL_DECAL, or GL_REPLACE.506 */507 508 void (*TexImage)( GLcontext *ctx, GLenum target,509 struct gl_texture_object *tObj, GLint level,510 GLint internalFormat,511 const struct gl_texture_image *image );512 /*513 * Called whenever a texture object's image is changed.514 * texObject is the number of the texture object being changed.515 * level indicates the mipmap level.516 * internalFormat is the format in which the texture is to be stored.517 * image is a pointer to a gl_texture_image struct which contains518 * the actual image data.519 */520 521 void (*TexSubImage)( GLcontext *ctx, GLenum target,522 struct gl_texture_object *tObj, GLint level,523 GLint xoffset, GLint yoffset,524 GLsizei width, GLsizei height,525 GLint internalFormat,526 const struct gl_texture_image *image );527 /*528 * Called from glTexSubImage() to define a sub-region of a texture.529 */530 531 void (*TexParameter)( GLcontext *ctx, GLenum target,532 struct gl_texture_object *tObj,533 GLenum pname, const GLfloat *params );534 /*535 * Called whenever glTexParameter*() is called.536 * target is GL_TEXTURE_1D or GL_TEXTURE_2D537 * texObject is the texture object to modify538 * pname is one of GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER,539 * GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, or GL_TEXTURE_BORDER_COLOR.540 * params is dependant on pname. See man glTexParameter.541 */542 543 void (*BindTexture)( GLcontext *ctx, GLenum target,544 struct gl_texture_object *tObj );545 /*546 * Called whenever glBindTexture() is called. This specifies which547 * texture is to be the current one. No dirty flags will be set.548 */549 550 void (*DeleteTexture)( GLcontext *ctx, struct gl_texture_object *tObj );551 /*552 * Called when a texture object is about to be deallocated. Driver553 * should free anything attached to the DriverData pointers.554 */555 556 void (*UpdateTexturePalette)( GLcontext *ctx,557 struct gl_texture_object *tObj );558 /*559 * Called when the texture's color lookup table is changed.560 * If tObj is NULL then the shared texture palette ctx->Texture.Palette561 * was changed.562 */563 564 void (*UseGlobalTexturePalette)( GLcontext *ctx, GLboolean state );565 /*566 * Called via glEnable/Disable(GL_SHARED_TEXTURE_PALETTE_EXT)567 */568 569 void (*ActiveTexture)( GLcontext *ctx, GLuint texUnitNumber );570 /*571 * Called by glActiveTextureARB to set current texture unit.572 */573 574 575 GLboolean (*IsTextureResident)( GLcontext *ctx,576 struct gl_texture_object *t );577 /*578 * Allows the driver to implement the AreTexturesResident tests without579 * knowing about Mesa's internal hash tables for textures.580 */581 582 void (*PrioritizeTexture)( GLcontext *ctx,583 struct gl_texture_object *t,584 GLclampf priority );585 /*586 * Notify driver of priority change for a texture.587 */588 589 590 591 757 592 758 /*** … … 658 824 void (*Hint)(GLcontext *ctx, GLenum target, GLenum mode); 659 825 void (*Lightfv)(GLcontext *ctx, GLenum light, 660 826 GLenum pname, const GLfloat *params, GLint nparams ); 661 827 void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params); 828 void (*LineStipple)(GLcontext *ctx, GLint factor, GLushort pattern ); 829 void (*LineWidth)(GLcontext *ctx, GLfloat width); 662 830 void (*LogicOpcode)(GLcontext *ctx, GLenum opcode); 663 831 void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode); 832 void (*PolygonStipple)(GLcontext *ctx, const GLubyte *mask ); 664 833 void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); 665 834 void (*ShadeModel)(GLcontext *ctx, GLenum mode);
Note:
See TracChangeset
for help on using the changeset viewer.