1 /* $Id: api_loopback.c,v 1.13 2001/12/20 15:30:45 keithw Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2001 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 <keithw@valinux.com>
32 #include "glapitable.h"
35 #include "api_compat.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)
69 #define FOGCOORDF(x) _compat_FogCoordfEXT(x)
70 #define SECONDARYCOLORUB(a,b,c) _compat_SecondaryColor3ubEXT(a,b,c)
71 #define SECONDARYCOLORF(a,b,c) _compat_SecondaryColor3fEXT(a,b,c)
75 loopback_Color3b( GLbyte red
, GLbyte green
, GLbyte blue
)
78 col
[0] = BYTE_TO_UBYTE(red
);
79 col
[1] = BYTE_TO_UBYTE(green
);
80 col
[2] = BYTE_TO_UBYTE(blue
);
86 loopback_Color3d( GLdouble red
, GLdouble green
, GLdouble blue
)
89 GLfloat r
= (GLfloat
) red
;
90 GLfloat g
= (GLfloat
) green
;
91 GLfloat b
= (GLfloat
) blue
;
92 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
93 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
94 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
100 loopback_Color3i( GLint red
, GLint green
, GLint blue
)
103 col
[0] = INT_TO_UBYTE(red
);
104 col
[1] = INT_TO_UBYTE(green
);
105 col
[2] = INT_TO_UBYTE(blue
);
111 loopback_Color3s( GLshort red
, GLshort green
, GLshort blue
)
114 col
[0] = SHORT_TO_UBYTE(red
);
115 col
[1] = SHORT_TO_UBYTE(green
);
116 col
[2] = SHORT_TO_UBYTE(blue
);
122 loopback_Color3ui( GLuint red
, GLuint green
, GLuint blue
)
125 col
[0] = UINT_TO_UBYTE(red
);
126 col
[1] = UINT_TO_UBYTE(green
);
127 col
[2] = UINT_TO_UBYTE(blue
);
133 loopback_Color3us( GLushort red
, GLushort green
, GLushort blue
)
136 col
[0] = USHORT_TO_UBYTE(red
);
137 col
[1] = USHORT_TO_UBYTE(green
);
138 col
[2] = USHORT_TO_UBYTE(blue
);
144 loopback_Color4b( GLbyte red
, GLbyte green
, GLbyte blue
, GLbyte alpha
)
147 col
[0] = BYTE_TO_UBYTE(red
);
148 col
[1] = BYTE_TO_UBYTE(green
);
149 col
[2] = BYTE_TO_UBYTE(blue
);
155 loopback_Color4d( GLdouble red
, GLdouble green
, GLdouble blue
, GLdouble alpha
)
158 GLfloat r
= (GLfloat
) red
;
159 GLfloat g
= (GLfloat
) green
;
160 GLfloat b
= (GLfloat
) blue
;
161 GLfloat a
= (GLfloat
) alpha
;
162 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
163 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
164 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
165 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
170 loopback_Color4i( GLint red
, GLint green
, GLint blue
, GLint alpha
)
173 col
[0] = INT_TO_UBYTE(red
);
174 col
[1] = INT_TO_UBYTE(green
);
175 col
[2] = INT_TO_UBYTE(blue
);
176 col
[3] = INT_TO_UBYTE(alpha
);
181 loopback_Color4s( GLshort red
, GLshort green
, GLshort blue
,
185 col
[0] = SHORT_TO_UBYTE(red
);
186 col
[1] = SHORT_TO_UBYTE(green
);
187 col
[2] = SHORT_TO_UBYTE(blue
);
188 col
[3] = SHORT_TO_UBYTE(alpha
);
193 loopback_Color4ui( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
196 col
[0] = UINT_TO_UBYTE(red
);
197 col
[1] = UINT_TO_UBYTE(green
);
198 col
[2] = UINT_TO_UBYTE(blue
);
199 col
[3] = UINT_TO_UBYTE(alpha
);
204 loopback_Color4us( GLushort red
, GLushort green
, GLushort blue
,
208 col
[0] = USHORT_TO_UBYTE(red
);
209 col
[1] = USHORT_TO_UBYTE(green
);
210 col
[2] = USHORT_TO_UBYTE(blue
);
211 col
[3] = USHORT_TO_UBYTE(alpha
);
216 loopback_Color3bv( const GLbyte
*v
)
219 col
[0] = BYTE_TO_UBYTE(v
[0]);
220 col
[1] = BYTE_TO_UBYTE(v
[1]);
221 col
[2] = BYTE_TO_UBYTE(v
[2]);
227 loopback_Color3dv( const GLdouble
*v
)
230 GLfloat r
= (GLfloat
) v
[0];
231 GLfloat g
= (GLfloat
) v
[1];
232 GLfloat b
= (GLfloat
) v
[2];
233 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
234 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
235 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
241 loopback_Color3iv( const GLint
*v
)
244 col
[0] = INT_TO_UBYTE(v
[0]);
245 col
[1] = INT_TO_UBYTE(v
[1]);
246 col
[2] = INT_TO_UBYTE(v
[2]);
252 loopback_Color3sv( const GLshort
*v
)
255 col
[0] = SHORT_TO_UBYTE(v
[0]);
256 col
[1] = SHORT_TO_UBYTE(v
[1]);
257 col
[2] = SHORT_TO_UBYTE(v
[2]);
263 loopback_Color3uiv( const GLuint
*v
)
266 col
[0] = UINT_TO_UBYTE(v
[0]);
267 col
[1] = UINT_TO_UBYTE(v
[1]);
268 col
[2] = UINT_TO_UBYTE(v
[2]);
274 loopback_Color3usv( const GLushort
*v
)
277 col
[0] = USHORT_TO_UBYTE(v
[0]);
278 col
[1] = USHORT_TO_UBYTE(v
[1]);
279 col
[2] = USHORT_TO_UBYTE(v
[2]);
286 loopback_Color4bv( const GLbyte
*v
)
289 col
[0] = BYTE_TO_UBYTE(v
[0]);
290 col
[1] = BYTE_TO_UBYTE(v
[1]);
291 col
[2] = BYTE_TO_UBYTE(v
[2]);
292 col
[3] = BYTE_TO_UBYTE(v
[3]);
297 loopback_Color4dv( const GLdouble
*v
)
300 GLfloat r
= (GLfloat
) v
[0];
301 GLfloat g
= (GLfloat
) v
[1];
302 GLfloat b
= (GLfloat
) v
[2];
303 GLfloat a
= (GLfloat
) v
[3];
304 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
305 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
306 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
307 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
312 loopback_Color4iv( const GLint
*v
)
315 col
[0] = INT_TO_UBYTE(v
[0]);
316 col
[1] = INT_TO_UBYTE(v
[1]);
317 col
[2] = INT_TO_UBYTE(v
[2]);
318 col
[3] = INT_TO_UBYTE(v
[3]);
323 loopback_Color4sv( const GLshort
*v
)
326 col
[0] = SHORT_TO_UBYTE(v
[0]);
327 col
[1] = SHORT_TO_UBYTE(v
[1]);
328 col
[2] = SHORT_TO_UBYTE(v
[2]);
329 col
[3] = SHORT_TO_UBYTE(v
[3]);
334 loopback_Color4uiv( const GLuint
*v
)
337 col
[0] = UINT_TO_UBYTE(v
[0]);
338 col
[1] = UINT_TO_UBYTE(v
[1]);
339 col
[2] = UINT_TO_UBYTE(v
[2]);
340 col
[3] = UINT_TO_UBYTE(v
[3]);
345 loopback_Color4usv( const GLushort
*v
)
348 col
[0] = USHORT_TO_UBYTE(v
[0]);
349 col
[1] = USHORT_TO_UBYTE(v
[1]);
350 col
[2] = USHORT_TO_UBYTE(v
[2]);
351 col
[3] = USHORT_TO_UBYTE(v
[3]);
356 loopback_Color3b_f( GLbyte red
, GLbyte green
, GLbyte blue
)
358 COLORF( BYTE_TO_FLOAT(red
),
359 BYTE_TO_FLOAT(green
),
365 loopback_Color3d_f( GLdouble red
, GLdouble green
, GLdouble blue
)
367 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, 1.0 );
371 loopback_Color3i_f( GLint red
, GLint green
, GLint blue
)
373 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
374 INT_TO_FLOAT(blue
), 1.0);
378 loopback_Color3s_f( GLshort red
, GLshort green
, GLshort blue
)
380 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
381 SHORT_TO_FLOAT(blue
), 1.0);
385 loopback_Color3ui_f( GLuint red
, GLuint green
, GLuint blue
)
387 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
388 UINT_TO_FLOAT(blue
), 1.0 );
392 loopback_Color3us_f( GLushort red
, GLushort green
, GLushort blue
)
394 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
395 USHORT_TO_FLOAT(blue
), 1.0 );
400 loopback_Color3bv_f( const GLbyte
*v
)
402 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
403 BYTE_TO_FLOAT(v
[2]), 1.0 );
407 loopback_Color3dv_f( const GLdouble
*v
)
409 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0 );
413 loopback_Color3iv_f( const GLint
*v
)
415 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
416 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
420 loopback_Color3sv_f( const GLshort
*v
)
422 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
423 SHORT_TO_FLOAT(v
[2]), 1.0 );
427 loopback_Color3uiv_f( const GLuint
*v
)
429 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
430 UINT_TO_FLOAT(v
[2]), 1.0 );
434 loopback_Color3usv_f( const GLushort
*v
)
436 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
437 USHORT_TO_FLOAT(v
[2]), 1.0 );
442 loopback_Color4b_f( GLbyte red
, GLbyte green
, GLbyte blue
,
445 COLORF( BYTE_TO_FLOAT(red
), BYTE_TO_FLOAT(green
),
446 BYTE_TO_FLOAT(blue
), BYTE_TO_FLOAT(alpha
) );
450 loopback_Color4d_f( GLdouble red
, GLdouble green
, GLdouble blue
,
453 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, (GLfloat
) alpha
);
457 loopback_Color4i_f( GLint red
, GLint green
, GLint blue
, GLint alpha
)
459 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
460 INT_TO_FLOAT(blue
), INT_TO_FLOAT(alpha
) );
464 loopback_Color4s_f( GLshort red
, GLshort green
, GLshort blue
,
467 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
468 SHORT_TO_FLOAT(blue
), SHORT_TO_FLOAT(alpha
) );
472 loopback_Color4ui_f( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
474 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
475 UINT_TO_FLOAT(blue
), UINT_TO_FLOAT(alpha
) );
479 loopback_Color4us_f( GLushort red
, GLushort green
, GLushort blue
, GLushort alpha
)
481 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
482 USHORT_TO_FLOAT(blue
), USHORT_TO_FLOAT(alpha
) );
487 loopback_Color4iv_f( const GLint
*v
)
489 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
490 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
495 loopback_Color4bv_f( const GLbyte
*v
)
497 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
498 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]) );
502 loopback_Color4dv_f( const GLdouble
*v
)
504 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3] );
509 loopback_Color4sv_f( const GLshort
*v
)
511 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
512 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]) );
517 loopback_Color4uiv_f( const GLuint
*v
)
519 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
520 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]) );
524 loopback_Color4usv_f( const GLushort
*v
)
526 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
527 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]) );
531 loopback_FogCoorddEXT( GLdouble d
)
533 FOGCOORDF( (GLfloat
) d
);
537 loopback_FogCoorddvEXT( const GLdouble
*v
)
539 FOGCOORDF( (GLfloat
) *v
);
544 loopback_Indexd( GLdouble c
)
550 loopback_Indexf( GLfloat c
)
552 INDEX( (GLuint
) (GLint
) c
);
556 loopback_Indexs( GLshort c
)
562 loopback_Indexub( GLubyte c
)
568 loopback_Indexdv( const GLdouble
*c
)
570 INDEX( (GLint
) (GLint
) *c
);
574 loopback_Indexfv( const GLfloat
*c
)
576 INDEX( (GLint
) (GLint
) *c
);
580 loopback_Indexiv( const GLint
*c
)
586 loopback_Indexsv( const GLshort
*c
)
592 loopback_Indexubv( const GLubyte
*c
)
598 loopback_Normal3b( GLbyte nx
, GLbyte ny
, GLbyte nz
)
600 NORMAL( BYTE_TO_FLOAT(nx
), BYTE_TO_FLOAT(ny
), BYTE_TO_FLOAT(nz
) );
604 loopback_Normal3d( GLdouble nx
, GLdouble ny
, GLdouble nz
)
606 NORMAL((GLfloat
) nx
, (GLfloat
) ny
, (GLfloat
) nz
);
610 loopback_Normal3i( GLint nx
, GLint ny
, GLint nz
)
612 NORMAL( INT_TO_FLOAT(nx
), INT_TO_FLOAT(ny
), INT_TO_FLOAT(nz
) );
616 loopback_Normal3s( GLshort nx
, GLshort ny
, GLshort nz
)
618 NORMAL( SHORT_TO_FLOAT(nx
), SHORT_TO_FLOAT(ny
), SHORT_TO_FLOAT(nz
) );
622 loopback_Normal3bv( const GLbyte
*v
)
624 NORMAL( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]), BYTE_TO_FLOAT(v
[2]) );
628 loopback_Normal3dv( const GLdouble
*v
)
630 NORMAL( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
634 loopback_Normal3iv( const GLint
*v
)
636 NORMAL( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]), INT_TO_FLOAT(v
[2]) );
640 loopback_Normal3sv( const GLshort
*v
)
642 NORMAL( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]), SHORT_TO_FLOAT(v
[2]) );
646 loopback_TexCoord1d( GLdouble s
)
648 TEXCOORD1((GLfloat
) s
);
652 loopback_TexCoord1i( GLint s
)
654 TEXCOORD1((GLfloat
) s
);
658 loopback_TexCoord1s( GLshort s
)
660 TEXCOORD1((GLfloat
) s
);
664 loopback_TexCoord2d( GLdouble s
, GLdouble t
)
666 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
670 loopback_TexCoord2s( GLshort s
, GLshort t
)
672 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
676 loopback_TexCoord2i( GLint s
, GLint t
)
678 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
682 loopback_TexCoord3d( GLdouble s
, GLdouble t
, GLdouble r
)
684 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
688 loopback_TexCoord3i( GLint s
, GLint t
, GLint r
)
690 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
694 loopback_TexCoord3s( GLshort s
, GLshort t
, GLshort r
)
696 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
700 loopback_TexCoord4d( GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
702 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
706 loopback_TexCoord4i( GLint s
, GLint t
, GLint r
, GLint q
)
708 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
712 loopback_TexCoord4s( GLshort s
, GLshort t
, GLshort r
, GLshort q
)
714 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
718 loopback_TexCoord1dv( const GLdouble
*v
)
720 TEXCOORD1((GLfloat
) v
[0]);
724 loopback_TexCoord1iv( const GLint
*v
)
726 TEXCOORD1((GLfloat
) v
[0]);
730 loopback_TexCoord1sv( const GLshort
*v
)
732 TEXCOORD1((GLfloat
) v
[0]);
736 loopback_TexCoord2dv( const GLdouble
*v
)
738 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
742 loopback_TexCoord2iv( const GLint
*v
)
744 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
748 loopback_TexCoord2sv( const GLshort
*v
)
750 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
754 loopback_TexCoord3dv( const GLdouble
*v
)
756 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
760 loopback_TexCoord3iv( const GLint
*v
)
762 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
766 loopback_TexCoord3sv( const GLshort
*v
)
768 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
772 loopback_TexCoord4dv( const GLdouble
*v
)
774 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
778 loopback_TexCoord4iv( const GLint
*v
)
780 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
784 loopback_TexCoord4sv( const GLshort
*v
)
786 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
790 loopback_Vertex2d( GLdouble x
, GLdouble y
)
792 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
796 loopback_Vertex2i( GLint x
, GLint y
)
798 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
802 loopback_Vertex2s( GLshort x
, GLshort y
)
804 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
808 loopback_Vertex3d( GLdouble x
, GLdouble y
, GLdouble z
)
810 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
814 loopback_Vertex3i( GLint x
, GLint y
, GLint z
)
816 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
820 loopback_Vertex3s( GLshort x
, GLshort y
, GLshort z
)
822 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
826 loopback_Vertex4d( GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
828 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
832 loopback_Vertex4i( GLint x
, GLint y
, GLint z
, GLint w
)
834 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
838 loopback_Vertex4s( GLshort x
, GLshort y
, GLshort z
, GLshort w
)
840 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
844 loopback_Vertex2dv( const GLdouble
*v
)
846 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
850 loopback_Vertex2iv( const GLint
*v
)
852 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
856 loopback_Vertex2sv( const GLshort
*v
)
858 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
862 loopback_Vertex3dv( const GLdouble
*v
)
864 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
868 loopback_Vertex3iv( const GLint
*v
)
870 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
874 loopback_Vertex3sv( const GLshort
*v
)
876 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
880 loopback_Vertex4dv( const GLdouble
*v
)
882 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
883 (GLfloat
) v
[2], (GLfloat
) v
[3] );
887 loopback_Vertex4iv( const GLint
*v
)
889 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
890 (GLfloat
) v
[2], (GLfloat
) v
[3] );
894 loopback_Vertex4sv( const GLshort
*v
)
896 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
897 (GLfloat
) v
[2], (GLfloat
) v
[3] );
901 loopback_MultiTexCoord1dARB(GLenum target
, GLdouble s
)
903 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
907 loopback_MultiTexCoord1dvARB(GLenum target
, const GLdouble
*v
)
909 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
913 loopback_MultiTexCoord1iARB(GLenum target
, GLint s
)
915 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
919 loopback_MultiTexCoord1ivARB(GLenum target
, const GLint
*v
)
921 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
925 loopback_MultiTexCoord1sARB(GLenum target
, GLshort s
)
927 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
931 loopback_MultiTexCoord1svARB(GLenum target
, const GLshort
*v
)
933 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
937 loopback_MultiTexCoord2dARB(GLenum target
, GLdouble s
, GLdouble t
)
939 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
943 loopback_MultiTexCoord2dvARB(GLenum target
, const GLdouble
*v
)
945 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
949 loopback_MultiTexCoord2iARB(GLenum target
, GLint s
, GLint t
)
951 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
955 loopback_MultiTexCoord2ivARB(GLenum target
, const GLint
*v
)
957 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
961 loopback_MultiTexCoord2sARB(GLenum target
, GLshort s
, GLshort t
)
963 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
967 loopback_MultiTexCoord2svARB(GLenum target
, const GLshort
*v
)
969 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
973 loopback_MultiTexCoord3dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
)
975 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
979 loopback_MultiTexCoord3dvARB(GLenum target
, const GLdouble
*v
)
981 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
985 loopback_MultiTexCoord3iARB(GLenum target
, GLint s
, GLint t
, GLint r
)
987 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
991 loopback_MultiTexCoord3ivARB(GLenum target
, const GLint
*v
)
993 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
997 loopback_MultiTexCoord3sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
)
999 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
1003 loopback_MultiTexCoord3svARB(GLenum target
, const GLshort
*v
)
1005 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1009 loopback_MultiTexCoord4dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
1011 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1012 (GLfloat
) r
, (GLfloat
) q
);
1016 loopback_MultiTexCoord4dvARB(GLenum target
, const GLdouble
*v
)
1018 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1019 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1023 loopback_MultiTexCoord4iARB(GLenum target
, GLint s
, GLint t
, GLint r
, GLint q
)
1025 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1026 (GLfloat
) r
, (GLfloat
) q
);
1030 loopback_MultiTexCoord4ivARB(GLenum target
, const GLint
*v
)
1032 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1033 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1037 loopback_MultiTexCoord4sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
, GLshort q
)
1039 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1040 (GLfloat
) r
, (GLfloat
) q
);
1044 loopback_MultiTexCoord4svARB(GLenum target
, const GLshort
*v
)
1046 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1047 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1051 loopback_EvalCoord2dv( const GLdouble
*u
)
1053 EVALCOORD2( (GLfloat
) u
[0], (GLfloat
) u
[1] );
1057 loopback_EvalCoord2fv( const GLfloat
*u
)
1059 EVALCOORD2( u
[0], u
[1] );
1063 loopback_EvalCoord2d( GLdouble u
, GLdouble v
)
1065 EVALCOORD2( (GLfloat
) u
, (GLfloat
) v
);
1069 loopback_EvalCoord1dv( const GLdouble
*u
)
1071 EVALCOORD1( (GLfloat
) *u
);
1075 loopback_EvalCoord1fv( const GLfloat
*u
)
1077 EVALCOORD1( (GLfloat
) *u
);
1081 loopback_EvalCoord1d( GLdouble u
)
1083 EVALCOORD1( (GLfloat
) u
);
1087 loopback_Materialf( GLenum face
, GLenum pname
, GLfloat param
)
1091 MATERIALFV( face
, pname
, fparam
);
1095 loopback_Materiali(GLenum face
, GLenum pname
, GLint param
)
1097 GLfloat p
= (GLfloat
) param
;
1098 MATERIALFV(face
, pname
, &p
);
1102 loopback_Materialiv(GLenum face
, GLenum pname
, const GLint
*params
)
1110 case GL_AMBIENT_AND_DIFFUSE
:
1111 fparam
[0] = INT_TO_FLOAT( params
[0] );
1112 fparam
[1] = INT_TO_FLOAT( params
[1] );
1113 fparam
[2] = INT_TO_FLOAT( params
[2] );
1114 fparam
[3] = INT_TO_FLOAT( params
[3] );
1117 fparam
[0] = (GLfloat
) params
[0];
1119 case GL_COLOR_INDEXES
:
1120 fparam
[0] = (GLfloat
) params
[0];
1121 fparam
[1] = (GLfloat
) params
[1];
1122 fparam
[2] = (GLfloat
) params
[2];
1127 MATERIALFV(face
, pname
, fparam
);
1132 loopback_Rectd(GLdouble x1
, GLdouble y1
, GLdouble x2
, GLdouble y2
)
1134 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1138 loopback_Rectdv(const GLdouble
*v1
, const GLdouble
*v2
)
1140 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1144 loopback_Rectfv(const GLfloat
*v1
, const GLfloat
*v2
)
1146 RECTF(v1
[0], v1
[1], v2
[0], v2
[1]);
1150 loopback_Recti(GLint x1
, GLint y1
, GLint x2
, GLint y2
)
1152 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1156 loopback_Rectiv(const GLint
*v1
, const GLint
*v2
)
1158 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1162 loopback_Rects(GLshort x1
, GLshort y1
, GLshort x2
, GLshort y2
)
1164 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1168 loopback_Rectsv(const GLshort
*v1
, const GLshort
*v2
)
1170 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1174 loopback_SecondaryColor3bEXT( GLbyte red
, GLbyte green
, GLbyte blue
)
1176 SECONDARYCOLORUB( BYTE_TO_UBYTE(red
),
1177 BYTE_TO_UBYTE(green
),
1178 BYTE_TO_UBYTE(blue
) );
1182 loopback_SecondaryColor3dEXT( GLdouble red
, GLdouble green
, GLdouble blue
)
1185 GLfloat r
= (GLfloat
) red
;
1186 GLfloat g
= (GLfloat
) green
;
1187 GLfloat b
= (GLfloat
) blue
;
1188 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1189 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1190 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1191 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1195 loopback_SecondaryColor3iEXT( GLint red
, GLint green
, GLint blue
)
1197 SECONDARYCOLORUB( INT_TO_UBYTE(red
),
1198 INT_TO_UBYTE(green
),
1199 INT_TO_UBYTE(blue
));
1203 loopback_SecondaryColor3sEXT( GLshort red
, GLshort green
, GLshort blue
)
1205 SECONDARYCOLORUB(SHORT_TO_UBYTE(red
),
1206 SHORT_TO_UBYTE(green
),
1207 SHORT_TO_UBYTE(blue
));
1211 loopback_SecondaryColor3uiEXT( GLuint red
, GLuint green
, GLuint blue
)
1213 SECONDARYCOLORUB(UINT_TO_UBYTE(red
),
1214 UINT_TO_UBYTE(green
),
1215 UINT_TO_UBYTE(blue
));
1219 loopback_SecondaryColor3usEXT( GLushort red
, GLushort green
, GLushort blue
)
1221 SECONDARYCOLORUB(USHORT_TO_UBYTE(red
),
1222 USHORT_TO_UBYTE(green
),
1223 USHORT_TO_UBYTE(blue
));
1227 loopback_SecondaryColor3bvEXT( const GLbyte
*v
)
1229 const GLfloat a
= BYTE_TO_FLOAT(v
[0]);
1230 const GLfloat b
= BYTE_TO_FLOAT(v
[1]);
1231 const GLfloat c
= BYTE_TO_FLOAT(v
[2]);
1232 SECONDARYCOLORF(a
,b
,c
);
1236 loopback_SecondaryColor3dvEXT( const GLdouble
*v
)
1239 GLfloat r
= (GLfloat
) v
[0];
1240 GLfloat g
= (GLfloat
) v
[1];
1241 GLfloat b
= (GLfloat
) v
[2];
1242 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1243 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1244 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1245 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1249 loopback_SecondaryColor3ivEXT( const GLint
*v
)
1251 SECONDARYCOLORUB(INT_TO_UBYTE(v
[0]),
1253 INT_TO_UBYTE(v
[2]));
1257 loopback_SecondaryColor3svEXT( const GLshort
*v
)
1259 SECONDARYCOLORUB(SHORT_TO_UBYTE(v
[0]),
1260 SHORT_TO_UBYTE(v
[1]),
1261 SHORT_TO_UBYTE(v
[2]));
1265 loopback_SecondaryColor3uivEXT( const GLuint
*v
)
1267 SECONDARYCOLORUB(UINT_TO_UBYTE(v
[0]),
1268 UINT_TO_UBYTE(v
[1]),
1269 UINT_TO_UBYTE(v
[2]));
1273 loopback_SecondaryColor3usvEXT( const GLushort
*v
)
1275 SECONDARYCOLORUB(USHORT_TO_UBYTE(v
[0]),
1276 USHORT_TO_UBYTE(v
[1]),
1277 USHORT_TO_UBYTE(v
[2]));
1282 loopback_SecondaryColor3bEXT_f( GLbyte red
, GLbyte green
, GLbyte blue
)
1284 SECONDARYCOLORF( BYTE_TO_FLOAT(red
),
1285 BYTE_TO_FLOAT(green
),
1286 BYTE_TO_FLOAT(blue
) );
1290 loopback_SecondaryColor3dEXT_f( GLdouble red
, GLdouble green
, GLdouble blue
)
1292 SECONDARYCOLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
);
1296 loopback_SecondaryColor3iEXT_f( GLint red
, GLint green
, GLint blue
)
1298 SECONDARYCOLORF( INT_TO_FLOAT(red
),
1299 INT_TO_FLOAT(green
),
1300 INT_TO_FLOAT(blue
));
1304 loopback_SecondaryColor3sEXT_f( GLshort red
, GLshort green
, GLshort blue
)
1306 SECONDARYCOLORF(SHORT_TO_FLOAT(red
),
1307 SHORT_TO_FLOAT(green
),
1308 SHORT_TO_FLOAT(blue
));
1312 loopback_SecondaryColor3uiEXT_f( GLuint red
, GLuint green
, GLuint blue
)
1314 SECONDARYCOLORF(UINT_TO_FLOAT(red
),
1315 UINT_TO_FLOAT(green
),
1316 UINT_TO_FLOAT(blue
));
1320 loopback_SecondaryColor3usEXT_f( GLushort red
, GLushort green
, GLushort blue
)
1322 SECONDARYCOLORF(USHORT_TO_FLOAT(red
),
1323 USHORT_TO_FLOAT(green
),
1324 USHORT_TO_FLOAT(blue
));
1328 loopback_SecondaryColor3bvEXT_f( const GLbyte
*v
)
1330 SECONDARYCOLORF(BYTE_TO_FLOAT(v
[0]),
1331 BYTE_TO_FLOAT(v
[1]),
1332 BYTE_TO_FLOAT(v
[2]));
1336 loopback_SecondaryColor3dvEXT_f( const GLdouble
*v
)
1338 SECONDARYCOLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1341 loopback_SecondaryColor3ivEXT_f( const GLint
*v
)
1343 SECONDARYCOLORF(INT_TO_FLOAT(v
[0]),
1345 INT_TO_FLOAT(v
[2]));
1349 loopback_SecondaryColor3svEXT_f( const GLshort
*v
)
1351 SECONDARYCOLORF(SHORT_TO_FLOAT(v
[0]),
1352 SHORT_TO_FLOAT(v
[1]),
1353 SHORT_TO_FLOAT(v
[2]));
1357 loopback_SecondaryColor3uivEXT_f( const GLuint
*v
)
1359 SECONDARYCOLORF(UINT_TO_FLOAT(v
[0]),
1360 UINT_TO_FLOAT(v
[1]),
1361 UINT_TO_FLOAT(v
[2]));
1365 loopback_SecondaryColor3usvEXT_f( const GLushort
*v
)
1367 SECONDARYCOLORF(USHORT_TO_FLOAT(v
[0]),
1368 USHORT_TO_FLOAT(v
[1]),
1369 USHORT_TO_FLOAT(v
[2]));
1374 * GL_NV_vertex_program
1378 loopback_VertexAttrib1sNV(GLuint index
, GLshort x
)
1380 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1384 loopback_VertexAttrib1fNV(GLuint index
, GLfloat x
)
1386 ATTRIB(index
, x
, 0.0F
, 0.0F
, 1.0F
);
1390 loopback_VertexAttrib1dNV(GLuint index
, GLdouble x
)
1392 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1396 loopback_VertexAttrib2sNV(GLuint index
, GLshort x
, GLshort y
)
1398 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1402 loopback_VertexAttrib2fNV(GLuint index
, GLfloat x
, GLfloat y
)
1404 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1408 loopback_VertexAttrib2dNV(GLuint index
, GLdouble x
, GLdouble y
)
1410 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1414 loopback_VertexAttrib3sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
)
1416 ATTRIB(index
, (GLfloat
) x
, y
, z
, 1.0F
);
1420 loopback_VertexAttrib3fNV(GLuint index
, GLfloat x
, GLfloat y
, GLfloat z
)
1422 ATTRIB(index
, x
, y
, z
, 1.0F
);
1426 loopback_VertexAttrib3dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
)
1428 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, 1.0F
);
1432 loopback_VertexAttrib4sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
, GLshort w
)
1434 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1438 loopback_VertexAttrib4dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
1440 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1444 loopback_VertexAttrib4ubNV(GLuint index
, GLubyte x
, GLubyte y
, GLubyte z
, GLubyte w
)
1446 ATTRIB(index
, UBYTE_TO_FLOAT(x
), UBYTE_TO_FLOAT(y
),
1447 UBYTE_TO_FLOAT(z
), UBYTE_TO_FLOAT(w
));
1451 loopback_VertexAttrib1svNV(GLuint index
, const GLshort
*v
)
1453 ATTRIB(index
, (GLfloat
) v
[0], 0.0F
, 0.0F
, 1.0F
);
1457 loopback_VertexAttrib1fvNV(GLuint index
, const GLfloat
*v
)
1459 ATTRIB(index
, v
[0], 0.0F
, 0.0F
, 1.0F
);
1463 loopback_VertexAttrib1dvNV(GLuint index
, const GLdouble
*v
)
1465 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1469 loopback_VertexAttrib2svNV(GLuint index
, const GLshort
*v
)
1471 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1475 loopback_VertexAttrib2fvNV(GLuint index
, const GLfloat
*v
)
1477 ATTRIB(index
, v
[0], v
[1], 0.0F
, 1.0F
);
1481 loopback_VertexAttrib2dvNV(GLuint index
, const GLdouble
*v
)
1483 ATTRIB(index
, (GLfloat
) v
[0], (GLdouble
) v
[1], 0.0F
, 1.0F
);
1487 loopback_VertexAttrib3svNV(GLuint index
, const GLshort
*v
)
1489 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1493 loopback_VertexAttrib3fvNV(GLuint index
, const GLfloat
*v
)
1495 ATTRIB(index
, v
[0], v
[1], v
[2], 1.0F
);
1499 loopback_VertexAttrib3dvNV(GLuint index
, const GLdouble
*v
)
1501 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1505 loopback_VertexAttrib4svNV(GLuint index
, const GLshort
*v
)
1507 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1511 loopback_VertexAttrib4fvNV(GLuint index
, const GLfloat
*v
)
1513 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1517 loopback_VertexAttrib4dvNV(GLuint index
, const GLdouble
*v
)
1519 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1523 loopback_VertexAttrib4ubvNV(GLuint index
, const GLubyte
*v
)
1525 ATTRIB(index
, UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
1526 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]));
1531 loopback_VertexAttribs1svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1534 for (i
= n
- 1; i
>= 0; i
--)
1535 loopback_VertexAttrib1svNV(index
+ i
, v
+ i
);
1539 loopback_VertexAttribs1fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1542 for (i
= n
- 1; i
>= 0; i
--)
1543 loopback_VertexAttrib1fvNV(index
+ i
, v
+ i
);
1547 loopback_VertexAttribs1dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1550 for (i
= n
- 1; i
>= 0; i
--)
1551 loopback_VertexAttrib1dvNV(index
+ i
, v
+ i
);
1555 loopback_VertexAttribs2svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1558 for (i
= n
- 1; i
>= 0; i
--)
1559 loopback_VertexAttrib2svNV(index
+ i
, v
+ 2 * i
);
1563 loopback_VertexAttribs2fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1566 for (i
= n
- 1; i
>= 0; i
--)
1567 loopback_VertexAttrib2fvNV(index
+ i
, v
+ 2 * i
);
1571 loopback_VertexAttribs2dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1574 for (i
= n
- 1; i
>= 0; i
--)
1575 loopback_VertexAttrib2dvNV(index
+ i
, v
+ 2 * i
);
1579 loopback_VertexAttribs3svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1582 for (i
= n
- 1; i
>= 0; i
--)
1583 loopback_VertexAttrib3svNV(index
+ i
, v
+ 3 * i
);
1587 loopback_VertexAttribs3fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1590 for (i
= n
- 1; i
>= 0; i
--)
1591 loopback_VertexAttrib3fvNV(index
+ i
, v
+ 3 * i
);
1595 loopback_VertexAttribs3dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1598 for (i
= n
- 1; i
>= 0; i
--)
1599 loopback_VertexAttrib3dvNV(index
+ i
, v
+ 3 * i
);
1603 loopback_VertexAttribs4svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1606 for (i
= n
- 1; i
>= 0; i
--)
1607 loopback_VertexAttrib4svNV(index
+ i
, v
+ 4 * i
);
1611 loopback_VertexAttribs4fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1614 for (i
= n
- 1; i
>= 0; i
--)
1615 loopback_VertexAttrib4fvNV(index
+ i
, v
+ 4 * i
);
1619 loopback_VertexAttribs4dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1622 for (i
= n
- 1; i
>= 0; i
--)
1623 loopback_VertexAttrib4dvNV(index
+ i
, v
+ 4 * i
);
1627 loopback_VertexAttribs4ubvNV(GLuint index
, GLsizei n
, const GLubyte
*v
)
1630 for (i
= n
- 1; i
>= 0; i
--)
1631 loopback_VertexAttrib4ubvNV(index
+ i
, v
+ 4 * i
);
1636 _mesa_loopback_prefer_float( struct _glapi_table
*dest
,
1637 GLboolean prefer_float_colors
)
1639 if (!prefer_float_colors
) {
1640 dest
->Color3b
= loopback_Color3b
;
1641 dest
->Color3d
= loopback_Color3d
;
1642 dest
->Color3i
= loopback_Color3i
;
1643 dest
->Color3s
= loopback_Color3s
;
1644 dest
->Color3ui
= loopback_Color3ui
;
1645 dest
->Color3us
= loopback_Color3us
;
1646 dest
->Color4b
= loopback_Color4b
;
1647 dest
->Color4d
= loopback_Color4d
;
1648 dest
->Color4i
= loopback_Color4i
;
1649 dest
->Color4s
= loopback_Color4s
;
1650 dest
->Color4ui
= loopback_Color4ui
;
1651 dest
->Color4us
= loopback_Color4us
;
1652 dest
->Color3bv
= loopback_Color3bv
;
1653 dest
->Color3dv
= loopback_Color3dv
;
1654 dest
->Color3iv
= loopback_Color3iv
;
1655 dest
->Color3sv
= loopback_Color3sv
;
1656 dest
->Color3uiv
= loopback_Color3uiv
;
1657 dest
->Color3usv
= loopback_Color3usv
;
1658 dest
->Color4bv
= loopback_Color4bv
;
1659 dest
->Color4dv
= loopback_Color4dv
;
1660 dest
->Color4iv
= loopback_Color4iv
;
1661 dest
->Color4sv
= loopback_Color4sv
;
1662 dest
->Color4uiv
= loopback_Color4uiv
;
1663 dest
->Color4usv
= loopback_Color4usv
;
1664 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT
;
1665 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT
;
1666 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT
;
1667 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT
;
1668 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT
;
1669 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT
;
1670 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT
;
1671 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT
;
1672 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT
;
1673 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT
;
1674 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT
;
1675 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT
;
1678 dest
->Color3b
= loopback_Color3b_f
;
1679 dest
->Color3d
= loopback_Color3d_f
;
1680 dest
->Color3i
= loopback_Color3i_f
;
1681 dest
->Color3s
= loopback_Color3s_f
;
1682 dest
->Color3ui
= loopback_Color3ui_f
;
1683 dest
->Color3us
= loopback_Color3us_f
;
1684 dest
->Color4b
= loopback_Color4b_f
;
1685 dest
->Color4d
= loopback_Color4d_f
;
1686 dest
->Color4i
= loopback_Color4i_f
;
1687 dest
->Color4s
= loopback_Color4s_f
;
1688 dest
->Color4ui
= loopback_Color4ui_f
;
1689 dest
->Color4us
= loopback_Color4us_f
;
1690 dest
->Color3bv
= loopback_Color3bv_f
;
1691 dest
->Color3dv
= loopback_Color3dv_f
;
1692 dest
->Color3iv
= loopback_Color3iv_f
;
1693 dest
->Color3sv
= loopback_Color3sv_f
;
1694 dest
->Color3uiv
= loopback_Color3uiv_f
;
1695 dest
->Color3usv
= loopback_Color3usv_f
;
1696 dest
->Color4bv
= loopback_Color4bv_f
;
1697 dest
->Color4dv
= loopback_Color4dv_f
;
1698 dest
->Color4iv
= loopback_Color4iv_f
;
1699 dest
->Color4sv
= loopback_Color4sv_f
;
1700 dest
->Color4uiv
= loopback_Color4uiv_f
;
1701 dest
->Color4usv
= loopback_Color4usv_f
;
1702 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT_f
;
1703 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT_f
;
1704 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT_f
;
1705 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT_f
;
1706 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT_f
;
1707 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT_f
;
1708 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT_f
;
1709 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT_f
;
1710 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT_f
;
1711 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT_f
;
1712 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT_f
;
1713 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT_f
;
1717 /* Passing prefer_float_colors as true will mean that all colors
1718 * *except* Color{34}ub{v} are passed as floats. Setting it false will
1719 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1721 * This code never registers handlers for any of the entry points
1722 * listed in vtxfmt.h.
1725 _mesa_loopback_init_api_table( struct _glapi_table
*dest
,
1726 GLboolean prefer_float_colors
)
1728 _mesa_loopback_prefer_float( dest
, prefer_float_colors
);
1730 dest
->Indexd
= loopback_Indexd
;
1731 dest
->Indexf
= loopback_Indexf
;
1732 dest
->Indexs
= loopback_Indexs
;
1733 dest
->Indexub
= loopback_Indexub
;
1734 dest
->Indexdv
= loopback_Indexdv
;
1735 dest
->Indexfv
= loopback_Indexfv
;
1736 dest
->Indexiv
= loopback_Indexiv
;
1737 dest
->Indexsv
= loopback_Indexsv
;
1738 dest
->Indexubv
= loopback_Indexubv
;
1739 dest
->Normal3b
= loopback_Normal3b
;
1740 dest
->Normal3d
= loopback_Normal3d
;
1741 dest
->Normal3i
= loopback_Normal3i
;
1742 dest
->Normal3s
= loopback_Normal3s
;
1743 dest
->Normal3bv
= loopback_Normal3bv
;
1744 dest
->Normal3dv
= loopback_Normal3dv
;
1745 dest
->Normal3iv
= loopback_Normal3iv
;
1746 dest
->Normal3sv
= loopback_Normal3sv
;
1747 dest
->TexCoord1d
= loopback_TexCoord1d
;
1748 dest
->TexCoord1i
= loopback_TexCoord1i
;
1749 dest
->TexCoord1s
= loopback_TexCoord1s
;
1750 dest
->TexCoord2d
= loopback_TexCoord2d
;
1751 dest
->TexCoord2s
= loopback_TexCoord2s
;
1752 dest
->TexCoord2i
= loopback_TexCoord2i
;
1753 dest
->TexCoord3d
= loopback_TexCoord3d
;
1754 dest
->TexCoord3i
= loopback_TexCoord3i
;
1755 dest
->TexCoord3s
= loopback_TexCoord3s
;
1756 dest
->TexCoord4d
= loopback_TexCoord4d
;
1757 dest
->TexCoord4i
= loopback_TexCoord4i
;
1758 dest
->TexCoord4s
= loopback_TexCoord4s
;
1759 dest
->TexCoord1dv
= loopback_TexCoord1dv
;
1760 dest
->TexCoord1iv
= loopback_TexCoord1iv
;
1761 dest
->TexCoord1sv
= loopback_TexCoord1sv
;
1762 dest
->TexCoord2dv
= loopback_TexCoord2dv
;
1763 dest
->TexCoord2iv
= loopback_TexCoord2iv
;
1764 dest
->TexCoord2sv
= loopback_TexCoord2sv
;
1765 dest
->TexCoord3dv
= loopback_TexCoord3dv
;
1766 dest
->TexCoord3iv
= loopback_TexCoord3iv
;
1767 dest
->TexCoord3sv
= loopback_TexCoord3sv
;
1768 dest
->TexCoord4dv
= loopback_TexCoord4dv
;
1769 dest
->TexCoord4iv
= loopback_TexCoord4iv
;
1770 dest
->TexCoord4sv
= loopback_TexCoord4sv
;
1771 dest
->Vertex2d
= loopback_Vertex2d
;
1772 dest
->Vertex2i
= loopback_Vertex2i
;
1773 dest
->Vertex2s
= loopback_Vertex2s
;
1774 dest
->Vertex3d
= loopback_Vertex3d
;
1775 dest
->Vertex3i
= loopback_Vertex3i
;
1776 dest
->Vertex3s
= loopback_Vertex3s
;
1777 dest
->Vertex4d
= loopback_Vertex4d
;
1778 dest
->Vertex4i
= loopback_Vertex4i
;
1779 dest
->Vertex4s
= loopback_Vertex4s
;
1780 dest
->Vertex2dv
= loopback_Vertex2dv
;
1781 dest
->Vertex2iv
= loopback_Vertex2iv
;
1782 dest
->Vertex2sv
= loopback_Vertex2sv
;
1783 dest
->Vertex3dv
= loopback_Vertex3dv
;
1784 dest
->Vertex3iv
= loopback_Vertex3iv
;
1785 dest
->Vertex3sv
= loopback_Vertex3sv
;
1786 dest
->Vertex4dv
= loopback_Vertex4dv
;
1787 dest
->Vertex4iv
= loopback_Vertex4iv
;
1788 dest
->Vertex4sv
= loopback_Vertex4sv
;
1789 dest
->MultiTexCoord1dARB
= loopback_MultiTexCoord1dARB
;
1790 dest
->MultiTexCoord1dvARB
= loopback_MultiTexCoord1dvARB
;
1791 dest
->MultiTexCoord1iARB
= loopback_MultiTexCoord1iARB
;
1792 dest
->MultiTexCoord1ivARB
= loopback_MultiTexCoord1ivARB
;
1793 dest
->MultiTexCoord1sARB
= loopback_MultiTexCoord1sARB
;
1794 dest
->MultiTexCoord1svARB
= loopback_MultiTexCoord1svARB
;
1795 dest
->MultiTexCoord2dARB
= loopback_MultiTexCoord2dARB
;
1796 dest
->MultiTexCoord2dvARB
= loopback_MultiTexCoord2dvARB
;
1797 dest
->MultiTexCoord2iARB
= loopback_MultiTexCoord2iARB
;
1798 dest
->MultiTexCoord2ivARB
= loopback_MultiTexCoord2ivARB
;
1799 dest
->MultiTexCoord2sARB
= loopback_MultiTexCoord2sARB
;
1800 dest
->MultiTexCoord2svARB
= loopback_MultiTexCoord2svARB
;
1801 dest
->MultiTexCoord3dARB
= loopback_MultiTexCoord3dARB
;
1802 dest
->MultiTexCoord3dvARB
= loopback_MultiTexCoord3dvARB
;
1803 dest
->MultiTexCoord3iARB
= loopback_MultiTexCoord3iARB
;
1804 dest
->MultiTexCoord3ivARB
= loopback_MultiTexCoord3ivARB
;
1805 dest
->MultiTexCoord3sARB
= loopback_MultiTexCoord3sARB
;
1806 dest
->MultiTexCoord3svARB
= loopback_MultiTexCoord3svARB
;
1807 dest
->MultiTexCoord4dARB
= loopback_MultiTexCoord4dARB
;
1808 dest
->MultiTexCoord4dvARB
= loopback_MultiTexCoord4dvARB
;
1809 dest
->MultiTexCoord4iARB
= loopback_MultiTexCoord4iARB
;
1810 dest
->MultiTexCoord4ivARB
= loopback_MultiTexCoord4ivARB
;
1811 dest
->MultiTexCoord4sARB
= loopback_MultiTexCoord4sARB
;
1812 dest
->MultiTexCoord4svARB
= loopback_MultiTexCoord4svARB
;
1813 dest
->EvalCoord2dv
= loopback_EvalCoord2dv
;
1814 dest
->EvalCoord2fv
= loopback_EvalCoord2fv
;
1815 dest
->EvalCoord2d
= loopback_EvalCoord2d
;
1816 dest
->EvalCoord1dv
= loopback_EvalCoord1dv
;
1817 dest
->EvalCoord1fv
= loopback_EvalCoord1fv
;
1818 dest
->EvalCoord1d
= loopback_EvalCoord1d
;
1819 dest
->Materialf
= loopback_Materialf
;
1820 dest
->Materiali
= loopback_Materiali
;
1821 dest
->Materialiv
= loopback_Materialiv
;
1822 dest
->Rectd
= loopback_Rectd
;
1823 dest
->Rectdv
= loopback_Rectdv
;
1824 dest
->Rectfv
= loopback_Rectfv
;
1825 dest
->Recti
= loopback_Recti
;
1826 dest
->Rectiv
= loopback_Rectiv
;
1827 dest
->Rects
= loopback_Rects
;
1828 dest
->Rectsv
= loopback_Rectsv
;
1829 dest
->FogCoorddEXT
= loopback_FogCoorddEXT
;
1830 dest
->FogCoorddvEXT
= loopback_FogCoorddvEXT
;
1832 dest
->VertexAttrib1sNV
= loopback_VertexAttrib1sNV
;
1833 dest
->VertexAttrib1fNV
= loopback_VertexAttrib1fNV
;
1834 dest
->VertexAttrib1dNV
= loopback_VertexAttrib1dNV
;
1835 dest
->VertexAttrib2sNV
= loopback_VertexAttrib2sNV
;
1836 dest
->VertexAttrib2fNV
= loopback_VertexAttrib2fNV
;
1837 dest
->VertexAttrib2dNV
= loopback_VertexAttrib2dNV
;
1838 dest
->VertexAttrib3sNV
= loopback_VertexAttrib3sNV
;
1839 dest
->VertexAttrib3fNV
= loopback_VertexAttrib3fNV
;
1840 dest
->VertexAttrib3dNV
= loopback_VertexAttrib3dNV
;
1841 dest
->VertexAttrib4sNV
= loopback_VertexAttrib4sNV
;
1842 dest
->VertexAttrib4dNV
= loopback_VertexAttrib4dNV
;
1843 dest
->VertexAttrib4ubNV
= loopback_VertexAttrib4ubNV
;
1845 dest
->VertexAttrib1svNV
= loopback_VertexAttrib1svNV
;
1846 dest
->VertexAttrib1fvNV
= loopback_VertexAttrib1fvNV
;
1847 dest
->VertexAttrib1dvNV
= loopback_VertexAttrib1dvNV
;
1848 dest
->VertexAttrib2svNV
= loopback_VertexAttrib2svNV
;
1849 dest
->VertexAttrib2fvNV
= loopback_VertexAttrib2fvNV
;
1850 dest
->VertexAttrib2dvNV
= loopback_VertexAttrib2dvNV
;
1851 dest
->VertexAttrib3svNV
= loopback_VertexAttrib3svNV
;
1852 dest
->VertexAttrib3fvNV
= loopback_VertexAttrib3fvNV
;
1853 dest
->VertexAttrib3dvNV
= loopback_VertexAttrib3dvNV
;
1854 dest
->VertexAttrib4svNV
= loopback_VertexAttrib4svNV
;
1855 dest
->VertexAttrib4fvNV
= loopback_VertexAttrib4fvNV
;
1856 dest
->VertexAttrib4dvNV
= loopback_VertexAttrib4dvNV
;
1857 dest
->VertexAttrib4ubvNV
= loopback_VertexAttrib4ubvNV
;
1859 dest
->VertexAttribs1svNV
= loopback_VertexAttribs1svNV
;
1860 dest
->VertexAttribs1fvNV
= loopback_VertexAttribs1fvNV
;
1861 dest
->VertexAttribs1dvNV
= loopback_VertexAttribs1dvNV
;
1862 dest
->VertexAttribs2svNV
= loopback_VertexAttribs2svNV
;
1863 dest
->VertexAttribs2fvNV
= loopback_VertexAttribs2fvNV
;
1864 dest
->VertexAttribs2dvNV
= loopback_VertexAttribs2dvNV
;
1865 dest
->VertexAttribs3svNV
= loopback_VertexAttribs3svNV
;
1866 dest
->VertexAttribs3fvNV
= loopback_VertexAttribs3fvNV
;
1867 dest
->VertexAttribs3dvNV
= loopback_VertexAttribs3dvNV
;
1868 dest
->VertexAttribs4svNV
= loopback_VertexAttribs4svNV
;
1869 dest
->VertexAttribs4fvNV
= loopback_VertexAttribs4fvNV
;
1870 dest
->VertexAttribs4dvNV
= loopback_VertexAttribs4dvNV
;
1871 dest
->VertexAttribs4ubvNV
= loopback_VertexAttribs4ubvNV
;