4 * \author Keith Whitwell <keith@tungstengraphics.com>
8 * Mesa 3-D graphics library
11 * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
13 * Permission is hereby granted, free of charge, to any person obtaining a
14 * copy of this software and associated documentation files (the "Software"),
15 * to deal in the Software without restriction, including without limitation
16 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 * and/or sell copies of the Software, and to permit persons to whom the
18 * Software is furnished to do so, subject to the following conditions:
20 * The above copyright notice and this permission notice shall be included
21 * in all copies or substantial portions of the Software.
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
27 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 #include "glapitable.h"
37 #include "api_loopback.h"
39 /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
40 * calls to a smaller set of driver-provided formats. Currently just
41 * go back to dispatch to find these (eg. call glNormal3f directly),
44 * The driver must supply all of the remaining entry points, which are
45 * listed in dd.h. The easiest way for a driver to do this is to
46 * install the supplied software t&l module.
48 #define COLORUBV(v) glColor4ubv(v)
49 #define COLORF(r,g,b,a) glColor4f(r,g,b,a)
50 #define VERTEX2(x,y) glVertex2f(x,y)
51 #define VERTEX3(x,y,z) glVertex3f(x,y,z)
52 #define VERTEX4(x,y,z,w) glVertex4f(x,y,z,w)
53 #define NORMAL(x,y,z) glNormal3f(x,y,z)
54 #define TEXCOORD1(s) glTexCoord1f(s)
55 #define TEXCOORD2(s,t) glTexCoord2f(s,t)
56 #define TEXCOORD3(s,t,u) glTexCoord3f(s,t,u)
57 #define TEXCOORD4(s,t,u,v) glTexCoord4f(s,t,u,v)
58 #define INDEX(c) glIndexi(c)
59 #define MULTI_TEXCOORD1(z,s) glMultiTexCoord1fARB(z,s)
60 #define MULTI_TEXCOORD2(z,s,t) glMultiTexCoord2fARB(z,s,t)
61 #define MULTI_TEXCOORD3(z,s,t,u) glMultiTexCoord3fARB(z,s,t,u)
62 #define MULTI_TEXCOORD4(z,s,t,u,v) glMultiTexCoord4fARB(z,s,t,u,v)
63 #define EVALCOORD1(x) glEvalCoord1f(x)
64 #define EVALCOORD2(x,y) glEvalCoord2f(x,y)
65 #define MATERIALFV(a,b,c) glMaterialfv(a,b,c)
66 #define RECTF(a,b,c,d) glRectf(a,b,c,d)
68 #define ATTRIB(index, x, y, z, w) _glapi_Dispatch->VertexAttrib4fNV(index, x, y, z, w)
71 #define FOGCOORDF(x) _glapi_Dispatch->FogCoordfEXT(x)
72 #define SECONDARYCOLORUB(a,b,c) _glapi_Dispatch->SecondaryColor3ubEXT(a,b,c)
73 #define SECONDARYCOLORF(a,b,c) _glapi_Dispatch->SecondaryColor3fEXT(a,b,c)
77 loopback_Color3b( GLbyte red
, GLbyte green
, GLbyte blue
)
80 col
[0] = BYTE_TO_UBYTE(red
);
81 col
[1] = BYTE_TO_UBYTE(green
);
82 col
[2] = BYTE_TO_UBYTE(blue
);
88 loopback_Color3d( GLdouble red
, GLdouble green
, GLdouble blue
)
91 GLfloat r
= (GLfloat
) red
;
92 GLfloat g
= (GLfloat
) green
;
93 GLfloat b
= (GLfloat
) blue
;
94 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
95 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
96 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
102 loopback_Color3i( GLint red
, GLint green
, GLint blue
)
105 col
[0] = INT_TO_UBYTE(red
);
106 col
[1] = INT_TO_UBYTE(green
);
107 col
[2] = INT_TO_UBYTE(blue
);
113 loopback_Color3s( GLshort red
, GLshort green
, GLshort blue
)
116 col
[0] = SHORT_TO_UBYTE(red
);
117 col
[1] = SHORT_TO_UBYTE(green
);
118 col
[2] = SHORT_TO_UBYTE(blue
);
124 loopback_Color3ui( GLuint red
, GLuint green
, GLuint blue
)
127 col
[0] = UINT_TO_UBYTE(red
);
128 col
[1] = UINT_TO_UBYTE(green
);
129 col
[2] = UINT_TO_UBYTE(blue
);
135 loopback_Color3us( GLushort red
, GLushort green
, GLushort blue
)
138 col
[0] = USHORT_TO_UBYTE(red
);
139 col
[1] = USHORT_TO_UBYTE(green
);
140 col
[2] = USHORT_TO_UBYTE(blue
);
146 loopback_Color4b( GLbyte red
, GLbyte green
, GLbyte blue
, GLbyte alpha
)
149 col
[0] = BYTE_TO_UBYTE(red
);
150 col
[1] = BYTE_TO_UBYTE(green
);
151 col
[2] = BYTE_TO_UBYTE(blue
);
157 loopback_Color4d( GLdouble red
, GLdouble green
, GLdouble blue
, GLdouble alpha
)
160 GLfloat r
= (GLfloat
) red
;
161 GLfloat g
= (GLfloat
) green
;
162 GLfloat b
= (GLfloat
) blue
;
163 GLfloat a
= (GLfloat
) alpha
;
164 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
165 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
166 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
167 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
172 loopback_Color4i( GLint red
, GLint green
, GLint blue
, GLint alpha
)
175 col
[0] = INT_TO_UBYTE(red
);
176 col
[1] = INT_TO_UBYTE(green
);
177 col
[2] = INT_TO_UBYTE(blue
);
178 col
[3] = INT_TO_UBYTE(alpha
);
183 loopback_Color4s( GLshort red
, GLshort green
, GLshort blue
,
187 col
[0] = SHORT_TO_UBYTE(red
);
188 col
[1] = SHORT_TO_UBYTE(green
);
189 col
[2] = SHORT_TO_UBYTE(blue
);
190 col
[3] = SHORT_TO_UBYTE(alpha
);
195 loopback_Color4ui( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
198 col
[0] = UINT_TO_UBYTE(red
);
199 col
[1] = UINT_TO_UBYTE(green
);
200 col
[2] = UINT_TO_UBYTE(blue
);
201 col
[3] = UINT_TO_UBYTE(alpha
);
206 loopback_Color4us( GLushort red
, GLushort green
, GLushort blue
,
210 col
[0] = USHORT_TO_UBYTE(red
);
211 col
[1] = USHORT_TO_UBYTE(green
);
212 col
[2] = USHORT_TO_UBYTE(blue
);
213 col
[3] = USHORT_TO_UBYTE(alpha
);
218 loopback_Color3bv( const GLbyte
*v
)
221 col
[0] = BYTE_TO_UBYTE(v
[0]);
222 col
[1] = BYTE_TO_UBYTE(v
[1]);
223 col
[2] = BYTE_TO_UBYTE(v
[2]);
229 loopback_Color3dv( const GLdouble
*v
)
232 GLfloat r
= (GLfloat
) v
[0];
233 GLfloat g
= (GLfloat
) v
[1];
234 GLfloat b
= (GLfloat
) v
[2];
235 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
236 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
237 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
243 loopback_Color3iv( const GLint
*v
)
246 col
[0] = INT_TO_UBYTE(v
[0]);
247 col
[1] = INT_TO_UBYTE(v
[1]);
248 col
[2] = INT_TO_UBYTE(v
[2]);
254 loopback_Color3sv( const GLshort
*v
)
257 col
[0] = SHORT_TO_UBYTE(v
[0]);
258 col
[1] = SHORT_TO_UBYTE(v
[1]);
259 col
[2] = SHORT_TO_UBYTE(v
[2]);
265 loopback_Color3uiv( const GLuint
*v
)
268 col
[0] = UINT_TO_UBYTE(v
[0]);
269 col
[1] = UINT_TO_UBYTE(v
[1]);
270 col
[2] = UINT_TO_UBYTE(v
[2]);
276 loopback_Color3usv( const GLushort
*v
)
279 col
[0] = USHORT_TO_UBYTE(v
[0]);
280 col
[1] = USHORT_TO_UBYTE(v
[1]);
281 col
[2] = USHORT_TO_UBYTE(v
[2]);
288 loopback_Color4bv( const GLbyte
*v
)
291 col
[0] = BYTE_TO_UBYTE(v
[0]);
292 col
[1] = BYTE_TO_UBYTE(v
[1]);
293 col
[2] = BYTE_TO_UBYTE(v
[2]);
294 col
[3] = BYTE_TO_UBYTE(v
[3]);
299 loopback_Color4dv( const GLdouble
*v
)
302 GLfloat r
= (GLfloat
) v
[0];
303 GLfloat g
= (GLfloat
) v
[1];
304 GLfloat b
= (GLfloat
) v
[2];
305 GLfloat a
= (GLfloat
) v
[3];
306 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
307 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
308 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
309 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
314 loopback_Color4iv( const GLint
*v
)
317 col
[0] = INT_TO_UBYTE(v
[0]);
318 col
[1] = INT_TO_UBYTE(v
[1]);
319 col
[2] = INT_TO_UBYTE(v
[2]);
320 col
[3] = INT_TO_UBYTE(v
[3]);
325 loopback_Color4sv( const GLshort
*v
)
328 col
[0] = SHORT_TO_UBYTE(v
[0]);
329 col
[1] = SHORT_TO_UBYTE(v
[1]);
330 col
[2] = SHORT_TO_UBYTE(v
[2]);
331 col
[3] = SHORT_TO_UBYTE(v
[3]);
336 loopback_Color4uiv( const GLuint
*v
)
339 col
[0] = UINT_TO_UBYTE(v
[0]);
340 col
[1] = UINT_TO_UBYTE(v
[1]);
341 col
[2] = UINT_TO_UBYTE(v
[2]);
342 col
[3] = UINT_TO_UBYTE(v
[3]);
347 loopback_Color4usv( const GLushort
*v
)
350 col
[0] = USHORT_TO_UBYTE(v
[0]);
351 col
[1] = USHORT_TO_UBYTE(v
[1]);
352 col
[2] = USHORT_TO_UBYTE(v
[2]);
353 col
[3] = USHORT_TO_UBYTE(v
[3]);
358 loopback_Color3b_f( GLbyte red
, GLbyte green
, GLbyte blue
)
360 COLORF( BYTE_TO_FLOAT(red
),
361 BYTE_TO_FLOAT(green
),
367 loopback_Color3d_f( GLdouble red
, GLdouble green
, GLdouble blue
)
369 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, 1.0 );
373 loopback_Color3i_f( GLint red
, GLint green
, GLint blue
)
375 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
376 INT_TO_FLOAT(blue
), 1.0);
380 loopback_Color3s_f( GLshort red
, GLshort green
, GLshort blue
)
382 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
383 SHORT_TO_FLOAT(blue
), 1.0);
387 loopback_Color3ui_f( GLuint red
, GLuint green
, GLuint blue
)
389 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
390 UINT_TO_FLOAT(blue
), 1.0 );
394 loopback_Color3us_f( GLushort red
, GLushort green
, GLushort blue
)
396 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
397 USHORT_TO_FLOAT(blue
), 1.0 );
402 loopback_Color3bv_f( const GLbyte
*v
)
404 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
405 BYTE_TO_FLOAT(v
[2]), 1.0 );
409 loopback_Color3dv_f( const GLdouble
*v
)
411 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0 );
415 loopback_Color3iv_f( const GLint
*v
)
417 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
418 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
422 loopback_Color3sv_f( const GLshort
*v
)
424 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
425 SHORT_TO_FLOAT(v
[2]), 1.0 );
429 loopback_Color3uiv_f( const GLuint
*v
)
431 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
432 UINT_TO_FLOAT(v
[2]), 1.0 );
436 loopback_Color3usv_f( const GLushort
*v
)
438 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
439 USHORT_TO_FLOAT(v
[2]), 1.0 );
444 loopback_Color4b_f( GLbyte red
, GLbyte green
, GLbyte blue
,
447 COLORF( BYTE_TO_FLOAT(red
), BYTE_TO_FLOAT(green
),
448 BYTE_TO_FLOAT(blue
), BYTE_TO_FLOAT(alpha
) );
452 loopback_Color4d_f( GLdouble red
, GLdouble green
, GLdouble blue
,
455 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, (GLfloat
) alpha
);
459 loopback_Color4i_f( GLint red
, GLint green
, GLint blue
, GLint alpha
)
461 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
462 INT_TO_FLOAT(blue
), INT_TO_FLOAT(alpha
) );
466 loopback_Color4s_f( GLshort red
, GLshort green
, GLshort blue
,
469 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
470 SHORT_TO_FLOAT(blue
), SHORT_TO_FLOAT(alpha
) );
474 loopback_Color4ui_f( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
476 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
477 UINT_TO_FLOAT(blue
), UINT_TO_FLOAT(alpha
) );
481 loopback_Color4us_f( GLushort red
, GLushort green
, GLushort blue
, GLushort alpha
)
483 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
484 USHORT_TO_FLOAT(blue
), USHORT_TO_FLOAT(alpha
) );
489 loopback_Color4iv_f( const GLint
*v
)
491 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
492 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
497 loopback_Color4bv_f( const GLbyte
*v
)
499 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
500 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]) );
504 loopback_Color4dv_f( const GLdouble
*v
)
506 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3] );
511 loopback_Color4sv_f( const GLshort
*v
)
513 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
514 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]) );
519 loopback_Color4uiv_f( const GLuint
*v
)
521 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
522 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]) );
526 loopback_Color4usv_f( const GLushort
*v
)
528 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
529 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]) );
533 loopback_FogCoorddEXT( GLdouble d
)
535 FOGCOORDF( (GLfloat
) d
);
539 loopback_FogCoorddvEXT( const GLdouble
*v
)
541 FOGCOORDF( (GLfloat
) *v
);
546 loopback_Indexd( GLdouble c
)
552 loopback_Indexf( GLfloat c
)
554 INDEX( (GLuint
) (GLint
) c
);
558 loopback_Indexs( GLshort c
)
564 loopback_Indexub( GLubyte c
)
570 loopback_Indexdv( const GLdouble
*c
)
572 INDEX( (GLint
) (GLint
) *c
);
576 loopback_Indexfv( const GLfloat
*c
)
578 INDEX( (GLint
) (GLint
) *c
);
582 loopback_Indexiv( const GLint
*c
)
588 loopback_Indexsv( const GLshort
*c
)
594 loopback_Indexubv( const GLubyte
*c
)
600 loopback_Normal3b( GLbyte nx
, GLbyte ny
, GLbyte nz
)
602 NORMAL( BYTE_TO_FLOAT(nx
), BYTE_TO_FLOAT(ny
), BYTE_TO_FLOAT(nz
) );
606 loopback_Normal3d( GLdouble nx
, GLdouble ny
, GLdouble nz
)
608 NORMAL((GLfloat
) nx
, (GLfloat
) ny
, (GLfloat
) nz
);
612 loopback_Normal3i( GLint nx
, GLint ny
, GLint nz
)
614 NORMAL( INT_TO_FLOAT(nx
), INT_TO_FLOAT(ny
), INT_TO_FLOAT(nz
) );
618 loopback_Normal3s( GLshort nx
, GLshort ny
, GLshort nz
)
620 NORMAL( SHORT_TO_FLOAT(nx
), SHORT_TO_FLOAT(ny
), SHORT_TO_FLOAT(nz
) );
624 loopback_Normal3bv( const GLbyte
*v
)
626 NORMAL( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]), BYTE_TO_FLOAT(v
[2]) );
630 loopback_Normal3dv( const GLdouble
*v
)
632 NORMAL( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
636 loopback_Normal3iv( const GLint
*v
)
638 NORMAL( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]), INT_TO_FLOAT(v
[2]) );
642 loopback_Normal3sv( const GLshort
*v
)
644 NORMAL( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]), SHORT_TO_FLOAT(v
[2]) );
648 loopback_TexCoord1d( GLdouble s
)
650 TEXCOORD1((GLfloat
) s
);
654 loopback_TexCoord1i( GLint s
)
656 TEXCOORD1((GLfloat
) s
);
660 loopback_TexCoord1s( GLshort s
)
662 TEXCOORD1((GLfloat
) s
);
666 loopback_TexCoord2d( GLdouble s
, GLdouble t
)
668 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
672 loopback_TexCoord2s( GLshort s
, GLshort t
)
674 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
678 loopback_TexCoord2i( GLint s
, GLint t
)
680 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
684 loopback_TexCoord3d( GLdouble s
, GLdouble t
, GLdouble r
)
686 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
690 loopback_TexCoord3i( GLint s
, GLint t
, GLint r
)
692 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
696 loopback_TexCoord3s( GLshort s
, GLshort t
, GLshort r
)
698 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
702 loopback_TexCoord4d( GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
704 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
708 loopback_TexCoord4i( GLint s
, GLint t
, GLint r
, GLint q
)
710 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
714 loopback_TexCoord4s( GLshort s
, GLshort t
, GLshort r
, GLshort q
)
716 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
720 loopback_TexCoord1dv( const GLdouble
*v
)
722 TEXCOORD1((GLfloat
) v
[0]);
726 loopback_TexCoord1iv( const GLint
*v
)
728 TEXCOORD1((GLfloat
) v
[0]);
732 loopback_TexCoord1sv( const GLshort
*v
)
734 TEXCOORD1((GLfloat
) v
[0]);
738 loopback_TexCoord2dv( const GLdouble
*v
)
740 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
744 loopback_TexCoord2iv( const GLint
*v
)
746 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
750 loopback_TexCoord2sv( const GLshort
*v
)
752 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
756 loopback_TexCoord3dv( const GLdouble
*v
)
758 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
762 loopback_TexCoord3iv( const GLint
*v
)
764 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
768 loopback_TexCoord3sv( const GLshort
*v
)
770 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
774 loopback_TexCoord4dv( const GLdouble
*v
)
776 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
780 loopback_TexCoord4iv( const GLint
*v
)
782 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
786 loopback_TexCoord4sv( const GLshort
*v
)
788 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
792 loopback_Vertex2d( GLdouble x
, GLdouble y
)
794 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
798 loopback_Vertex2i( GLint x
, GLint y
)
800 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
804 loopback_Vertex2s( GLshort x
, GLshort y
)
806 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
810 loopback_Vertex3d( GLdouble x
, GLdouble y
, GLdouble z
)
812 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
816 loopback_Vertex3i( GLint x
, GLint y
, GLint z
)
818 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
822 loopback_Vertex3s( GLshort x
, GLshort y
, GLshort z
)
824 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
828 loopback_Vertex4d( GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
830 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
834 loopback_Vertex4i( GLint x
, GLint y
, GLint z
, GLint w
)
836 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
840 loopback_Vertex4s( GLshort x
, GLshort y
, GLshort z
, GLshort w
)
842 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
846 loopback_Vertex2dv( const GLdouble
*v
)
848 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
852 loopback_Vertex2iv( const GLint
*v
)
854 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
858 loopback_Vertex2sv( const GLshort
*v
)
860 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
864 loopback_Vertex3dv( const GLdouble
*v
)
866 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
870 loopback_Vertex3iv( const GLint
*v
)
872 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
876 loopback_Vertex3sv( const GLshort
*v
)
878 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
882 loopback_Vertex4dv( const GLdouble
*v
)
884 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
885 (GLfloat
) v
[2], (GLfloat
) v
[3] );
889 loopback_Vertex4iv( const GLint
*v
)
891 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
892 (GLfloat
) v
[2], (GLfloat
) v
[3] );
896 loopback_Vertex4sv( const GLshort
*v
)
898 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
899 (GLfloat
) v
[2], (GLfloat
) v
[3] );
903 loopback_MultiTexCoord1dARB(GLenum target
, GLdouble s
)
905 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
909 loopback_MultiTexCoord1dvARB(GLenum target
, const GLdouble
*v
)
911 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
915 loopback_MultiTexCoord1iARB(GLenum target
, GLint s
)
917 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
921 loopback_MultiTexCoord1ivARB(GLenum target
, const GLint
*v
)
923 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
927 loopback_MultiTexCoord1sARB(GLenum target
, GLshort s
)
929 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
933 loopback_MultiTexCoord1svARB(GLenum target
, const GLshort
*v
)
935 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
939 loopback_MultiTexCoord2dARB(GLenum target
, GLdouble s
, GLdouble t
)
941 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
945 loopback_MultiTexCoord2dvARB(GLenum target
, const GLdouble
*v
)
947 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
951 loopback_MultiTexCoord2iARB(GLenum target
, GLint s
, GLint t
)
953 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
957 loopback_MultiTexCoord2ivARB(GLenum target
, const GLint
*v
)
959 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
963 loopback_MultiTexCoord2sARB(GLenum target
, GLshort s
, GLshort t
)
965 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
969 loopback_MultiTexCoord2svARB(GLenum target
, const GLshort
*v
)
971 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
975 loopback_MultiTexCoord3dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
)
977 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
981 loopback_MultiTexCoord3dvARB(GLenum target
, const GLdouble
*v
)
983 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
987 loopback_MultiTexCoord3iARB(GLenum target
, GLint s
, GLint t
, GLint r
)
989 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
993 loopback_MultiTexCoord3ivARB(GLenum target
, const GLint
*v
)
995 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
999 loopback_MultiTexCoord3sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
)
1001 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
1005 loopback_MultiTexCoord3svARB(GLenum target
, const GLshort
*v
)
1007 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1011 loopback_MultiTexCoord4dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
1013 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1014 (GLfloat
) r
, (GLfloat
) q
);
1018 loopback_MultiTexCoord4dvARB(GLenum target
, const GLdouble
*v
)
1020 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1021 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1025 loopback_MultiTexCoord4iARB(GLenum target
, GLint s
, GLint t
, GLint r
, GLint q
)
1027 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1028 (GLfloat
) r
, (GLfloat
) q
);
1032 loopback_MultiTexCoord4ivARB(GLenum target
, const GLint
*v
)
1034 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1035 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1039 loopback_MultiTexCoord4sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
, GLshort q
)
1041 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1042 (GLfloat
) r
, (GLfloat
) q
);
1046 loopback_MultiTexCoord4svARB(GLenum target
, const GLshort
*v
)
1048 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1049 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1053 loopback_EvalCoord2dv( const GLdouble
*u
)
1055 EVALCOORD2( (GLfloat
) u
[0], (GLfloat
) u
[1] );
1059 loopback_EvalCoord2fv( const GLfloat
*u
)
1061 EVALCOORD2( u
[0], u
[1] );
1065 loopback_EvalCoord2d( GLdouble u
, GLdouble v
)
1067 EVALCOORD2( (GLfloat
) u
, (GLfloat
) v
);
1071 loopback_EvalCoord1dv( const GLdouble
*u
)
1073 EVALCOORD1( (GLfloat
) *u
);
1077 loopback_EvalCoord1fv( const GLfloat
*u
)
1079 EVALCOORD1( (GLfloat
) *u
);
1083 loopback_EvalCoord1d( GLdouble u
)
1085 EVALCOORD1( (GLfloat
) u
);
1089 loopback_Materialf( GLenum face
, GLenum pname
, GLfloat param
)
1093 MATERIALFV( face
, pname
, fparam
);
1097 loopback_Materiali(GLenum face
, GLenum pname
, GLint param
)
1099 GLfloat p
= (GLfloat
) param
;
1100 MATERIALFV(face
, pname
, &p
);
1104 loopback_Materialiv(GLenum face
, GLenum pname
, const GLint
*params
)
1112 case GL_AMBIENT_AND_DIFFUSE
:
1113 fparam
[0] = INT_TO_FLOAT( params
[0] );
1114 fparam
[1] = INT_TO_FLOAT( params
[1] );
1115 fparam
[2] = INT_TO_FLOAT( params
[2] );
1116 fparam
[3] = INT_TO_FLOAT( params
[3] );
1119 fparam
[0] = (GLfloat
) params
[0];
1121 case GL_COLOR_INDEXES
:
1122 fparam
[0] = (GLfloat
) params
[0];
1123 fparam
[1] = (GLfloat
) params
[1];
1124 fparam
[2] = (GLfloat
) params
[2];
1129 MATERIALFV(face
, pname
, fparam
);
1134 loopback_Rectd(GLdouble x1
, GLdouble y1
, GLdouble x2
, GLdouble y2
)
1136 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1140 loopback_Rectdv(const GLdouble
*v1
, const GLdouble
*v2
)
1142 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1146 loopback_Rectfv(const GLfloat
*v1
, const GLfloat
*v2
)
1148 RECTF(v1
[0], v1
[1], v2
[0], v2
[1]);
1152 loopback_Recti(GLint x1
, GLint y1
, GLint x2
, GLint y2
)
1154 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1158 loopback_Rectiv(const GLint
*v1
, const GLint
*v2
)
1160 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1164 loopback_Rects(GLshort x1
, GLshort y1
, GLshort x2
, GLshort y2
)
1166 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1170 loopback_Rectsv(const GLshort
*v1
, const GLshort
*v2
)
1172 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1176 loopback_SecondaryColor3bEXT( GLbyte red
, GLbyte green
, GLbyte blue
)
1178 SECONDARYCOLORUB( BYTE_TO_UBYTE(red
),
1179 BYTE_TO_UBYTE(green
),
1180 BYTE_TO_UBYTE(blue
) );
1184 loopback_SecondaryColor3dEXT( GLdouble red
, GLdouble green
, GLdouble blue
)
1187 GLfloat r
= (GLfloat
) red
;
1188 GLfloat g
= (GLfloat
) green
;
1189 GLfloat b
= (GLfloat
) blue
;
1190 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1191 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1192 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1193 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1197 loopback_SecondaryColor3iEXT( GLint red
, GLint green
, GLint blue
)
1199 SECONDARYCOLORUB( INT_TO_UBYTE(red
),
1200 INT_TO_UBYTE(green
),
1201 INT_TO_UBYTE(blue
));
1205 loopback_SecondaryColor3sEXT( GLshort red
, GLshort green
, GLshort blue
)
1207 SECONDARYCOLORUB(SHORT_TO_UBYTE(red
),
1208 SHORT_TO_UBYTE(green
),
1209 SHORT_TO_UBYTE(blue
));
1213 loopback_SecondaryColor3uiEXT( GLuint red
, GLuint green
, GLuint blue
)
1215 SECONDARYCOLORUB(UINT_TO_UBYTE(red
),
1216 UINT_TO_UBYTE(green
),
1217 UINT_TO_UBYTE(blue
));
1221 loopback_SecondaryColor3usEXT( GLushort red
, GLushort green
, GLushort blue
)
1223 SECONDARYCOLORUB(USHORT_TO_UBYTE(red
),
1224 USHORT_TO_UBYTE(green
),
1225 USHORT_TO_UBYTE(blue
));
1229 loopback_SecondaryColor3bvEXT( const GLbyte
*v
)
1231 const GLfloat a
= BYTE_TO_FLOAT(v
[0]);
1232 const GLfloat b
= BYTE_TO_FLOAT(v
[1]);
1233 const GLfloat c
= BYTE_TO_FLOAT(v
[2]);
1234 SECONDARYCOLORF(a
,b
,c
);
1238 loopback_SecondaryColor3dvEXT( const GLdouble
*v
)
1241 GLfloat r
= (GLfloat
) v
[0];
1242 GLfloat g
= (GLfloat
) v
[1];
1243 GLfloat b
= (GLfloat
) v
[2];
1244 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1245 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1246 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1247 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1251 loopback_SecondaryColor3ivEXT( const GLint
*v
)
1253 SECONDARYCOLORUB(INT_TO_UBYTE(v
[0]),
1255 INT_TO_UBYTE(v
[2]));
1259 loopback_SecondaryColor3svEXT( const GLshort
*v
)
1261 SECONDARYCOLORUB(SHORT_TO_UBYTE(v
[0]),
1262 SHORT_TO_UBYTE(v
[1]),
1263 SHORT_TO_UBYTE(v
[2]));
1267 loopback_SecondaryColor3uivEXT( const GLuint
*v
)
1269 SECONDARYCOLORUB(UINT_TO_UBYTE(v
[0]),
1270 UINT_TO_UBYTE(v
[1]),
1271 UINT_TO_UBYTE(v
[2]));
1275 loopback_SecondaryColor3usvEXT( const GLushort
*v
)
1277 SECONDARYCOLORUB(USHORT_TO_UBYTE(v
[0]),
1278 USHORT_TO_UBYTE(v
[1]),
1279 USHORT_TO_UBYTE(v
[2]));
1284 loopback_SecondaryColor3bEXT_f( GLbyte red
, GLbyte green
, GLbyte blue
)
1286 SECONDARYCOLORF( BYTE_TO_FLOAT(red
),
1287 BYTE_TO_FLOAT(green
),
1288 BYTE_TO_FLOAT(blue
) );
1292 loopback_SecondaryColor3dEXT_f( GLdouble red
, GLdouble green
, GLdouble blue
)
1294 SECONDARYCOLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
);
1298 loopback_SecondaryColor3iEXT_f( GLint red
, GLint green
, GLint blue
)
1300 SECONDARYCOLORF( INT_TO_FLOAT(red
),
1301 INT_TO_FLOAT(green
),
1302 INT_TO_FLOAT(blue
));
1306 loopback_SecondaryColor3sEXT_f( GLshort red
, GLshort green
, GLshort blue
)
1308 SECONDARYCOLORF(SHORT_TO_FLOAT(red
),
1309 SHORT_TO_FLOAT(green
),
1310 SHORT_TO_FLOAT(blue
));
1314 loopback_SecondaryColor3uiEXT_f( GLuint red
, GLuint green
, GLuint blue
)
1316 SECONDARYCOLORF(UINT_TO_FLOAT(red
),
1317 UINT_TO_FLOAT(green
),
1318 UINT_TO_FLOAT(blue
));
1322 loopback_SecondaryColor3usEXT_f( GLushort red
, GLushort green
, GLushort blue
)
1324 SECONDARYCOLORF(USHORT_TO_FLOAT(red
),
1325 USHORT_TO_FLOAT(green
),
1326 USHORT_TO_FLOAT(blue
));
1330 loopback_SecondaryColor3bvEXT_f( const GLbyte
*v
)
1332 SECONDARYCOLORF(BYTE_TO_FLOAT(v
[0]),
1333 BYTE_TO_FLOAT(v
[1]),
1334 BYTE_TO_FLOAT(v
[2]));
1338 loopback_SecondaryColor3dvEXT_f( const GLdouble
*v
)
1340 SECONDARYCOLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1343 loopback_SecondaryColor3ivEXT_f( const GLint
*v
)
1345 SECONDARYCOLORF(INT_TO_FLOAT(v
[0]),
1347 INT_TO_FLOAT(v
[2]));
1351 loopback_SecondaryColor3svEXT_f( const GLshort
*v
)
1353 SECONDARYCOLORF(SHORT_TO_FLOAT(v
[0]),
1354 SHORT_TO_FLOAT(v
[1]),
1355 SHORT_TO_FLOAT(v
[2]));
1359 loopback_SecondaryColor3uivEXT_f( const GLuint
*v
)
1361 SECONDARYCOLORF(UINT_TO_FLOAT(v
[0]),
1362 UINT_TO_FLOAT(v
[1]),
1363 UINT_TO_FLOAT(v
[2]));
1367 loopback_SecondaryColor3usvEXT_f( const GLushort
*v
)
1369 SECONDARYCOLORF(USHORT_TO_FLOAT(v
[0]),
1370 USHORT_TO_FLOAT(v
[1]),
1371 USHORT_TO_FLOAT(v
[2]));
1376 * GL_NV_vertex_program
1380 loopback_VertexAttrib1sNV(GLuint index
, GLshort x
)
1382 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1386 loopback_VertexAttrib1fNV(GLuint index
, GLfloat x
)
1388 ATTRIB(index
, x
, 0.0F
, 0.0F
, 1.0F
);
1392 loopback_VertexAttrib1dNV(GLuint index
, GLdouble x
)
1394 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1398 loopback_VertexAttrib2sNV(GLuint index
, GLshort x
, GLshort y
)
1400 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1404 loopback_VertexAttrib2fNV(GLuint index
, GLfloat x
, GLfloat y
)
1406 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1410 loopback_VertexAttrib2dNV(GLuint index
, GLdouble x
, GLdouble y
)
1412 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, 0.0F
, 1.0F
);
1416 loopback_VertexAttrib3sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
)
1418 ATTRIB(index
, (GLfloat
) x
, y
, z
, 1.0F
);
1422 loopback_VertexAttrib3fNV(GLuint index
, GLfloat x
, GLfloat y
, GLfloat z
)
1424 ATTRIB(index
, x
, y
, z
, 1.0F
);
1428 loopback_VertexAttrib3dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
)
1430 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, 1.0F
);
1434 loopback_VertexAttrib4sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
, GLshort w
)
1436 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1440 loopback_VertexAttrib4dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
1442 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1446 loopback_VertexAttrib4ubNV(GLuint index
, GLubyte x
, GLubyte y
, GLubyte z
, GLubyte w
)
1448 ATTRIB(index
, UBYTE_TO_FLOAT(x
), UBYTE_TO_FLOAT(y
),
1449 UBYTE_TO_FLOAT(z
), UBYTE_TO_FLOAT(w
));
1453 loopback_VertexAttrib1svNV(GLuint index
, const GLshort
*v
)
1455 ATTRIB(index
, (GLfloat
) v
[0], 0.0F
, 0.0F
, 1.0F
);
1459 loopback_VertexAttrib1fvNV(GLuint index
, const GLfloat
*v
)
1461 ATTRIB(index
, v
[0], 0.0F
, 0.0F
, 1.0F
);
1465 loopback_VertexAttrib1dvNV(GLuint index
, const GLdouble
*v
)
1467 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1471 loopback_VertexAttrib2svNV(GLuint index
, const GLshort
*v
)
1473 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1477 loopback_VertexAttrib2fvNV(GLuint index
, const GLfloat
*v
)
1479 ATTRIB(index
, v
[0], v
[1], 0.0F
, 1.0F
);
1483 loopback_VertexAttrib2dvNV(GLuint index
, const GLdouble
*v
)
1485 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1489 loopback_VertexAttrib3svNV(GLuint index
, const GLshort
*v
)
1491 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1495 loopback_VertexAttrib3fvNV(GLuint index
, const GLfloat
*v
)
1497 ATTRIB(index
, v
[0], v
[1], v
[2], 1.0F
);
1501 loopback_VertexAttrib3dvNV(GLuint index
, const GLdouble
*v
)
1503 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1507 loopback_VertexAttrib4svNV(GLuint index
, const GLshort
*v
)
1509 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2],
1514 loopback_VertexAttrib4fvNV(GLuint index
, const GLfloat
*v
)
1516 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1520 loopback_VertexAttrib4dvNV(GLuint index
, const GLdouble
*v
)
1522 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3]);
1526 loopback_VertexAttrib4ubvNV(GLuint index
, const GLubyte
*v
)
1528 ATTRIB(index
, UBYTE_TO_FLOAT(v
[0]), UBYTE_TO_FLOAT(v
[1]),
1529 UBYTE_TO_FLOAT(v
[2]), UBYTE_TO_FLOAT(v
[3]));
1534 loopback_VertexAttribs1svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1537 for (i
= n
- 1; i
>= 0; i
--)
1538 loopback_VertexAttrib1svNV(index
+ i
, v
+ i
);
1542 loopback_VertexAttribs1fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1545 for (i
= n
- 1; i
>= 0; i
--)
1546 loopback_VertexAttrib1fvNV(index
+ i
, v
+ i
);
1550 loopback_VertexAttribs1dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1553 for (i
= n
- 1; i
>= 0; i
--)
1554 loopback_VertexAttrib1dvNV(index
+ i
, v
+ i
);
1558 loopback_VertexAttribs2svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1561 for (i
= n
- 1; i
>= 0; i
--)
1562 loopback_VertexAttrib2svNV(index
+ i
, v
+ 2 * i
);
1566 loopback_VertexAttribs2fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1569 for (i
= n
- 1; i
>= 0; i
--)
1570 loopback_VertexAttrib2fvNV(index
+ i
, v
+ 2 * i
);
1574 loopback_VertexAttribs2dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1577 for (i
= n
- 1; i
>= 0; i
--)
1578 loopback_VertexAttrib2dvNV(index
+ i
, v
+ 2 * i
);
1582 loopback_VertexAttribs3svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1585 for (i
= n
- 1; i
>= 0; i
--)
1586 loopback_VertexAttrib3svNV(index
+ i
, v
+ 3 * i
);
1590 loopback_VertexAttribs3fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1593 for (i
= n
- 1; i
>= 0; i
--)
1594 loopback_VertexAttrib3fvNV(index
+ i
, v
+ 3 * i
);
1598 loopback_VertexAttribs3dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1601 for (i
= n
- 1; i
>= 0; i
--)
1602 loopback_VertexAttrib3dvNV(index
+ i
, v
+ 3 * i
);
1606 loopback_VertexAttribs4svNV(GLuint index
, GLsizei n
, const GLshort
*v
)
1609 for (i
= n
- 1; i
>= 0; i
--)
1610 loopback_VertexAttrib4svNV(index
+ i
, v
+ 4 * i
);
1614 loopback_VertexAttribs4fvNV(GLuint index
, GLsizei n
, const GLfloat
*v
)
1617 for (i
= n
- 1; i
>= 0; i
--)
1618 loopback_VertexAttrib4fvNV(index
+ i
, v
+ 4 * i
);
1622 loopback_VertexAttribs4dvNV(GLuint index
, GLsizei n
, const GLdouble
*v
)
1625 for (i
= n
- 1; i
>= 0; i
--)
1626 loopback_VertexAttrib4dvNV(index
+ i
, v
+ 4 * i
);
1630 loopback_VertexAttribs4ubvNV(GLuint index
, GLsizei n
, const GLubyte
*v
)
1633 for (i
= n
- 1; i
>= 0; i
--)
1634 loopback_VertexAttrib4ubvNV(index
+ i
, v
+ 4 * i
);
1639 * GL_ARB_vertex_program
1643 loopback_VertexAttrib4bvARB(GLuint index
, const GLbyte
* v
)
1645 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1649 loopback_VertexAttrib4ivARB(GLuint index
, const GLint
* v
)
1651 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1655 loopback_VertexAttrib4ubvARB(GLuint index
, const GLubyte
* v
)
1657 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1661 loopback_VertexAttrib4usvARB(GLuint index
, const GLushort
* v
)
1663 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1667 loopback_VertexAttrib4uivARB(GLuint index
, const GLuint
* v
)
1669 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1673 loopback_VertexAttrib4NbvARB(GLuint index
, const GLbyte
* v
)
1675 ATTRIB(index
, BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
1676 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]));
1680 loopback_VertexAttrib4NsvARB(GLuint index
, const GLshort
* v
)
1682 ATTRIB(index
, SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
1683 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]));
1687 loopback_VertexAttrib4NivARB(GLuint index
, const GLint
* v
)
1689 ATTRIB(index
, INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
1690 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]));
1694 loopback_VertexAttrib4NusvARB(GLuint index
, const GLushort
* v
)
1696 ATTRIB(index
, USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
1697 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]));
1701 loopback_VertexAttrib4NuivARB(GLuint index
, const GLuint
* v
)
1703 ATTRIB(index
, UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
1704 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]));
1710 _mesa_loopback_prefer_float( struct _glapi_table
*dest
,
1711 GLboolean prefer_float_colors
)
1713 if (!prefer_float_colors
) {
1714 dest
->Color3b
= loopback_Color3b
;
1715 dest
->Color3d
= loopback_Color3d
;
1716 dest
->Color3i
= loopback_Color3i
;
1717 dest
->Color3s
= loopback_Color3s
;
1718 dest
->Color3ui
= loopback_Color3ui
;
1719 dest
->Color3us
= loopback_Color3us
;
1720 dest
->Color4b
= loopback_Color4b
;
1721 dest
->Color4d
= loopback_Color4d
;
1722 dest
->Color4i
= loopback_Color4i
;
1723 dest
->Color4s
= loopback_Color4s
;
1724 dest
->Color4ui
= loopback_Color4ui
;
1725 dest
->Color4us
= loopback_Color4us
;
1726 dest
->Color3bv
= loopback_Color3bv
;
1727 dest
->Color3dv
= loopback_Color3dv
;
1728 dest
->Color3iv
= loopback_Color3iv
;
1729 dest
->Color3sv
= loopback_Color3sv
;
1730 dest
->Color3uiv
= loopback_Color3uiv
;
1731 dest
->Color3usv
= loopback_Color3usv
;
1732 dest
->Color4bv
= loopback_Color4bv
;
1733 dest
->Color4dv
= loopback_Color4dv
;
1734 dest
->Color4iv
= loopback_Color4iv
;
1735 dest
->Color4sv
= loopback_Color4sv
;
1736 dest
->Color4uiv
= loopback_Color4uiv
;
1737 dest
->Color4usv
= loopback_Color4usv
;
1738 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT
;
1739 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT
;
1740 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT
;
1741 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT
;
1742 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT
;
1743 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT
;
1744 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT
;
1745 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT
;
1746 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT
;
1747 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT
;
1748 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT
;
1749 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT
;
1752 dest
->Color3b
= loopback_Color3b_f
;
1753 dest
->Color3d
= loopback_Color3d_f
;
1754 dest
->Color3i
= loopback_Color3i_f
;
1755 dest
->Color3s
= loopback_Color3s_f
;
1756 dest
->Color3ui
= loopback_Color3ui_f
;
1757 dest
->Color3us
= loopback_Color3us_f
;
1758 dest
->Color4b
= loopback_Color4b_f
;
1759 dest
->Color4d
= loopback_Color4d_f
;
1760 dest
->Color4i
= loopback_Color4i_f
;
1761 dest
->Color4s
= loopback_Color4s_f
;
1762 dest
->Color4ui
= loopback_Color4ui_f
;
1763 dest
->Color4us
= loopback_Color4us_f
;
1764 dest
->Color3bv
= loopback_Color3bv_f
;
1765 dest
->Color3dv
= loopback_Color3dv_f
;
1766 dest
->Color3iv
= loopback_Color3iv_f
;
1767 dest
->Color3sv
= loopback_Color3sv_f
;
1768 dest
->Color3uiv
= loopback_Color3uiv_f
;
1769 dest
->Color3usv
= loopback_Color3usv_f
;
1770 dest
->Color4bv
= loopback_Color4bv_f
;
1771 dest
->Color4dv
= loopback_Color4dv_f
;
1772 dest
->Color4iv
= loopback_Color4iv_f
;
1773 dest
->Color4sv
= loopback_Color4sv_f
;
1774 dest
->Color4uiv
= loopback_Color4uiv_f
;
1775 dest
->Color4usv
= loopback_Color4usv_f
;
1776 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT_f
;
1777 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT_f
;
1778 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT_f
;
1779 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT_f
;
1780 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT_f
;
1781 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT_f
;
1782 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT_f
;
1783 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT_f
;
1784 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT_f
;
1785 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT_f
;
1786 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT_f
;
1787 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT_f
;
1791 /* Passing prefer_float_colors as true will mean that all colors
1792 * *except* Color{34}ub{v} are passed as floats. Setting it false will
1793 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1795 * This code never registers handlers for any of the entry points
1796 * listed in vtxfmt.h.
1799 _mesa_loopback_init_api_table( struct _glapi_table
*dest
,
1800 GLboolean prefer_float_colors
)
1802 _mesa_loopback_prefer_float( dest
, prefer_float_colors
);
1804 dest
->Indexd
= loopback_Indexd
;
1805 dest
->Indexf
= loopback_Indexf
;
1806 dest
->Indexs
= loopback_Indexs
;
1807 dest
->Indexub
= loopback_Indexub
;
1808 dest
->Indexdv
= loopback_Indexdv
;
1809 dest
->Indexfv
= loopback_Indexfv
;
1810 dest
->Indexiv
= loopback_Indexiv
;
1811 dest
->Indexsv
= loopback_Indexsv
;
1812 dest
->Indexubv
= loopback_Indexubv
;
1813 dest
->Normal3b
= loopback_Normal3b
;
1814 dest
->Normal3d
= loopback_Normal3d
;
1815 dest
->Normal3i
= loopback_Normal3i
;
1816 dest
->Normal3s
= loopback_Normal3s
;
1817 dest
->Normal3bv
= loopback_Normal3bv
;
1818 dest
->Normal3dv
= loopback_Normal3dv
;
1819 dest
->Normal3iv
= loopback_Normal3iv
;
1820 dest
->Normal3sv
= loopback_Normal3sv
;
1821 dest
->TexCoord1d
= loopback_TexCoord1d
;
1822 dest
->TexCoord1i
= loopback_TexCoord1i
;
1823 dest
->TexCoord1s
= loopback_TexCoord1s
;
1824 dest
->TexCoord2d
= loopback_TexCoord2d
;
1825 dest
->TexCoord2s
= loopback_TexCoord2s
;
1826 dest
->TexCoord2i
= loopback_TexCoord2i
;
1827 dest
->TexCoord3d
= loopback_TexCoord3d
;
1828 dest
->TexCoord3i
= loopback_TexCoord3i
;
1829 dest
->TexCoord3s
= loopback_TexCoord3s
;
1830 dest
->TexCoord4d
= loopback_TexCoord4d
;
1831 dest
->TexCoord4i
= loopback_TexCoord4i
;
1832 dest
->TexCoord4s
= loopback_TexCoord4s
;
1833 dest
->TexCoord1dv
= loopback_TexCoord1dv
;
1834 dest
->TexCoord1iv
= loopback_TexCoord1iv
;
1835 dest
->TexCoord1sv
= loopback_TexCoord1sv
;
1836 dest
->TexCoord2dv
= loopback_TexCoord2dv
;
1837 dest
->TexCoord2iv
= loopback_TexCoord2iv
;
1838 dest
->TexCoord2sv
= loopback_TexCoord2sv
;
1839 dest
->TexCoord3dv
= loopback_TexCoord3dv
;
1840 dest
->TexCoord3iv
= loopback_TexCoord3iv
;
1841 dest
->TexCoord3sv
= loopback_TexCoord3sv
;
1842 dest
->TexCoord4dv
= loopback_TexCoord4dv
;
1843 dest
->TexCoord4iv
= loopback_TexCoord4iv
;
1844 dest
->TexCoord4sv
= loopback_TexCoord4sv
;
1845 dest
->Vertex2d
= loopback_Vertex2d
;
1846 dest
->Vertex2i
= loopback_Vertex2i
;
1847 dest
->Vertex2s
= loopback_Vertex2s
;
1848 dest
->Vertex3d
= loopback_Vertex3d
;
1849 dest
->Vertex3i
= loopback_Vertex3i
;
1850 dest
->Vertex3s
= loopback_Vertex3s
;
1851 dest
->Vertex4d
= loopback_Vertex4d
;
1852 dest
->Vertex4i
= loopback_Vertex4i
;
1853 dest
->Vertex4s
= loopback_Vertex4s
;
1854 dest
->Vertex2dv
= loopback_Vertex2dv
;
1855 dest
->Vertex2iv
= loopback_Vertex2iv
;
1856 dest
->Vertex2sv
= loopback_Vertex2sv
;
1857 dest
->Vertex3dv
= loopback_Vertex3dv
;
1858 dest
->Vertex3iv
= loopback_Vertex3iv
;
1859 dest
->Vertex3sv
= loopback_Vertex3sv
;
1860 dest
->Vertex4dv
= loopback_Vertex4dv
;
1861 dest
->Vertex4iv
= loopback_Vertex4iv
;
1862 dest
->Vertex4sv
= loopback_Vertex4sv
;
1863 dest
->MultiTexCoord1dARB
= loopback_MultiTexCoord1dARB
;
1864 dest
->MultiTexCoord1dvARB
= loopback_MultiTexCoord1dvARB
;
1865 dest
->MultiTexCoord1iARB
= loopback_MultiTexCoord1iARB
;
1866 dest
->MultiTexCoord1ivARB
= loopback_MultiTexCoord1ivARB
;
1867 dest
->MultiTexCoord1sARB
= loopback_MultiTexCoord1sARB
;
1868 dest
->MultiTexCoord1svARB
= loopback_MultiTexCoord1svARB
;
1869 dest
->MultiTexCoord2dARB
= loopback_MultiTexCoord2dARB
;
1870 dest
->MultiTexCoord2dvARB
= loopback_MultiTexCoord2dvARB
;
1871 dest
->MultiTexCoord2iARB
= loopback_MultiTexCoord2iARB
;
1872 dest
->MultiTexCoord2ivARB
= loopback_MultiTexCoord2ivARB
;
1873 dest
->MultiTexCoord2sARB
= loopback_MultiTexCoord2sARB
;
1874 dest
->MultiTexCoord2svARB
= loopback_MultiTexCoord2svARB
;
1875 dest
->MultiTexCoord3dARB
= loopback_MultiTexCoord3dARB
;
1876 dest
->MultiTexCoord3dvARB
= loopback_MultiTexCoord3dvARB
;
1877 dest
->MultiTexCoord3iARB
= loopback_MultiTexCoord3iARB
;
1878 dest
->MultiTexCoord3ivARB
= loopback_MultiTexCoord3ivARB
;
1879 dest
->MultiTexCoord3sARB
= loopback_MultiTexCoord3sARB
;
1880 dest
->MultiTexCoord3svARB
= loopback_MultiTexCoord3svARB
;
1881 dest
->MultiTexCoord4dARB
= loopback_MultiTexCoord4dARB
;
1882 dest
->MultiTexCoord4dvARB
= loopback_MultiTexCoord4dvARB
;
1883 dest
->MultiTexCoord4iARB
= loopback_MultiTexCoord4iARB
;
1884 dest
->MultiTexCoord4ivARB
= loopback_MultiTexCoord4ivARB
;
1885 dest
->MultiTexCoord4sARB
= loopback_MultiTexCoord4sARB
;
1886 dest
->MultiTexCoord4svARB
= loopback_MultiTexCoord4svARB
;
1887 dest
->EvalCoord2dv
= loopback_EvalCoord2dv
;
1888 dest
->EvalCoord2fv
= loopback_EvalCoord2fv
;
1889 dest
->EvalCoord2d
= loopback_EvalCoord2d
;
1890 dest
->EvalCoord1dv
= loopback_EvalCoord1dv
;
1891 dest
->EvalCoord1fv
= loopback_EvalCoord1fv
;
1892 dest
->EvalCoord1d
= loopback_EvalCoord1d
;
1893 dest
->Materialf
= loopback_Materialf
;
1894 dest
->Materiali
= loopback_Materiali
;
1895 dest
->Materialiv
= loopback_Materialiv
;
1896 dest
->Rectd
= loopback_Rectd
;
1897 dest
->Rectdv
= loopback_Rectdv
;
1898 dest
->Rectfv
= loopback_Rectfv
;
1899 dest
->Recti
= loopback_Recti
;
1900 dest
->Rectiv
= loopback_Rectiv
;
1901 dest
->Rects
= loopback_Rects
;
1902 dest
->Rectsv
= loopback_Rectsv
;
1903 dest
->FogCoorddEXT
= loopback_FogCoorddEXT
;
1904 dest
->FogCoorddvEXT
= loopback_FogCoorddvEXT
;
1906 dest
->VertexAttrib1sNV
= loopback_VertexAttrib1sNV
;
1907 dest
->VertexAttrib1fNV
= loopback_VertexAttrib1fNV
;
1908 dest
->VertexAttrib1dNV
= loopback_VertexAttrib1dNV
;
1909 dest
->VertexAttrib2sNV
= loopback_VertexAttrib2sNV
;
1910 dest
->VertexAttrib2fNV
= loopback_VertexAttrib2fNV
;
1911 dest
->VertexAttrib2dNV
= loopback_VertexAttrib2dNV
;
1912 dest
->VertexAttrib3sNV
= loopback_VertexAttrib3sNV
;
1913 dest
->VertexAttrib3fNV
= loopback_VertexAttrib3fNV
;
1914 dest
->VertexAttrib3dNV
= loopback_VertexAttrib3dNV
;
1915 dest
->VertexAttrib4sNV
= loopback_VertexAttrib4sNV
;
1916 dest
->VertexAttrib4dNV
= loopback_VertexAttrib4dNV
;
1917 dest
->VertexAttrib4ubNV
= loopback_VertexAttrib4ubNV
;
1919 dest
->VertexAttrib1svNV
= loopback_VertexAttrib1svNV
;
1920 dest
->VertexAttrib1fvNV
= loopback_VertexAttrib1fvNV
;
1921 dest
->VertexAttrib1dvNV
= loopback_VertexAttrib1dvNV
;
1922 dest
->VertexAttrib2svNV
= loopback_VertexAttrib2svNV
;
1923 dest
->VertexAttrib2fvNV
= loopback_VertexAttrib2fvNV
;
1924 dest
->VertexAttrib2dvNV
= loopback_VertexAttrib2dvNV
;
1925 dest
->VertexAttrib3svNV
= loopback_VertexAttrib3svNV
;
1926 dest
->VertexAttrib3fvNV
= loopback_VertexAttrib3fvNV
;
1927 dest
->VertexAttrib3dvNV
= loopback_VertexAttrib3dvNV
;
1928 dest
->VertexAttrib4svNV
= loopback_VertexAttrib4svNV
;
1929 dest
->VertexAttrib4fvNV
= loopback_VertexAttrib4fvNV
;
1930 dest
->VertexAttrib4dvNV
= loopback_VertexAttrib4dvNV
;
1931 dest
->VertexAttrib4ubvNV
= loopback_VertexAttrib4ubvNV
;
1933 dest
->VertexAttribs1svNV
= loopback_VertexAttribs1svNV
;
1934 dest
->VertexAttribs1fvNV
= loopback_VertexAttribs1fvNV
;
1935 dest
->VertexAttribs1dvNV
= loopback_VertexAttribs1dvNV
;
1936 dest
->VertexAttribs2svNV
= loopback_VertexAttribs2svNV
;
1937 dest
->VertexAttribs2fvNV
= loopback_VertexAttribs2fvNV
;
1938 dest
->VertexAttribs2dvNV
= loopback_VertexAttribs2dvNV
;
1939 dest
->VertexAttribs3svNV
= loopback_VertexAttribs3svNV
;
1940 dest
->VertexAttribs3fvNV
= loopback_VertexAttribs3fvNV
;
1941 dest
->VertexAttribs3dvNV
= loopback_VertexAttribs3dvNV
;
1942 dest
->VertexAttribs4svNV
= loopback_VertexAttribs4svNV
;
1943 dest
->VertexAttribs4fvNV
= loopback_VertexAttribs4fvNV
;
1944 dest
->VertexAttribs4dvNV
= loopback_VertexAttribs4dvNV
;
1945 dest
->VertexAttribs4ubvNV
= loopback_VertexAttribs4ubvNV
;
1947 dest
->VertexAttrib4bvARB
= loopback_VertexAttrib4bvARB
;
1948 dest
->VertexAttrib4ivARB
= loopback_VertexAttrib4ivARB
;
1949 dest
->VertexAttrib4ubvARB
= loopback_VertexAttrib4ubvARB
;
1950 dest
->VertexAttrib4usvARB
= loopback_VertexAttrib4usvARB
;
1951 dest
->VertexAttrib4uivARB
= loopback_VertexAttrib4uivARB
;
1952 dest
->VertexAttrib4NbvARB
= loopback_VertexAttrib4NbvARB
;
1953 dest
->VertexAttrib4NsvARB
= loopback_VertexAttrib4NsvARB
;
1954 dest
->VertexAttrib4NivARB
= loopback_VertexAttrib4NivARB
;
1955 dest
->VertexAttrib4NusvARB
= loopback_VertexAttrib4NusvARB
;
1956 dest
->VertexAttrib4NuivARB
= loopback_VertexAttrib4NuivARB
;