1 /* $Id: api_loopback.c,v 1.17 2002/10/29 20:28:43 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 * Keith Whitwell <keith@tungstengraphics.com>
33 #include "glapitable.h"
36 #include "api_loopback.h"
38 /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
39 * calls to a smaller set of driver-provided formats. Currently just
40 * go back to dispatch to find these (eg. call glNormal3f directly),
43 * The driver must supply all of the remaining entry points, which are
44 * listed in dd.h. The easiest way for a driver to do this is to
45 * install the supplied software t&l module.
47 #define COLORUBV(v) glColor4ubv(v)
48 #define COLORF(r,g,b,a) glColor4f(r,g,b,a)
49 #define VERTEX2(x,y) glVertex2f(x,y)
50 #define VERTEX3(x,y,z) glVertex3f(x,y,z)
51 #define VERTEX4(x,y,z,w) glVertex4f(x,y,z,w)
52 #define NORMAL(x,y,z) glNormal3f(x,y,z)
53 #define TEXCOORD1(s) glTexCoord1f(s)
54 #define TEXCOORD2(s,t) glTexCoord2f(s,t)
55 #define TEXCOORD3(s,t,u) glTexCoord3f(s,t,u)
56 #define TEXCOORD4(s,t,u,v) glTexCoord4f(s,t,u,v)
57 #define INDEX(c) glIndexi(c)
58 #define MULTI_TEXCOORD1(z,s) glMultiTexCoord1fARB(z,s)
59 #define MULTI_TEXCOORD2(z,s,t) glMultiTexCoord2fARB(z,s,t)
60 #define MULTI_TEXCOORD3(z,s,t,u) glMultiTexCoord3fARB(z,s,t,u)
61 #define MULTI_TEXCOORD4(z,s,t,u,v) glMultiTexCoord4fARB(z,s,t,u,v)
62 #define EVALCOORD1(x) glEvalCoord1f(x)
63 #define EVALCOORD2(x,y) glEvalCoord2f(x,y)
64 #define MATERIALFV(a,b,c) glMaterialfv(a,b,c)
65 #define RECTF(a,b,c,d) glRectf(a,b,c,d)
67 #define ATTRIB(index, x, y, z, w) _glapi_Dispatch->VertexAttrib4fNV(index, x, y, z, w)
70 #define FOGCOORDF(x) _glapi_Dispatch->FogCoordfEXT(x)
71 #define SECONDARYCOLORUB(a,b,c) _glapi_Dispatch->SecondaryColor3ubEXT(a,b,c)
72 #define SECONDARYCOLORF(a,b,c) _glapi_Dispatch->SecondaryColor3fEXT(a,b,c)
76 loopback_Color3b( GLbyte red
, GLbyte green
, GLbyte blue
)
79 col
[0] = BYTE_TO_UBYTE(red
);
80 col
[1] = BYTE_TO_UBYTE(green
);
81 col
[2] = BYTE_TO_UBYTE(blue
);
87 loopback_Color3d( GLdouble red
, GLdouble green
, GLdouble blue
)
90 GLfloat r
= (GLfloat
) red
;
91 GLfloat g
= (GLfloat
) green
;
92 GLfloat b
= (GLfloat
) blue
;
93 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
94 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
95 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
101 loopback_Color3i( GLint red
, GLint green
, GLint blue
)
104 col
[0] = INT_TO_UBYTE(red
);
105 col
[1] = INT_TO_UBYTE(green
);
106 col
[2] = INT_TO_UBYTE(blue
);
112 loopback_Color3s( GLshort red
, GLshort green
, GLshort blue
)
115 col
[0] = SHORT_TO_UBYTE(red
);
116 col
[1] = SHORT_TO_UBYTE(green
);
117 col
[2] = SHORT_TO_UBYTE(blue
);
123 loopback_Color3ui( GLuint red
, GLuint green
, GLuint blue
)
126 col
[0] = UINT_TO_UBYTE(red
);
127 col
[1] = UINT_TO_UBYTE(green
);
128 col
[2] = UINT_TO_UBYTE(blue
);
134 loopback_Color3us( GLushort red
, GLushort green
, GLushort blue
)
137 col
[0] = USHORT_TO_UBYTE(red
);
138 col
[1] = USHORT_TO_UBYTE(green
);
139 col
[2] = USHORT_TO_UBYTE(blue
);
145 loopback_Color4b( GLbyte red
, GLbyte green
, GLbyte blue
, GLbyte alpha
)
148 col
[0] = BYTE_TO_UBYTE(red
);
149 col
[1] = BYTE_TO_UBYTE(green
);
150 col
[2] = BYTE_TO_UBYTE(blue
);
156 loopback_Color4d( GLdouble red
, GLdouble green
, GLdouble blue
, GLdouble alpha
)
159 GLfloat r
= (GLfloat
) red
;
160 GLfloat g
= (GLfloat
) green
;
161 GLfloat b
= (GLfloat
) blue
;
162 GLfloat a
= (GLfloat
) alpha
;
163 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
164 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
165 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
166 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
171 loopback_Color4i( GLint red
, GLint green
, GLint blue
, GLint alpha
)
174 col
[0] = INT_TO_UBYTE(red
);
175 col
[1] = INT_TO_UBYTE(green
);
176 col
[2] = INT_TO_UBYTE(blue
);
177 col
[3] = INT_TO_UBYTE(alpha
);
182 loopback_Color4s( GLshort red
, GLshort green
, GLshort blue
,
186 col
[0] = SHORT_TO_UBYTE(red
);
187 col
[1] = SHORT_TO_UBYTE(green
);
188 col
[2] = SHORT_TO_UBYTE(blue
);
189 col
[3] = SHORT_TO_UBYTE(alpha
);
194 loopback_Color4ui( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
197 col
[0] = UINT_TO_UBYTE(red
);
198 col
[1] = UINT_TO_UBYTE(green
);
199 col
[2] = UINT_TO_UBYTE(blue
);
200 col
[3] = UINT_TO_UBYTE(alpha
);
205 loopback_Color4us( GLushort red
, GLushort green
, GLushort blue
,
209 col
[0] = USHORT_TO_UBYTE(red
);
210 col
[1] = USHORT_TO_UBYTE(green
);
211 col
[2] = USHORT_TO_UBYTE(blue
);
212 col
[3] = USHORT_TO_UBYTE(alpha
);
217 loopback_Color3bv( const GLbyte
*v
)
220 col
[0] = BYTE_TO_UBYTE(v
[0]);
221 col
[1] = BYTE_TO_UBYTE(v
[1]);
222 col
[2] = BYTE_TO_UBYTE(v
[2]);
228 loopback_Color3dv( const GLdouble
*v
)
231 GLfloat r
= (GLfloat
) v
[0];
232 GLfloat g
= (GLfloat
) v
[1];
233 GLfloat b
= (GLfloat
) v
[2];
234 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
235 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
236 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
242 loopback_Color3iv( const GLint
*v
)
245 col
[0] = INT_TO_UBYTE(v
[0]);
246 col
[1] = INT_TO_UBYTE(v
[1]);
247 col
[2] = INT_TO_UBYTE(v
[2]);
253 loopback_Color3sv( const GLshort
*v
)
256 col
[0] = SHORT_TO_UBYTE(v
[0]);
257 col
[1] = SHORT_TO_UBYTE(v
[1]);
258 col
[2] = SHORT_TO_UBYTE(v
[2]);
264 loopback_Color3uiv( const GLuint
*v
)
267 col
[0] = UINT_TO_UBYTE(v
[0]);
268 col
[1] = UINT_TO_UBYTE(v
[1]);
269 col
[2] = UINT_TO_UBYTE(v
[2]);
275 loopback_Color3usv( const GLushort
*v
)
278 col
[0] = USHORT_TO_UBYTE(v
[0]);
279 col
[1] = USHORT_TO_UBYTE(v
[1]);
280 col
[2] = USHORT_TO_UBYTE(v
[2]);
287 loopback_Color4bv( const GLbyte
*v
)
290 col
[0] = BYTE_TO_UBYTE(v
[0]);
291 col
[1] = BYTE_TO_UBYTE(v
[1]);
292 col
[2] = BYTE_TO_UBYTE(v
[2]);
293 col
[3] = BYTE_TO_UBYTE(v
[3]);
298 loopback_Color4dv( const GLdouble
*v
)
301 GLfloat r
= (GLfloat
) v
[0];
302 GLfloat g
= (GLfloat
) v
[1];
303 GLfloat b
= (GLfloat
) v
[2];
304 GLfloat a
= (GLfloat
) v
[3];
305 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
306 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
307 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
308 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
313 loopback_Color4iv( const GLint
*v
)
316 col
[0] = INT_TO_UBYTE(v
[0]);
317 col
[1] = INT_TO_UBYTE(v
[1]);
318 col
[2] = INT_TO_UBYTE(v
[2]);
319 col
[3] = INT_TO_UBYTE(v
[3]);
324 loopback_Color4sv( const GLshort
*v
)
327 col
[0] = SHORT_TO_UBYTE(v
[0]);
328 col
[1] = SHORT_TO_UBYTE(v
[1]);
329 col
[2] = SHORT_TO_UBYTE(v
[2]);
330 col
[3] = SHORT_TO_UBYTE(v
[3]);
335 loopback_Color4uiv( const GLuint
*v
)
338 col
[0] = UINT_TO_UBYTE(v
[0]);
339 col
[1] = UINT_TO_UBYTE(v
[1]);
340 col
[2] = UINT_TO_UBYTE(v
[2]);
341 col
[3] = UINT_TO_UBYTE(v
[3]);
346 loopback_Color4usv( const GLushort
*v
)
349 col
[0] = USHORT_TO_UBYTE(v
[0]);
350 col
[1] = USHORT_TO_UBYTE(v
[1]);
351 col
[2] = USHORT_TO_UBYTE(v
[2]);
352 col
[3] = USHORT_TO_UBYTE(v
[3]);
357 loopback_Color3b_f( GLbyte red
, GLbyte green
, GLbyte blue
)
359 COLORF( BYTE_TO_FLOAT(red
),
360 BYTE_TO_FLOAT(green
),
366 loopback_Color3d_f( GLdouble red
, GLdouble green
, GLdouble blue
)
368 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, 1.0 );
372 loopback_Color3i_f( GLint red
, GLint green
, GLint blue
)
374 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
375 INT_TO_FLOAT(blue
), 1.0);
379 loopback_Color3s_f( GLshort red
, GLshort green
, GLshort blue
)
381 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
382 SHORT_TO_FLOAT(blue
), 1.0);
386 loopback_Color3ui_f( GLuint red
, GLuint green
, GLuint blue
)
388 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
389 UINT_TO_FLOAT(blue
), 1.0 );
393 loopback_Color3us_f( GLushort red
, GLushort green
, GLushort blue
)
395 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
396 USHORT_TO_FLOAT(blue
), 1.0 );
401 loopback_Color3bv_f( const GLbyte
*v
)
403 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
404 BYTE_TO_FLOAT(v
[2]), 1.0 );
408 loopback_Color3dv_f( const GLdouble
*v
)
410 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0 );
414 loopback_Color3iv_f( const GLint
*v
)
416 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
417 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
421 loopback_Color3sv_f( const GLshort
*v
)
423 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
424 SHORT_TO_FLOAT(v
[2]), 1.0 );
428 loopback_Color3uiv_f( const GLuint
*v
)
430 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
431 UINT_TO_FLOAT(v
[2]), 1.0 );
435 loopback_Color3usv_f( const GLushort
*v
)
437 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
438 USHORT_TO_FLOAT(v
[2]), 1.0 );
443 loopback_Color4b_f( GLbyte red
, GLbyte green
, GLbyte blue
,
446 COLORF( BYTE_TO_FLOAT(red
), BYTE_TO_FLOAT(green
),
447 BYTE_TO_FLOAT(blue
), BYTE_TO_FLOAT(alpha
) );
451 loopback_Color4d_f( GLdouble red
, GLdouble green
, GLdouble blue
,
454 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, (GLfloat
) alpha
);
458 loopback_Color4i_f( GLint red
, GLint green
, GLint blue
, GLint alpha
)
460 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
461 INT_TO_FLOAT(blue
), INT_TO_FLOAT(alpha
) );
465 loopback_Color4s_f( GLshort red
, GLshort green
, GLshort blue
,
468 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
469 SHORT_TO_FLOAT(blue
), SHORT_TO_FLOAT(alpha
) );
473 loopback_Color4ui_f( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
475 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
476 UINT_TO_FLOAT(blue
), UINT_TO_FLOAT(alpha
) );
480 loopback_Color4us_f( GLushort red
, GLushort green
, GLushort blue
, GLushort alpha
)
482 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
483 USHORT_TO_FLOAT(blue
), USHORT_TO_FLOAT(alpha
) );
488 loopback_Color4iv_f( const GLint
*v
)
490 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
491 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
496 loopback_Color4bv_f( const GLbyte
*v
)
498 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
499 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]) );
503 loopback_Color4dv_f( const GLdouble
*v
)
505 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3] );
510 loopback_Color4sv_f( const GLshort
*v
)
512 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
513 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]) );
518 loopback_Color4uiv_f( const GLuint
*v
)
520 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
521 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]) );
525 loopback_Color4usv_f( const GLushort
*v
)
527 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
528 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]) );
532 loopback_FogCoorddEXT( GLdouble d
)
534 FOGCOORDF( (GLfloat
) d
);
538 loopback_FogCoorddvEXT( const GLdouble
*v
)
540 FOGCOORDF( (GLfloat
) *v
);
545 loopback_Indexd( GLdouble c
)
551 loopback_Indexf( GLfloat c
)
553 INDEX( (GLuint
) (GLint
) c
);
557 loopback_Indexs( GLshort c
)
563 loopback_Indexub( GLubyte c
)
569 loopback_Indexdv( const GLdouble
*c
)
571 INDEX( (GLint
) (GLint
) *c
);
575 loopback_Indexfv( const GLfloat
*c
)
577 INDEX( (GLint
) (GLint
) *c
);
581 loopback_Indexiv( const GLint
*c
)
587 loopback_Indexsv( const GLshort
*c
)
593 loopback_Indexubv( const GLubyte
*c
)
599 loopback_Normal3b( GLbyte nx
, GLbyte ny
, GLbyte nz
)
601 NORMAL( BYTE_TO_FLOAT(nx
), BYTE_TO_FLOAT(ny
), BYTE_TO_FLOAT(nz
) );
605 loopback_Normal3d( GLdouble nx
, GLdouble ny
, GLdouble nz
)
607 NORMAL((GLfloat
) nx
, (GLfloat
) ny
, (GLfloat
) nz
);
611 loopback_Normal3i( GLint nx
, GLint ny
, GLint nz
)
613 NORMAL( INT_TO_FLOAT(nx
), INT_TO_FLOAT(ny
), INT_TO_FLOAT(nz
) );
617 loopback_Normal3s( GLshort nx
, GLshort ny
, GLshort nz
)
619 NORMAL( SHORT_TO_FLOAT(nx
), SHORT_TO_FLOAT(ny
), SHORT_TO_FLOAT(nz
) );
623 loopback_Normal3bv( const GLbyte
*v
)
625 NORMAL( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]), BYTE_TO_FLOAT(v
[2]) );
629 loopback_Normal3dv( const GLdouble
*v
)
631 NORMAL( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
635 loopback_Normal3iv( const GLint
*v
)
637 NORMAL( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]), INT_TO_FLOAT(v
[2]) );
641 loopback_Normal3sv( const GLshort
*v
)
643 NORMAL( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]), SHORT_TO_FLOAT(v
[2]) );
647 loopback_TexCoord1d( GLdouble s
)
649 TEXCOORD1((GLfloat
) s
);
653 loopback_TexCoord1i( GLint s
)
655 TEXCOORD1((GLfloat
) s
);
659 loopback_TexCoord1s( GLshort s
)
661 TEXCOORD1((GLfloat
) s
);
665 loopback_TexCoord2d( GLdouble s
, GLdouble t
)
667 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
671 loopback_TexCoord2s( GLshort s
, GLshort t
)
673 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
677 loopback_TexCoord2i( GLint s
, GLint t
)
679 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
683 loopback_TexCoord3d( GLdouble s
, GLdouble t
, GLdouble r
)
685 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
689 loopback_TexCoord3i( GLint s
, GLint t
, GLint r
)
691 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
695 loopback_TexCoord3s( GLshort s
, GLshort t
, GLshort r
)
697 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
701 loopback_TexCoord4d( GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
703 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
707 loopback_TexCoord4i( GLint s
, GLint t
, GLint r
, GLint q
)
709 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
713 loopback_TexCoord4s( GLshort s
, GLshort t
, GLshort r
, GLshort q
)
715 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
719 loopback_TexCoord1dv( const GLdouble
*v
)
721 TEXCOORD1((GLfloat
) v
[0]);
725 loopback_TexCoord1iv( const GLint
*v
)
727 TEXCOORD1((GLfloat
) v
[0]);
731 loopback_TexCoord1sv( const GLshort
*v
)
733 TEXCOORD1((GLfloat
) v
[0]);
737 loopback_TexCoord2dv( const GLdouble
*v
)
739 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
743 loopback_TexCoord2iv( const GLint
*v
)
745 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
749 loopback_TexCoord2sv( const GLshort
*v
)
751 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
755 loopback_TexCoord3dv( const GLdouble
*v
)
757 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
761 loopback_TexCoord3iv( const GLint
*v
)
763 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
767 loopback_TexCoord3sv( const GLshort
*v
)
769 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
773 loopback_TexCoord4dv( const GLdouble
*v
)
775 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
779 loopback_TexCoord4iv( const GLint
*v
)
781 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
785 loopback_TexCoord4sv( const GLshort
*v
)
787 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
791 loopback_Vertex2d( GLdouble x
, GLdouble y
)
793 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
797 loopback_Vertex2i( GLint x
, GLint y
)
799 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
803 loopback_Vertex2s( GLshort x
, GLshort y
)
805 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
809 loopback_Vertex3d( GLdouble x
, GLdouble y
, GLdouble z
)
811 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
815 loopback_Vertex3i( GLint x
, GLint y
, GLint z
)
817 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
821 loopback_Vertex3s( GLshort x
, GLshort y
, GLshort z
)
823 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
827 loopback_Vertex4d( GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
829 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
833 loopback_Vertex4i( GLint x
, GLint y
, GLint z
, GLint w
)
835 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
839 loopback_Vertex4s( GLshort x
, GLshort y
, GLshort z
, GLshort w
)
841 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
845 loopback_Vertex2dv( const GLdouble
*v
)
847 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
851 loopback_Vertex2iv( const GLint
*v
)
853 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
857 loopback_Vertex2sv( const GLshort
*v
)
859 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
863 loopback_Vertex3dv( const GLdouble
*v
)
865 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
869 loopback_Vertex3iv( const GLint
*v
)
871 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
875 loopback_Vertex3sv( const GLshort
*v
)
877 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
881 loopback_Vertex4dv( const GLdouble
*v
)
883 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
884 (GLfloat
) v
[2], (GLfloat
) v
[3] );
888 loopback_Vertex4iv( const GLint
*v
)
890 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
891 (GLfloat
) v
[2], (GLfloat
) v
[3] );
895 loopback_Vertex4sv( const GLshort
*v
)
897 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
898 (GLfloat
) v
[2], (GLfloat
) v
[3] );
902 loopback_MultiTexCoord1dARB(GLenum target
, GLdouble s
)
904 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
908 loopback_MultiTexCoord1dvARB(GLenum target
, const GLdouble
*v
)
910 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
914 loopback_MultiTexCoord1iARB(GLenum target
, GLint s
)
916 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
920 loopback_MultiTexCoord1ivARB(GLenum target
, const GLint
*v
)
922 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
926 loopback_MultiTexCoord1sARB(GLenum target
, GLshort s
)
928 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
932 loopback_MultiTexCoord1svARB(GLenum target
, const GLshort
*v
)
934 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
938 loopback_MultiTexCoord2dARB(GLenum target
, GLdouble s
, GLdouble t
)
940 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
944 loopback_MultiTexCoord2dvARB(GLenum target
, const GLdouble
*v
)
946 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
950 loopback_MultiTexCoord2iARB(GLenum target
, GLint s
, GLint t
)
952 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
956 loopback_MultiTexCoord2ivARB(GLenum target
, const GLint
*v
)
958 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
962 loopback_MultiTexCoord2sARB(GLenum target
, GLshort s
, GLshort t
)
964 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
968 loopback_MultiTexCoord2svARB(GLenum target
, const GLshort
*v
)
970 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
974 loopback_MultiTexCoord3dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
)
976 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
980 loopback_MultiTexCoord3dvARB(GLenum target
, const GLdouble
*v
)
982 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
986 loopback_MultiTexCoord3iARB(GLenum target
, GLint s
, GLint t
, GLint r
)
988 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
992 loopback_MultiTexCoord3ivARB(GLenum target
, const GLint
*v
)
994 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
998 loopback_MultiTexCoord3sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
)
1000 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
1004 loopback_MultiTexCoord3svARB(GLenum target
, const GLshort
*v
)
1006 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1010 loopback_MultiTexCoord4dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
1012 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1013 (GLfloat
) r
, (GLfloat
) q
);
1017 loopback_MultiTexCoord4dvARB(GLenum target
, const GLdouble
*v
)
1019 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1020 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1024 loopback_MultiTexCoord4iARB(GLenum target
, GLint s
, GLint t
, GLint r
, GLint q
)
1026 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1027 (GLfloat
) r
, (GLfloat
) q
);
1031 loopback_MultiTexCoord4ivARB(GLenum target
, const GLint
*v
)
1033 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1034 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1038 loopback_MultiTexCoord4sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
, GLshort q
)
1040 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1041 (GLfloat
) r
, (GLfloat
) q
);
1045 loopback_MultiTexCoord4svARB(GLenum target
, const GLshort
*v
)
1047 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1048 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1052 loopback_EvalCoord2dv( const GLdouble
*u
)
1054 EVALCOORD2( (GLfloat
) u
[0], (GLfloat
) u
[1] );
1058 loopback_EvalCoord2fv( const GLfloat
*u
)
1060 EVALCOORD2( u
[0], u
[1] );
1064 loopback_EvalCoord2d( GLdouble u
, GLdouble v
)
1066 EVALCOORD2( (GLfloat
) u
, (GLfloat
) v
);
1070 loopback_EvalCoord1dv( const GLdouble
*u
)
1072 EVALCOORD1( (GLfloat
) *u
);
1076 loopback_EvalCoord1fv( const GLfloat
*u
)
1078 EVALCOORD1( (GLfloat
) *u
);
1082 loopback_EvalCoord1d( GLdouble u
)
1084 EVALCOORD1( (GLfloat
) u
);
1088 loopback_Materialf( GLenum face
, GLenum pname
, GLfloat param
)
1092 MATERIALFV( face
, pname
, fparam
);
1096 loopback_Materiali(GLenum face
, GLenum pname
, GLint param
)
1098 GLfloat p
= (GLfloat
) param
;
1099 MATERIALFV(face
, pname
, &p
);
1103 loopback_Materialiv(GLenum face
, GLenum pname
, const GLint
*params
)
1111 case GL_AMBIENT_AND_DIFFUSE
:
1112 fparam
[0] = INT_TO_FLOAT( params
[0] );
1113 fparam
[1] = INT_TO_FLOAT( params
[1] );
1114 fparam
[2] = INT_TO_FLOAT( params
[2] );
1115 fparam
[3] = INT_TO_FLOAT( params
[3] );
1118 fparam
[0] = (GLfloat
) params
[0];
1120 case GL_COLOR_INDEXES
:
1121 fparam
[0] = (GLfloat
) params
[0];
1122 fparam
[1] = (GLfloat
) params
[1];
1123 fparam
[2] = (GLfloat
) params
[2];
1128 MATERIALFV(face
, pname
, fparam
);
1133 loopback_Rectd(GLdouble x1
, GLdouble y1
, GLdouble x2
, GLdouble y2
)
1135 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1139 loopback_Rectdv(const GLdouble
*v1
, const GLdouble
*v2
)
1141 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1145 loopback_Rectfv(const GLfloat
*v1
, const GLfloat
*v2
)
1147 RECTF(v1
[0], v1
[1], v2
[0], v2
[1]);
1151 loopback_Recti(GLint x1
, GLint y1
, GLint x2
, GLint y2
)
1153 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1157 loopback_Rectiv(const GLint
*v1
, const GLint
*v2
)
1159 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1163 loopback_Rects(GLshort x1
, GLshort y1
, GLshort x2
, GLshort y2
)
1165 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1169 loopback_Rectsv(const GLshort
*v1
, const GLshort
*v2
)
1171 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1175 loopback_SecondaryColor3bEXT( GLbyte red
, GLbyte green
, GLbyte blue
)
1177 SECONDARYCOLORUB( BYTE_TO_UBYTE(red
),
1178 BYTE_TO_UBYTE(green
),
1179 BYTE_TO_UBYTE(blue
) );
1183 loopback_SecondaryColor3dEXT( GLdouble red
, GLdouble green
, GLdouble blue
)
1186 GLfloat r
= (GLfloat
) red
;
1187 GLfloat g
= (GLfloat
) green
;
1188 GLfloat b
= (GLfloat
) blue
;
1189 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1190 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1191 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1192 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1196 loopback_SecondaryColor3iEXT( GLint red
, GLint green
, GLint blue
)
1198 SECONDARYCOLORUB( INT_TO_UBYTE(red
),
1199 INT_TO_UBYTE(green
),
1200 INT_TO_UBYTE(blue
));
1204 loopback_SecondaryColor3sEXT( GLshort red
, GLshort green
, GLshort blue
)
1206 SECONDARYCOLORUB(SHORT_TO_UBYTE(red
),
1207 SHORT_TO_UBYTE(green
),
1208 SHORT_TO_UBYTE(blue
));
1212 loopback_SecondaryColor3uiEXT( GLuint red
, GLuint green
, GLuint blue
)
1214 SECONDARYCOLORUB(UINT_TO_UBYTE(red
),
1215 UINT_TO_UBYTE(green
),
1216 UINT_TO_UBYTE(blue
));
1220 loopback_SecondaryColor3usEXT( GLushort red
, GLushort green
, GLushort blue
)
1222 SECONDARYCOLORUB(USHORT_TO_UBYTE(red
),
1223 USHORT_TO_UBYTE(green
),
1224 USHORT_TO_UBYTE(blue
));
1228 loopback_SecondaryColor3bvEXT( const GLbyte
*v
)
1230 const GLfloat a
= BYTE_TO_FLOAT(v
[0]);
1231 const GLfloat b
= BYTE_TO_FLOAT(v
[1]);
1232 const GLfloat c
= BYTE_TO_FLOAT(v
[2]);
1233 SECONDARYCOLORF(a
,b
,c
);
1237 loopback_SecondaryColor3dvEXT( const GLdouble
*v
)
1240 GLfloat r
= (GLfloat
) v
[0];
1241 GLfloat g
= (GLfloat
) v
[1];
1242 GLfloat b
= (GLfloat
) v
[2];
1243 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1244 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1245 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1246 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1250 loopback_SecondaryColor3ivEXT( const GLint
*v
)
1252 SECONDARYCOLORUB(INT_TO_UBYTE(v
[0]),
1254 INT_TO_UBYTE(v
[2]));
1258 loopback_SecondaryColor3svEXT( const GLshort
*v
)
1260 SECONDARYCOLORUB(SHORT_TO_UBYTE(v
[0]),
1261 SHORT_TO_UBYTE(v
[1]),
1262 SHORT_TO_UBYTE(v
[2]));
1266 loopback_SecondaryColor3uivEXT( const GLuint
*v
)
1268 SECONDARYCOLORUB(UINT_TO_UBYTE(v
[0]),
1269 UINT_TO_UBYTE(v
[1]),
1270 UINT_TO_UBYTE(v
[2]));
1274 loopback_SecondaryColor3usvEXT( const GLushort
*v
)
1276 SECONDARYCOLORUB(USHORT_TO_UBYTE(v
[0]),
1277 USHORT_TO_UBYTE(v
[1]),
1278 USHORT_TO_UBYTE(v
[2]));
1283 loopback_SecondaryColor3bEXT_f( GLbyte red
, GLbyte green
, GLbyte blue
)
1285 SECONDARYCOLORF( BYTE_TO_FLOAT(red
),
1286 BYTE_TO_FLOAT(green
),
1287 BYTE_TO_FLOAT(blue
) );
1291 loopback_SecondaryColor3dEXT_f( GLdouble red
, GLdouble green
, GLdouble blue
)
1293 SECONDARYCOLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
);
1297 loopback_SecondaryColor3iEXT_f( GLint red
, GLint green
, GLint blue
)
1299 SECONDARYCOLORF( INT_TO_FLOAT(red
),
1300 INT_TO_FLOAT(green
),
1301 INT_TO_FLOAT(blue
));
1305 loopback_SecondaryColor3sEXT_f( GLshort red
, GLshort green
, GLshort blue
)
1307 SECONDARYCOLORF(SHORT_TO_FLOAT(red
),
1308 SHORT_TO_FLOAT(green
),
1309 SHORT_TO_FLOAT(blue
));
1313 loopback_SecondaryColor3uiEXT_f( GLuint red
, GLuint green
, GLuint blue
)
1315 SECONDARYCOLORF(UINT_TO_FLOAT(red
),
1316 UINT_TO_FLOAT(green
),
1317 UINT_TO_FLOAT(blue
));
1321 loopback_SecondaryColor3usEXT_f( GLushort red
, GLushort green
, GLushort blue
)
1323 SECONDARYCOLORF(USHORT_TO_FLOAT(red
),
1324 USHORT_TO_FLOAT(green
),
1325 USHORT_TO_FLOAT(blue
));
1329 loopback_SecondaryColor3bvEXT_f( const GLbyte
*v
)
1331 SECONDARYCOLORF(BYTE_TO_FLOAT(v
[0]),
1332 BYTE_TO_FLOAT(v
[1]),
1333 BYTE_TO_FLOAT(v
[2]));
1337 loopback_SecondaryColor3dvEXT_f( const GLdouble
*v
)
1339 SECONDARYCOLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1342 loopback_SecondaryColor3ivEXT_f( const GLint
*v
)
1344 SECONDARYCOLORF(INT_TO_FLOAT(v
[0]),
1346 INT_TO_FLOAT(v
[2]));
1350 loopback_SecondaryColor3svEXT_f( const GLshort
*v
)
1352 SECONDARYCOLORF(SHORT_TO_FLOAT(v
[0]),
1353 SHORT_TO_FLOAT(v
[1]),
1354 SHORT_TO_FLOAT(v
[2]));
1358 loopback_SecondaryColor3uivEXT_f( const GLuint
*v
)
1360 SECONDARYCOLORF(UINT_TO_FLOAT(v
[0]),
1361 UINT_TO_FLOAT(v
[1]),
1362 UINT_TO_FLOAT(v
[2]));
1366 loopback_SecondaryColor3usvEXT_f( const GLushort
*v
)
1368 SECONDARYCOLORF(USHORT_TO_FLOAT(v
[0]),
1369 USHORT_TO_FLOAT(v
[1]),
1370 USHORT_TO_FLOAT(v
[2]));
1375 * GL_NV_vertex_program
1379 loopback_VertexAttrib1sNV(GLuint index
, GLshort x
)
1381 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1385 loopback_VertexAttrib1fNV(GLuint index
, GLfloat x
)
1387 ATTRIB(index
, x
, 0.0F
, 0.0F
, 1.0F
);
1391 loopback_VertexAttrib1dNV(GLuint index
, GLdouble x
)
1393 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1397 loopback_VertexAttrib2sNV(GLuint index
, GLshort x
, GLshort y
)
1399 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1403 loopback_VertexAttrib2fNV(GLuint index
, GLfloat x
, GLfloat y
)
1405 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1409 loopback_VertexAttrib2dNV(GLuint index
, GLdouble x
, GLdouble y
)
1411 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, 0.0F
, 1.0F
);
1415 loopback_VertexAttrib3sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
)
1417 ATTRIB(index
, (GLfloat
) x
, y
, z
, 1.0F
);
1421 loopback_VertexAttrib3fNV(GLuint index
, GLfloat x
, GLfloat y
, GLfloat z
)
1423 ATTRIB(index
, x
, y
, z
, 1.0F
);
1427 loopback_VertexAttrib3dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
)
1429 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, 1.0F
);
1433 loopback_VertexAttrib4sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
, GLshort w
)
1435 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1439 loopback_VertexAttrib4dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
1441 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1445 loopback_VertexAttrib4ubNV(GLuint index
, GLubyte x
, GLubyte y
, GLubyte z
, GLubyte w
)
1447 ATTRIB(index
, UBYTE_TO_FLOAT(x
), UBYTE_TO_FLOAT(y
),
1448 UBYTE_TO_FLOAT(z
), UBYTE_TO_FLOAT(w
));
1452 loopback_VertexAttrib1svNV(GLuint index
, const GLshort
*v
)
1454 ATTRIB(index
, (GLfloat
) v
[0], 0.0F
, 0.0F
, 1.0F
);
1458 loopback_VertexAttrib1fvNV(GLuint index
, const GLfloat
*v
)
1460 ATTRIB(index
, v
[0], 0.0F
, 0.0F
, 1.0F
);
1464 loopback_VertexAttrib1dvNV(GLuint index
, const GLdouble
*v
)
1466 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1470 loopback_VertexAttrib2svNV(GLuint index
, const GLshort
*v
)
1472 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1476 loopback_VertexAttrib2fvNV(GLuint index
, const GLfloat
*v
)
1478 ATTRIB(index
, v
[0], v
[1], 0.0F
, 1.0F
);
1482 loopback_VertexAttrib2dvNV(GLuint index
, const GLdouble
*v
)
1484 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1488 loopback_VertexAttrib3svNV(GLuint index
, const GLshort
*v
)
1490 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1494 loopback_VertexAttrib3fvNV(GLuint index
, const GLfloat
*v
)
1496 ATTRIB(index
, v
[0], v
[1], v
[2], 1.0F
);
1500 loopback_VertexAttrib3dvNV(GLuint index
, const GLdouble
*v
)
1502 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1506 loopback_VertexAttrib4svNV(GLuint index
, const GLshort
*v
)
1508 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1512 loopback_VertexAttrib4fvNV(GLuint index
, const GLfloat
*v
)
1514 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1518 loopback_VertexAttrib4dvNV(GLuint index
, const GLdouble
*v
)
1520 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1524 loopback_VertexAttrib4ubvNV(GLuint index
, const GLubyte
*v
)
1526 ATTRIB(index
, UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
1527 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]));
1532 loopback_VertexAttribs1svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1535 for (i
= n
- 1; i
>= 0; i
--)
1536 loopback_VertexAttrib1svNV(index
+ i
, v
+ i
);
1540 loopback_VertexAttribs1fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1543 for (i
= n
- 1; i
>= 0; i
--)
1544 loopback_VertexAttrib1fvNV(index
+ i
, v
+ i
);
1548 loopback_VertexAttribs1dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1551 for (i
= n
- 1; i
>= 0; i
--)
1552 loopback_VertexAttrib1dvNV(index
+ i
, v
+ i
);
1556 loopback_VertexAttribs2svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1559 for (i
= n
- 1; i
>= 0; i
--)
1560 loopback_VertexAttrib2svNV(index
+ i
, v
+ 2 * i
);
1564 loopback_VertexAttribs2fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1567 for (i
= n
- 1; i
>= 0; i
--)
1568 loopback_VertexAttrib2fvNV(index
+ i
, v
+ 2 * i
);
1572 loopback_VertexAttribs2dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1575 for (i
= n
- 1; i
>= 0; i
--)
1576 loopback_VertexAttrib2dvNV(index
+ i
, v
+ 2 * i
);
1580 loopback_VertexAttribs3svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1583 for (i
= n
- 1; i
>= 0; i
--)
1584 loopback_VertexAttrib3svNV(index
+ i
, v
+ 3 * i
);
1588 loopback_VertexAttribs3fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1591 for (i
= n
- 1; i
>= 0; i
--)
1592 loopback_VertexAttrib3fvNV(index
+ i
, v
+ 3 * i
);
1596 loopback_VertexAttribs3dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1599 for (i
= n
- 1; i
>= 0; i
--)
1600 loopback_VertexAttrib3dvNV(index
+ i
, v
+ 3 * i
);
1604 loopback_VertexAttribs4svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1607 for (i
= n
- 1; i
>= 0; i
--)
1608 loopback_VertexAttrib4svNV(index
+ i
, v
+ 4 * i
);
1612 loopback_VertexAttribs4fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1615 for (i
= n
- 1; i
>= 0; i
--)
1616 loopback_VertexAttrib4fvNV(index
+ i
, v
+ 4 * i
);
1620 loopback_VertexAttribs4dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1623 for (i
= n
- 1; i
>= 0; i
--)
1624 loopback_VertexAttrib4dvNV(index
+ i
, v
+ 4 * i
);
1628 loopback_VertexAttribs4ubvNV(GLuint index
, GLsizei n
, const GLubyte
*v
)
1631 for (i
= n
- 1; i
>= 0; i
--)
1632 loopback_VertexAttrib4ubvNV(index
+ i
, v
+ 4 * i
);
1638 _mesa_loopback_prefer_float( struct _glapi_table
*dest
,
1639 GLboolean prefer_float_colors
)
1641 if (!prefer_float_colors
) {
1642 dest
->Color3b
= loopback_Color3b
;
1643 dest
->Color3d
= loopback_Color3d
;
1644 dest
->Color3i
= loopback_Color3i
;
1645 dest
->Color3s
= loopback_Color3s
;
1646 dest
->Color3ui
= loopback_Color3ui
;
1647 dest
->Color3us
= loopback_Color3us
;
1648 dest
->Color4b
= loopback_Color4b
;
1649 dest
->Color4d
= loopback_Color4d
;
1650 dest
->Color4i
= loopback_Color4i
;
1651 dest
->Color4s
= loopback_Color4s
;
1652 dest
->Color4ui
= loopback_Color4ui
;
1653 dest
->Color4us
= loopback_Color4us
;
1654 dest
->Color3bv
= loopback_Color3bv
;
1655 dest
->Color3dv
= loopback_Color3dv
;
1656 dest
->Color3iv
= loopback_Color3iv
;
1657 dest
->Color3sv
= loopback_Color3sv
;
1658 dest
->Color3uiv
= loopback_Color3uiv
;
1659 dest
->Color3usv
= loopback_Color3usv
;
1660 dest
->Color4bv
= loopback_Color4bv
;
1661 dest
->Color4dv
= loopback_Color4dv
;
1662 dest
->Color4iv
= loopback_Color4iv
;
1663 dest
->Color4sv
= loopback_Color4sv
;
1664 dest
->Color4uiv
= loopback_Color4uiv
;
1665 dest
->Color4usv
= loopback_Color4usv
;
1666 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT
;
1667 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT
;
1668 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT
;
1669 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT
;
1670 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT
;
1671 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT
;
1672 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT
;
1673 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT
;
1674 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT
;
1675 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT
;
1676 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT
;
1677 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT
;
1680 dest
->Color3b
= loopback_Color3b_f
;
1681 dest
->Color3d
= loopback_Color3d_f
;
1682 dest
->Color3i
= loopback_Color3i_f
;
1683 dest
->Color3s
= loopback_Color3s_f
;
1684 dest
->Color3ui
= loopback_Color3ui_f
;
1685 dest
->Color3us
= loopback_Color3us_f
;
1686 dest
->Color4b
= loopback_Color4b_f
;
1687 dest
->Color4d
= loopback_Color4d_f
;
1688 dest
->Color4i
= loopback_Color4i_f
;
1689 dest
->Color4s
= loopback_Color4s_f
;
1690 dest
->Color4ui
= loopback_Color4ui_f
;
1691 dest
->Color4us
= loopback_Color4us_f
;
1692 dest
->Color3bv
= loopback_Color3bv_f
;
1693 dest
->Color3dv
= loopback_Color3dv_f
;
1694 dest
->Color3iv
= loopback_Color3iv_f
;
1695 dest
->Color3sv
= loopback_Color3sv_f
;
1696 dest
->Color3uiv
= loopback_Color3uiv_f
;
1697 dest
->Color3usv
= loopback_Color3usv_f
;
1698 dest
->Color4bv
= loopback_Color4bv_f
;
1699 dest
->Color4dv
= loopback_Color4dv_f
;
1700 dest
->Color4iv
= loopback_Color4iv_f
;
1701 dest
->Color4sv
= loopback_Color4sv_f
;
1702 dest
->Color4uiv
= loopback_Color4uiv_f
;
1703 dest
->Color4usv
= loopback_Color4usv_f
;
1704 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT_f
;
1705 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT_f
;
1706 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT_f
;
1707 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT_f
;
1708 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT_f
;
1709 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT_f
;
1710 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT_f
;
1711 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT_f
;
1712 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT_f
;
1713 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT_f
;
1714 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT_f
;
1715 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT_f
;
1719 /* Passing prefer_float_colors as true will mean that all colors
1720 * *except* Color{34}ub{v} are passed as floats. Setting it false will
1721 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1723 * This code never registers handlers for any of the entry points
1724 * listed in vtxfmt.h.
1727 _mesa_loopback_init_api_table( struct _glapi_table
*dest
,
1728 GLboolean prefer_float_colors
)
1730 _mesa_loopback_prefer_float( dest
, prefer_float_colors
);
1732 dest
->Indexd
= loopback_Indexd
;
1733 dest
->Indexf
= loopback_Indexf
;
1734 dest
->Indexs
= loopback_Indexs
;
1735 dest
->Indexub
= loopback_Indexub
;
1736 dest
->Indexdv
= loopback_Indexdv
;
1737 dest
->Indexfv
= loopback_Indexfv
;
1738 dest
->Indexiv
= loopback_Indexiv
;
1739 dest
->Indexsv
= loopback_Indexsv
;
1740 dest
->Indexubv
= loopback_Indexubv
;
1741 dest
->Normal3b
= loopback_Normal3b
;
1742 dest
->Normal3d
= loopback_Normal3d
;
1743 dest
->Normal3i
= loopback_Normal3i
;
1744 dest
->Normal3s
= loopback_Normal3s
;
1745 dest
->Normal3bv
= loopback_Normal3bv
;
1746 dest
->Normal3dv
= loopback_Normal3dv
;
1747 dest
->Normal3iv
= loopback_Normal3iv
;
1748 dest
->Normal3sv
= loopback_Normal3sv
;
1749 dest
->TexCoord1d
= loopback_TexCoord1d
;
1750 dest
->TexCoord1i
= loopback_TexCoord1i
;
1751 dest
->TexCoord1s
= loopback_TexCoord1s
;
1752 dest
->TexCoord2d
= loopback_TexCoord2d
;
1753 dest
->TexCoord2s
= loopback_TexCoord2s
;
1754 dest
->TexCoord2i
= loopback_TexCoord2i
;
1755 dest
->TexCoord3d
= loopback_TexCoord3d
;
1756 dest
->TexCoord3i
= loopback_TexCoord3i
;
1757 dest
->TexCoord3s
= loopback_TexCoord3s
;
1758 dest
->TexCoord4d
= loopback_TexCoord4d
;
1759 dest
->TexCoord4i
= loopback_TexCoord4i
;
1760 dest
->TexCoord4s
= loopback_TexCoord4s
;
1761 dest
->TexCoord1dv
= loopback_TexCoord1dv
;
1762 dest
->TexCoord1iv
= loopback_TexCoord1iv
;
1763 dest
->TexCoord1sv
= loopback_TexCoord1sv
;
1764 dest
->TexCoord2dv
= loopback_TexCoord2dv
;
1765 dest
->TexCoord2iv
= loopback_TexCoord2iv
;
1766 dest
->TexCoord2sv
= loopback_TexCoord2sv
;
1767 dest
->TexCoord3dv
= loopback_TexCoord3dv
;
1768 dest
->TexCoord3iv
= loopback_TexCoord3iv
;
1769 dest
->TexCoord3sv
= loopback_TexCoord3sv
;
1770 dest
->TexCoord4dv
= loopback_TexCoord4dv
;
1771 dest
->TexCoord4iv
= loopback_TexCoord4iv
;
1772 dest
->TexCoord4sv
= loopback_TexCoord4sv
;
1773 dest
->Vertex2d
= loopback_Vertex2d
;
1774 dest
->Vertex2i
= loopback_Vertex2i
;
1775 dest
->Vertex2s
= loopback_Vertex2s
;
1776 dest
->Vertex3d
= loopback_Vertex3d
;
1777 dest
->Vertex3i
= loopback_Vertex3i
;
1778 dest
->Vertex3s
= loopback_Vertex3s
;
1779 dest
->Vertex4d
= loopback_Vertex4d
;
1780 dest
->Vertex4i
= loopback_Vertex4i
;
1781 dest
->Vertex4s
= loopback_Vertex4s
;
1782 dest
->Vertex2dv
= loopback_Vertex2dv
;
1783 dest
->Vertex2iv
= loopback_Vertex2iv
;
1784 dest
->Vertex2sv
= loopback_Vertex2sv
;
1785 dest
->Vertex3dv
= loopback_Vertex3dv
;
1786 dest
->Vertex3iv
= loopback_Vertex3iv
;
1787 dest
->Vertex3sv
= loopback_Vertex3sv
;
1788 dest
->Vertex4dv
= loopback_Vertex4dv
;
1789 dest
->Vertex4iv
= loopback_Vertex4iv
;
1790 dest
->Vertex4sv
= loopback_Vertex4sv
;
1791 dest
->MultiTexCoord1dARB
= loopback_MultiTexCoord1dARB
;
1792 dest
->MultiTexCoord1dvARB
= loopback_MultiTexCoord1dvARB
;
1793 dest
->MultiTexCoord1iARB
= loopback_MultiTexCoord1iARB
;
1794 dest
->MultiTexCoord1ivARB
= loopback_MultiTexCoord1ivARB
;
1795 dest
->MultiTexCoord1sARB
= loopback_MultiTexCoord1sARB
;
1796 dest
->MultiTexCoord1svARB
= loopback_MultiTexCoord1svARB
;
1797 dest
->MultiTexCoord2dARB
= loopback_MultiTexCoord2dARB
;
1798 dest
->MultiTexCoord2dvARB
= loopback_MultiTexCoord2dvARB
;
1799 dest
->MultiTexCoord2iARB
= loopback_MultiTexCoord2iARB
;
1800 dest
->MultiTexCoord2ivARB
= loopback_MultiTexCoord2ivARB
;
1801 dest
->MultiTexCoord2sARB
= loopback_MultiTexCoord2sARB
;
1802 dest
->MultiTexCoord2svARB
= loopback_MultiTexCoord2svARB
;
1803 dest
->MultiTexCoord3dARB
= loopback_MultiTexCoord3dARB
;
1804 dest
->MultiTexCoord3dvARB
= loopback_MultiTexCoord3dvARB
;
1805 dest
->MultiTexCoord3iARB
= loopback_MultiTexCoord3iARB
;
1806 dest
->MultiTexCoord3ivARB
= loopback_MultiTexCoord3ivARB
;
1807 dest
->MultiTexCoord3sARB
= loopback_MultiTexCoord3sARB
;
1808 dest
->MultiTexCoord3svARB
= loopback_MultiTexCoord3svARB
;
1809 dest
->MultiTexCoord4dARB
= loopback_MultiTexCoord4dARB
;
1810 dest
->MultiTexCoord4dvARB
= loopback_MultiTexCoord4dvARB
;
1811 dest
->MultiTexCoord4iARB
= loopback_MultiTexCoord4iARB
;
1812 dest
->MultiTexCoord4ivARB
= loopback_MultiTexCoord4ivARB
;
1813 dest
->MultiTexCoord4sARB
= loopback_MultiTexCoord4sARB
;
1814 dest
->MultiTexCoord4svARB
= loopback_MultiTexCoord4svARB
;
1815 dest
->EvalCoord2dv
= loopback_EvalCoord2dv
;
1816 dest
->EvalCoord2fv
= loopback_EvalCoord2fv
;
1817 dest
->EvalCoord2d
= loopback_EvalCoord2d
;
1818 dest
->EvalCoord1dv
= loopback_EvalCoord1dv
;
1819 dest
->EvalCoord1fv
= loopback_EvalCoord1fv
;
1820 dest
->EvalCoord1d
= loopback_EvalCoord1d
;
1821 dest
->Materialf
= loopback_Materialf
;
1822 dest
->Materiali
= loopback_Materiali
;
1823 dest
->Materialiv
= loopback_Materialiv
;
1824 dest
->Rectd
= loopback_Rectd
;
1825 dest
->Rectdv
= loopback_Rectdv
;
1826 dest
->Rectfv
= loopback_Rectfv
;
1827 dest
->Recti
= loopback_Recti
;
1828 dest
->Rectiv
= loopback_Rectiv
;
1829 dest
->Rects
= loopback_Rects
;
1830 dest
->Rectsv
= loopback_Rectsv
;
1831 dest
->FogCoorddEXT
= loopback_FogCoorddEXT
;
1832 dest
->FogCoorddvEXT
= loopback_FogCoorddvEXT
;
1834 dest
->VertexAttrib1sNV
= loopback_VertexAttrib1sNV
;
1835 dest
->VertexAttrib1fNV
= loopback_VertexAttrib1fNV
;
1836 dest
->VertexAttrib1dNV
= loopback_VertexAttrib1dNV
;
1837 dest
->VertexAttrib2sNV
= loopback_VertexAttrib2sNV
;
1838 dest
->VertexAttrib2fNV
= loopback_VertexAttrib2fNV
;
1839 dest
->VertexAttrib2dNV
= loopback_VertexAttrib2dNV
;
1840 dest
->VertexAttrib3sNV
= loopback_VertexAttrib3sNV
;
1841 dest
->VertexAttrib3fNV
= loopback_VertexAttrib3fNV
;
1842 dest
->VertexAttrib3dNV
= loopback_VertexAttrib3dNV
;
1843 dest
->VertexAttrib4sNV
= loopback_VertexAttrib4sNV
;
1844 dest
->VertexAttrib4dNV
= loopback_VertexAttrib4dNV
;
1845 dest
->VertexAttrib4ubNV
= loopback_VertexAttrib4ubNV
;
1847 dest
->VertexAttrib1svNV
= loopback_VertexAttrib1svNV
;
1848 dest
->VertexAttrib1fvNV
= loopback_VertexAttrib1fvNV
;
1849 dest
->VertexAttrib1dvNV
= loopback_VertexAttrib1dvNV
;
1850 dest
->VertexAttrib2svNV
= loopback_VertexAttrib2svNV
;
1851 dest
->VertexAttrib2fvNV
= loopback_VertexAttrib2fvNV
;
1852 dest
->VertexAttrib2dvNV
= loopback_VertexAttrib2dvNV
;
1853 dest
->VertexAttrib3svNV
= loopback_VertexAttrib3svNV
;
1854 dest
->VertexAttrib3fvNV
= loopback_VertexAttrib3fvNV
;
1855 dest
->VertexAttrib3dvNV
= loopback_VertexAttrib3dvNV
;
1856 dest
->VertexAttrib4svNV
= loopback_VertexAttrib4svNV
;
1857 dest
->VertexAttrib4fvNV
= loopback_VertexAttrib4fvNV
;
1858 dest
->VertexAttrib4dvNV
= loopback_VertexAttrib4dvNV
;
1859 dest
->VertexAttrib4ubvNV
= loopback_VertexAttrib4ubvNV
;
1861 dest
->VertexAttribs1svNV
= loopback_VertexAttribs1svNV
;
1862 dest
->VertexAttribs1fvNV
= loopback_VertexAttribs1fvNV
;
1863 dest
->VertexAttribs1dvNV
= loopback_VertexAttribs1dvNV
;
1864 dest
->VertexAttribs2svNV
= loopback_VertexAttribs2svNV
;
1865 dest
->VertexAttribs2fvNV
= loopback_VertexAttribs2fvNV
;
1866 dest
->VertexAttribs2dvNV
= loopback_VertexAttribs2dvNV
;
1867 dest
->VertexAttribs3svNV
= loopback_VertexAttribs3svNV
;
1868 dest
->VertexAttribs3fvNV
= loopback_VertexAttribs3fvNV
;
1869 dest
->VertexAttribs3dvNV
= loopback_VertexAttribs3dvNV
;
1870 dest
->VertexAttribs4svNV
= loopback_VertexAttribs4svNV
;
1871 dest
->VertexAttribs4fvNV
= loopback_VertexAttribs4fvNV
;
1872 dest
->VertexAttribs4dvNV
= loopback_VertexAttribs4dvNV
;
1873 dest
->VertexAttribs4ubvNV
= loopback_VertexAttribs4ubvNV
;