home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible (2nd Edition) / OpenGL SuperBible e2.iso / tools / Mesa-3.0 / SRC / APIEXT.C < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-08  |  20.7 KB  |  894 lines

  1. /* $Id: apiext.c,v 3.2 1998/06/07 22:18:52 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  3.0
  6.  * Copyright (C) 1995-1998  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: apiext.c,v $
  26.  * Revision 3.2  1998/06/07 22:18:52  brianp
  27.  * implemented GL_EXT_multitexture extension
  28.  *
  29.  * Revision 3.1  1998/03/27 03:30:36  brianp
  30.  * fixed G++ warnings
  31.  *
  32.  * Revision 3.0  1998/02/20 04:45:50  brianp
  33.  * implemented GL_SGIS_multitexture
  34.  *
  35.  */
  36.  
  37.  
  38. #ifdef PC_HEADER
  39. #include "all.h"
  40. #else
  41. #include <stdio.h>
  42. #include <stdlib.h>
  43. #include "api.h"
  44. #include "context.h"
  45. #include "types.h"
  46. #endif
  47.  
  48.  
  49.  
  50. /*
  51.  * Extension API functions
  52.  */
  53.  
  54.  
  55.  
  56. /*
  57.  * GL_EXT_blend_minmax
  58.  */
  59.  
  60. void APIENTRY glBlendEquationEXT( GLenum mode )
  61. {
  62.    GET_CONTEXT;
  63.    CHECK_CONTEXT;
  64.    (*CC->API.BlendEquation)(CC, mode);
  65. }
  66.  
  67.  
  68.  
  69.  
  70. /*
  71.  * GL_EXT_blend_color
  72.  */
  73.  
  74. void APIENTRY glBlendColorEXT( GLclampf red, GLclampf green,
  75.                                GLclampf blue, GLclampf alpha )
  76. {
  77.    GET_CONTEXT;
  78.    CHECK_CONTEXT;
  79.    (*CC->API.BlendColor)(CC, red, green, blue, alpha);
  80. }
  81.  
  82.  
  83.  
  84.  
  85. /*
  86.  * GL_EXT_vertex_array
  87.  */
  88.  
  89. void APIENTRY glVertexPointerEXT( GLint size, GLenum type, GLsizei stride,
  90.                                   GLsizei count, const GLvoid *ptr )
  91. {
  92.    GET_CONTEXT;
  93.    CHECK_CONTEXT;
  94.    (*CC->API.VertexPointer)(CC, size, type, stride, ptr);
  95.    (void) count;
  96. }
  97.  
  98.  
  99. void APIENTRY glNormalPointerEXT( GLenum type, GLsizei stride, GLsizei count,
  100.                                   const GLvoid *ptr )
  101. {
  102.    GET_CONTEXT;
  103.    CHECK_CONTEXT;
  104.    (*CC->API.NormalPointer)(CC, type, stride, ptr);
  105.    (void) count;
  106. }
  107.  
  108.  
  109. void APIENTRY glColorPointerEXT( GLint size, GLenum type, GLsizei stride,
  110.                                  GLsizei count, const GLvoid *ptr )
  111. {
  112.    GET_CONTEXT;
  113.    CHECK_CONTEXT;
  114.    (*CC->API.ColorPointer)(CC, size, type, stride, ptr);
  115.    (void) count;
  116. }
  117.  
  118.  
  119. void APIENTRY glIndexPointerEXT( GLenum type, GLsizei stride,
  120.                                  GLsizei count, const GLvoid *ptr )
  121. {
  122.    GET_CONTEXT;
  123.    CHECK_CONTEXT;
  124.    (*CC->API.IndexPointer)(CC, type, stride, ptr);
  125.    (void) count;
  126. }
  127.  
  128.  
  129. void APIENTRY glTexCoordPointerEXT( GLint size, GLenum type, GLsizei stride,
  130.                                     GLsizei count, const GLvoid *ptr )
  131. {
  132.    GET_CONTEXT;
  133.    CHECK_CONTEXT;
  134.    (*CC->API.TexCoordPointer)(CC, size, type, stride, ptr);
  135.    (void) count;
  136. }
  137.  
  138.  
  139. void APIENTRY glEdgeFlagPointerEXT( GLsizei stride, GLsizei count,
  140.                                     const GLboolean *ptr )
  141. {
  142.    GET_CONTEXT;
  143.    CHECK_CONTEXT;
  144.    (*CC->API.EdgeFlagPointer)(CC, stride, ptr);
  145.    (void) count;
  146. }
  147.  
  148.  
  149. void APIENTRY glGetPointervEXT( GLenum pname, GLvoid **params )
  150. {
  151.    GET_CONTEXT;
  152.    CHECK_CONTEXT;
  153.    (*CC->API.GetPointerv)(CC, pname, params);
  154. }
  155.  
  156.  
  157. void APIENTRY glArrayElementEXT( GLint i )
  158. {
  159.    GET_CONTEXT;
  160.    CHECK_CONTEXT;
  161.    (*CC->API.ArrayElement)(CC, i);
  162. }
  163.  
  164.  
  165. void APIENTRY glDrawArraysEXT( GLenum mode, GLint first, GLsizei count )
  166. {
  167.    GET_CONTEXT;
  168.    CHECK_CONTEXT;
  169.    (*CC->API.DrawArrays)(CC, mode, first, count);
  170. }
  171.  
  172.  
  173.  
  174.  
  175. /*
  176.  * GL_EXT_texture_object
  177.  */
  178.  
  179. GLboolean APIENTRY glAreTexturesResidentEXT( GLsizei n, const GLuint *textures,
  180.                                              GLboolean *residences )
  181. {
  182.    return glAreTexturesResident( n, textures, residences );
  183. }
  184.  
  185.  
  186. void APIENTRY glBindTextureEXT( GLenum target, GLuint texture )
  187. {
  188.    glBindTexture( target, texture );
  189. }
  190.  
  191.  
  192. void APIENTRY glDeleteTexturesEXT( GLsizei n, const GLuint *textures)
  193. {
  194.    glDeleteTextures( n, textures );
  195. }
  196.  
  197.  
  198. void APIENTRY glGenTexturesEXT( GLsizei n, GLuint *textures )
  199. {
  200.    glGenTextures( n, textures );
  201. }
  202.  
  203.  
  204. GLboolean APIENTRY glIsTextureEXT( GLuint texture )
  205. {
  206.    return glIsTexture( texture );
  207. }
  208.  
  209.  
  210. void APIENTRY glPrioritizeTexturesEXT( GLsizei n, const GLuint *textures,
  211.                                        const GLclampf *priorities )
  212. {
  213.    glPrioritizeTextures( n, textures, priorities );
  214. }
  215.  
  216.  
  217.  
  218.  
  219. /*
  220.  * GL_EXT_texture3D
  221.  */
  222.  
  223. void APIENTRY glCopyTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset,
  224.                                       GLint yoffset, GLint zoffset,
  225.                                       GLint x, GLint y, GLsizei width,
  226.                                       GLsizei height )
  227. {
  228.    glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset,
  229.                        x, y, width, height);
  230. }
  231.  
  232.  
  233.  
  234. void APIENTRY glTexImage3DEXT( GLenum target, GLint level, GLenum internalformat,
  235.                                GLsizei width, GLsizei height, GLsizei depth,
  236.                                GLint border, GLenum format, GLenum type,
  237.                                const GLvoid *pixels )
  238. {
  239.    glTexImage3D(target, level, internalformat, width, height, depth,
  240.                 border, format, type, pixels);
  241. }
  242.  
  243.  
  244. void APIENTRY glTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset,
  245.                                   GLint yoffset, GLint zoffset, GLsizei width,
  246.                                   GLsizei height, GLsizei depth, GLenum format,
  247.                                   GLenum type, const GLvoid *pixels )
  248. {
  249.    glTexSubImage3D(target, level, xoffset, yoffset, zoffset,
  250.                    width, height, depth, format, type, pixels);
  251. }
  252.  
  253.  
  254.  
  255.  
  256. /*
  257.  * GL_EXT_point_parameters
  258.  */
  259.  
  260. void APIENTRY glPointParameterfEXT( GLenum pname, GLfloat param )
  261. {
  262.    GLfloat params[3];
  263.    GET_CONTEXT;
  264.    CHECK_CONTEXT;
  265.    params[0] = param;
  266.    params[1] = 0.0;
  267.    params[2] = 0.0;
  268.    (*CC->API.PointParameterfvEXT)(CC, pname, params);
  269. }
  270.  
  271.  
  272. void APIENTRY glPointParameterfvEXT( GLenum pname, const GLfloat *params )
  273. {
  274.    GET_CONTEXT;
  275.    CHECK_CONTEXT;
  276.    (*CC->API.PointParameterfvEXT)(CC, pname, params);
  277. }
  278.  
  279.  
  280.  
  281.  
  282. #ifdef GL_MESA_window_pos
  283. /*
  284.  * Mesa implementation of glWindowPos*MESA()
  285.  */
  286. void APIENTRY glWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
  287. {
  288.    GET_CONTEXT;
  289.    CHECK_CONTEXT;
  290.    (*CC->API.WindowPos4fMESA)( CC, x, y, z, w );
  291. }
  292. #else
  293. /* Implementation in winpos.c is used */
  294. #endif
  295.  
  296.  
  297. void APIENTRY glWindowPos2iMESA( GLint x, GLint y )
  298. {
  299.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, 0.0F, 1.0F );
  300. }
  301.  
  302. void APIENTRY glWindowPos2sMESA( GLshort x, GLshort y )
  303. {
  304.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, 0.0F, 1.0F );
  305. }
  306.  
  307. void APIENTRY glWindowPos2fMESA( GLfloat x, GLfloat y )
  308. {
  309.    glWindowPos4fMESA( x, y, 0.0F, 1.0F );
  310. }
  311.  
  312. void APIENTRY glWindowPos2dMESA( GLdouble x, GLdouble y )
  313. {
  314.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, 0.0F, 1.0F );
  315. }
  316.  
  317. void APIENTRY glWindowPos2ivMESA( const GLint *p )
  318. {
  319.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1], 0.0F, 1.0F );
  320. }
  321.  
  322. void APIENTRY glWindowPos2svMESA( const GLshort *p )
  323. {
  324.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1], 0.0F, 1.0F );
  325. }
  326.  
  327. void APIENTRY glWindowPos2fvMESA( const GLfloat *p )
  328. {
  329.    glWindowPos4fMESA( p[0], p[1], 0.0F, 1.0F );
  330. }
  331.  
  332. void APIENTRY glWindowPos2dvMESA( const GLdouble *p )
  333. {
  334.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1], 0.0F, 1.0F );
  335. }
  336.  
  337. void APIENTRY glWindowPos3iMESA( GLint x, GLint y, GLint z )
  338. {
  339.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F );
  340. }
  341.  
  342. void APIENTRY glWindowPos3sMESA( GLshort x, GLshort y, GLshort z )
  343. {
  344.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F );
  345. }
  346.  
  347. void APIENTRY glWindowPos3fMESA( GLfloat x, GLfloat y, GLfloat z )
  348. {
  349.    glWindowPos4fMESA( x, y, z, 1.0F );
  350. }
  351.  
  352. void APIENTRY glWindowPos3dMESA( GLdouble x, GLdouble y, GLdouble z )
  353. {
  354.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F );
  355. }
  356.  
  357. void APIENTRY glWindowPos3ivMESA( const GLint *p )
  358. {
  359.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2], 1.0F );
  360. }
  361.  
  362. void APIENTRY glWindowPos3svMESA( const GLshort *p )
  363. {
  364.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2], 1.0F );
  365. }
  366.  
  367. void APIENTRY glWindowPos3fvMESA( const GLfloat *p )
  368. {
  369.    glWindowPos4fMESA( p[0], p[1], p[2], 1.0F );
  370. }
  371.  
  372. void APIENTRY glWindowPos3dvMESA( const GLdouble *p )
  373. {
  374.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2], 1.0F );
  375. }
  376.  
  377. void APIENTRY glWindowPos4iMESA( GLint x, GLint y, GLint z, GLint w )
  378. {
  379.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
  380. }
  381.  
  382. void APIENTRY glWindowPos4sMESA( GLshort x, GLshort y, GLshort z, GLshort w )
  383. {
  384.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
  385. }
  386.  
  387. void APIENTRY glWindowPos4dMESA( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
  388. {
  389.    glWindowPos4fMESA( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
  390. }
  391.  
  392.  
  393. void APIENTRY glWindowPos4ivMESA( const GLint *p )
  394. {
  395.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1],
  396.                       (GLfloat) p[2], (GLfloat) p[3] );
  397. }
  398.  
  399. void APIENTRY glWindowPos4svMESA( const GLshort *p )
  400. {
  401.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1],
  402.                       (GLfloat) p[2], (GLfloat) p[3] );
  403. }
  404.  
  405. void APIENTRY glWindowPos4fvMESA( const GLfloat *p )
  406. {
  407.    glWindowPos4fMESA( p[0], p[1], p[2], p[3] );
  408. }
  409.  
  410. void APIENTRY glWindowPos4dvMESA( const GLdouble *p )
  411. {
  412.    glWindowPos4fMESA( (GLfloat) p[0], (GLfloat) p[1],
  413.                       (GLfloat) p[2], (GLfloat) p[3] );
  414. }
  415.  
  416.  
  417.  
  418.  
  419. /*
  420.  * GL_MESA_resize_buffers
  421.  */
  422.  
  423. /*
  424.  * Called by user application when window has been resized.
  425.  */
  426. void APIENTRY glResizeBuffersMESA( void )
  427. {
  428.    GET_CONTEXT;
  429.    CHECK_CONTEXT;
  430.    (*CC->API.ResizeBuffersMESA)( CC );
  431. }
  432.  
  433.  
  434.  
  435. /*
  436.  * GL_SGIS_multitexture
  437.  */
  438.  
  439. void APIENTRY glMultiTexCoord1dSGIS(GLenum target, GLdouble s)
  440. {
  441.    GET_CONTEXT;
  442.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  443. }
  444.  
  445. void APIENTRY glMultiTexCoord1dvSGIS(GLenum target, const GLdouble *v)
  446. {
  447.    GET_CONTEXT;
  448.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  449. }
  450.  
  451. void APIENTRY glMultiTexCoord1fSGIS(GLenum target, GLfloat s)
  452. {
  453.    GET_CONTEXT;
  454.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  455. }
  456.  
  457. void APIENTRY glMultiTexCoord1fvSGIS(GLenum target, const GLfloat *v)
  458. {
  459.    GET_CONTEXT;
  460.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  461. }
  462.  
  463. void APIENTRY glMultiTexCoord1iSGIS(GLenum target, GLint s)
  464. {
  465.    GET_CONTEXT;
  466.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  467. }
  468.  
  469. void APIENTRY glMultiTexCoord1ivSGIS(GLenum target, const GLint *v)
  470. {
  471.    GET_CONTEXT;
  472.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  473. }
  474.  
  475. void APIENTRY glMultiTexCoord1sSGIS(GLenum target, GLshort s)
  476. {
  477.    GET_CONTEXT;
  478.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  479. }
  480.  
  481. void APIENTRY glMultiTexCoord1svSGIS(GLenum target, const GLshort *v)
  482. {
  483.    GET_CONTEXT;
  484.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  485. }
  486.  
  487. void APIENTRY glMultiTexCoord2dSGIS(GLenum target, GLdouble s, GLdouble t)
  488. {
  489.    GET_CONTEXT;
  490.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  491. }
  492.  
  493. void APIENTRY glMultiTexCoord2dvSGIS(GLenum target, const GLdouble *v)
  494. {
  495.    GET_CONTEXT;
  496.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  497. }
  498.  
  499. void APIENTRY glMultiTexCoord2fSGIS(GLenum target, GLfloat s, GLfloat t)
  500. {
  501.    GET_CONTEXT;
  502.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  503. }
  504.  
  505. void APIENTRY glMultiTexCoord2fvSGIS(GLenum target, const GLfloat *v)
  506. {
  507.    GET_CONTEXT;
  508.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  509. }
  510.  
  511. void APIENTRY glMultiTexCoord2iSGIS(GLenum target, GLint s, GLint t)
  512. {
  513.    GET_CONTEXT;
  514.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  515. }
  516.  
  517. void APIENTRY glMultiTexCoord2ivSGIS(GLenum target, const GLint *v)
  518. {
  519.    GET_CONTEXT;
  520.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  521. }
  522.  
  523. void APIENTRY glMultiTexCoord2sSGIS(GLenum target, GLshort s, GLshort t)
  524. {
  525.    GET_CONTEXT;
  526.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  527. }
  528.  
  529. void APIENTRY glMultiTexCoord2svSGIS(GLenum target, const GLshort *v)
  530. {
  531.    GET_CONTEXT;
  532.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  533. }
  534.  
  535. void APIENTRY glMultiTexCoord3dSGIS(GLenum target, GLdouble s, GLdouble t, GLdouble r)
  536. {
  537.    GET_CONTEXT;
  538.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  539. }
  540.  
  541. void APIENTRY glMultiTexCoord3dvSGIS(GLenum target, const GLdouble *v)
  542. {
  543.    GET_CONTEXT;
  544.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  545. }
  546.  
  547. void APIENTRY glMultiTexCoord3fSGIS(GLenum target, GLfloat s, GLfloat t, GLfloat r)
  548. {
  549.    GET_CONTEXT;
  550.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  551. }
  552.  
  553. void APIENTRY glMultiTexCoord3fvSGIS(GLenum target, const GLfloat *v)
  554. {
  555.    GET_CONTEXT;
  556.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  557. }
  558.  
  559. void APIENTRY glMultiTexCoord3iSGIS(GLenum target, GLint s, GLint t, GLint r)
  560. {
  561.    GET_CONTEXT;
  562.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  563. }
  564.  
  565. void APIENTRY glMultiTexCoord3ivSGIS(GLenum target, const GLint *v)
  566. {
  567.    GET_CONTEXT;
  568.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  569. }
  570.  
  571. void APIENTRY glMultiTexCoord3sSGIS(GLenum target, GLshort s, GLshort t, GLshort r)
  572. {
  573.    GET_CONTEXT;
  574.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  575. }
  576.  
  577. void APIENTRY glMultiTexCoord3svSGIS(GLenum target, const GLshort *v)
  578. {
  579.    GET_CONTEXT;
  580.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  581. }
  582.  
  583. void APIENTRY glMultiTexCoord4dSGIS(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
  584. {
  585.    GET_CONTEXT;
  586.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  587. }
  588.  
  589. void APIENTRY glMultiTexCoord4dvSGIS(GLenum target, const GLdouble *v)
  590. {
  591.    GET_CONTEXT;
  592.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  593. }
  594.  
  595. void APIENTRY glMultiTexCoord4fSGIS(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
  596. {
  597.    GET_CONTEXT;
  598.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  599. }
  600.  
  601. void APIENTRY glMultiTexCoord4fvSGIS(GLenum target, const GLfloat *v)
  602. {
  603.    GET_CONTEXT;
  604.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  605. }
  606.  
  607. void APIENTRY glMultiTexCoord4iSGIS(GLenum target, GLint s, GLint t, GLint r, GLint q)
  608. {
  609.    GET_CONTEXT;
  610.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  611. }
  612.  
  613. void APIENTRY glMultiTexCoord4ivSGIS(GLenum target, const GLint *v)
  614. {
  615.    GET_CONTEXT;
  616.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  617. }
  618.  
  619. void APIENTRY glMultiTexCoord4sSGIS(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
  620. {
  621.    GET_CONTEXT;
  622.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  623. }
  624.  
  625. void APIENTRY glMultiTexCoord4svSGIS(GLenum target, const GLshort *v)
  626. {
  627.    GET_CONTEXT;
  628.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  629. }
  630.  
  631.  
  632.  
  633. void APIENTRY glMultiTexCoordPointerSGIS(GLenum target, GLint size, GLenum type,
  634.                                          GLsizei stride, const GLvoid *ptr)
  635. {
  636.    GET_CONTEXT;
  637.    CHECK_CONTEXT;
  638.    (*CC->API.MultiTexCoordPointer)(CC, target, size, type, stride, ptr);
  639. }
  640.  
  641.  
  642.  
  643. void APIENTRY glSelectTextureSGIS(GLenum target)
  644. {
  645.    GET_CONTEXT;
  646.    CHECK_CONTEXT;
  647.    (*CC->API.SelectTextureSGIS)(CC, target);
  648. }
  649.  
  650.  
  651.  
  652. void APIENTRY glSelectTextureCoordSetSGIS(GLenum target)
  653. {
  654.    GET_CONTEXT;
  655.    CHECK_CONTEXT;
  656.    (*CC->API.SelectTextureCoordSet)(CC, target);
  657. }
  658.  
  659.  
  660.  
  661.  
  662. /*
  663.  * GL_EXT_multitexture
  664.  */
  665.  
  666. void APIENTRY glMultiTexCoord1dEXT(GLenum target, GLdouble s)
  667. {
  668.    GET_CONTEXT;
  669.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  670. }
  671.  
  672. void APIENTRY glMultiTexCoord1dvEXT(GLenum target, const GLdouble *v)
  673. {
  674.    GET_CONTEXT;
  675.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  676. }
  677.  
  678. void APIENTRY glMultiTexCoord1fEXT(GLenum target, GLfloat s)
  679. {
  680.    GET_CONTEXT;
  681.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  682. }
  683.  
  684. void APIENTRY glMultiTexCoord1fvEXT(GLenum target, const GLfloat *v)
  685. {
  686.    GET_CONTEXT;
  687.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  688. }
  689.  
  690. void APIENTRY glMultiTexCoord1iEXT(GLenum target, GLint s)
  691. {
  692.    GET_CONTEXT;
  693.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  694. }
  695.  
  696. void APIENTRY glMultiTexCoord1ivEXT(GLenum target, const GLint *v)
  697. {
  698.    GET_CONTEXT;
  699.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  700. }
  701.  
  702. void APIENTRY glMultiTexCoord1sEXT(GLenum target, GLshort s)
  703. {
  704.    GET_CONTEXT;
  705.    (*CC->API.MultiTexCoord4f)( CC, target, s, 0.0, 0.0, 1.0 );
  706. }
  707.  
  708. void APIENTRY glMultiTexCoord1svEXT(GLenum target, const GLshort *v)
  709. {
  710.    GET_CONTEXT;
  711.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], 0.0, 0.0, 1.0 );
  712. }
  713.  
  714. void APIENTRY glMultiTexCoord2dEXT(GLenum target, GLdouble s, GLdouble t)
  715. {
  716.    GET_CONTEXT;
  717.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  718. }
  719.  
  720. void APIENTRY glMultiTexCoord2dvEXT(GLenum target, const GLdouble *v)
  721. {
  722.    GET_CONTEXT;
  723.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  724. }
  725.  
  726. void APIENTRY glMultiTexCoord2fEXT(GLenum target, GLfloat s, GLfloat t)
  727. {
  728.    GET_CONTEXT;
  729.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  730. }
  731.  
  732. void APIENTRY glMultiTexCoord2fvEXT(GLenum target, const GLfloat *v)
  733. {
  734.    GET_CONTEXT;
  735.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  736. }
  737.  
  738. void APIENTRY glMultiTexCoord2iEXT(GLenum target, GLint s, GLint t)
  739. {
  740.    GET_CONTEXT;
  741.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  742. }
  743.  
  744. void APIENTRY glMultiTexCoord2ivEXT(GLenum target, const GLint *v)
  745. {
  746.    GET_CONTEXT;
  747.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  748. }
  749.  
  750. void APIENTRY glMultiTexCoord2sEXT(GLenum target, GLshort s, GLshort t)
  751. {
  752.    GET_CONTEXT;
  753.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, 0.0, 1.0 );
  754. }
  755.  
  756. void APIENTRY glMultiTexCoord2svEXT(GLenum target, const GLshort *v)
  757. {
  758.    GET_CONTEXT;
  759.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], 0.0, 1.0 );
  760. }
  761.  
  762. void APIENTRY glMultiTexCoord3dEXT(GLenum target, GLdouble s, GLdouble t, GLdouble r)
  763. {
  764.    GET_CONTEXT;
  765.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  766. }
  767.  
  768. void APIENTRY glMultiTexCoord3dvEXT(GLenum target, const GLdouble *v)
  769. {
  770.    GET_CONTEXT;
  771.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  772. }
  773.  
  774. void APIENTRY glMultiTexCoord3fEXT(GLenum target, GLfloat s, GLfloat t, GLfloat r)
  775. {
  776.    GET_CONTEXT;
  777.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  778. }
  779.  
  780. void APIENTRY glMultiTexCoord3fvEXT(GLenum target, const GLfloat *v)
  781. {
  782.    GET_CONTEXT;
  783.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  784. }
  785.  
  786. void APIENTRY glMultiTexCoord3iEXT(GLenum target, GLint s, GLint t, GLint r)
  787. {
  788.    GET_CONTEXT;
  789.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  790. }
  791.  
  792. void APIENTRY glMultiTexCoord3ivEXT(GLenum target, const GLint *v)
  793. {
  794.    GET_CONTEXT;
  795.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  796. }
  797.  
  798. void APIENTRY glMultiTexCoord3sEXT(GLenum target, GLshort s, GLshort t, GLshort r)
  799. {
  800.    GET_CONTEXT;
  801.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, 1.0 );
  802. }
  803.  
  804. void APIENTRY glMultiTexCoord3svEXT(GLenum target, const GLshort *v)
  805. {
  806.    GET_CONTEXT;
  807.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], 1.0 );
  808. }
  809.  
  810. void APIENTRY glMultiTexCoord4dEXT(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
  811. {
  812.    GET_CONTEXT;
  813.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  814. }
  815.  
  816. void APIENTRY glMultiTexCoord4dvEXT(GLenum target, const GLdouble *v)
  817. {
  818.    GET_CONTEXT;
  819.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  820. }
  821.  
  822. void APIENTRY glMultiTexCoord4fEXT(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
  823. {
  824.    GET_CONTEXT;
  825.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  826. }
  827.  
  828. void APIENTRY glMultiTexCoord4fvEXT(GLenum target, const GLfloat *v)
  829. {
  830.    GET_CONTEXT;
  831.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  832. }
  833.  
  834. void APIENTRY glMultiTexCoord4iEXT(GLenum target, GLint s, GLint t, GLint r, GLint q)
  835. {
  836.    GET_CONTEXT;
  837.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  838. }
  839.  
  840. void APIENTRY glMultiTexCoord4ivEXT(GLenum target, const GLint *v)
  841. {
  842.    GET_CONTEXT;
  843.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  844. }
  845.  
  846. void APIENTRY glMultiTexCoord4sEXT(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
  847. {
  848.    GET_CONTEXT;
  849.    (*CC->API.MultiTexCoord4f)( CC, target, s, t, r, q );
  850. }
  851.  
  852. void APIENTRY glMultiTexCoord4svEXT(GLenum target, const GLshort *v)
  853. {
  854.    GET_CONTEXT;
  855.    (*CC->API.MultiTexCoord4f)( CC, target, v[0], v[1], v[2], v[3] );
  856. }
  857.  
  858.  
  859.  
  860. void APIENTRY glInterleavedTextureCoordSetsEXT( GLint factor )
  861. {
  862.    GET_CONTEXT;
  863.    CHECK_CONTEXT;
  864.    (*CC->API.InterleavedTextureCoordSets)( CC, factor );
  865. }
  866.  
  867.  
  868.  
  869. void APIENTRY glSelectTextureTransformEXT( GLenum target )
  870. {
  871.    GET_CONTEXT;
  872.    CHECK_CONTEXT;
  873.    (*CC->API.SelectTextureTransform)( CC, target );
  874. }
  875.  
  876.  
  877.  
  878. void APIENTRY glSelectTextureEXT( GLenum target )
  879. {
  880.    GET_CONTEXT;
  881.    CHECK_CONTEXT;
  882.    (*CC->API.SelectTexture)( CC, target );
  883. }
  884.  
  885.  
  886.  
  887. void APIENTRY glSelectTextureCoordSetEXT( GLenum target )
  888. {
  889.    GET_CONTEXT;
  890.    CHECK_CONTEXT;
  891.    (*CC->API.SelectTextureCoordSet)( CC, target );
  892. }
  893.  
  894.