2 * Mesa 3-D graphics library
5 * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 * and/or sell copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following conditions:
14 * The above copyright notice and this permission notice shall be included
15 * in all copies or substantial portions of the Software.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 * Keith Whitwell <keith@tungstengraphics.com>
31 #include "glapitable.h"
34 #include "api_loopback.h"
36 /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
37 * calls to a smaller set of driver-provided formats. Currently just
38 * go back to dispatch to find these (eg. call glNormal3f directly),
41 * The driver must supply all of the remaining entry points, which are
42 * listed in dd.h. The easiest way for a driver to do this is to
43 * install the supplied software t&l module.
45 #define COLORUBV(v) glColor4ubv(v)
46 #define COLORF(r,g,b,a) glColor4f(r,g,b,a)
47 #define VERTEX2(x,y) glVertex2f(x,y)
48 #define VERTEX3(x,y,z) glVertex3f(x,y,z)
49 #define VERTEX4(x,y,z,w) glVertex4f(x,y,z,w)
50 #define NORMAL(x,y,z) glNormal3f(x,y,z)
51 #define TEXCOORD1(s) glTexCoord1f(s)
52 #define TEXCOORD2(s,t) glTexCoord2f(s,t)
53 #define TEXCOORD3(s,t,u) glTexCoord3f(s,t,u)
54 #define TEXCOORD4(s,t,u,v) glTexCoord4f(s,t,u,v)
55 #define INDEX(c) glIndexi(c)
56 #define MULTI_TEXCOORD1(z,s) glMultiTexCoord1fARB(z,s)
57 #define MULTI_TEXCOORD2(z,s,t) glMultiTexCoord2fARB(z,s,t)
58 #define MULTI_TEXCOORD3(z,s,t,u) glMultiTexCoord3fARB(z,s,t,u)
59 #define MULTI_TEXCOORD4(z,s,t,u,v) glMultiTexCoord4fARB(z,s,t,u,v)
60 #define EVALCOORD1(x) glEvalCoord1f(x)
61 #define EVALCOORD2(x,y) glEvalCoord2f(x,y)
62 #define MATERIALFV(a,b,c) glMaterialfv(a,b,c)
63 #define RECTF(a,b,c,d) glRectf(a,b,c,d)
65 #define ATTRIB(index, x, y, z, w) _glapi_Dispatch->VertexAttrib4fNV(index, x, y, z, w)
68 #define FOGCOORDF(x) _glapi_Dispatch->FogCoordfEXT(x)
69 #define SECONDARYCOLORUB(a,b,c) _glapi_Dispatch->SecondaryColor3ubEXT(a,b,c)
70 #define SECONDARYCOLORF(a,b,c) _glapi_Dispatch->SecondaryColor3fEXT(a,b,c)
74 loopback_Color3b( GLbyte red
, GLbyte green
, GLbyte blue
)
77 col
[0] = BYTE_TO_UBYTE(red
);
78 col
[1] = BYTE_TO_UBYTE(green
);
79 col
[2] = BYTE_TO_UBYTE(blue
);
85 loopback_Color3d( GLdouble red
, GLdouble green
, GLdouble blue
)
88 GLfloat r
= (GLfloat
) red
;
89 GLfloat g
= (GLfloat
) green
;
90 GLfloat b
= (GLfloat
) blue
;
91 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
92 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
93 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
99 loopback_Color3i( GLint red
, GLint green
, GLint blue
)
102 col
[0] = INT_TO_UBYTE(red
);
103 col
[1] = INT_TO_UBYTE(green
);
104 col
[2] = INT_TO_UBYTE(blue
);
110 loopback_Color3s( GLshort red
, GLshort green
, GLshort blue
)
113 col
[0] = SHORT_TO_UBYTE(red
);
114 col
[1] = SHORT_TO_UBYTE(green
);
115 col
[2] = SHORT_TO_UBYTE(blue
);
121 loopback_Color3ui( GLuint red
, GLuint green
, GLuint blue
)
124 col
[0] = UINT_TO_UBYTE(red
);
125 col
[1] = UINT_TO_UBYTE(green
);
126 col
[2] = UINT_TO_UBYTE(blue
);
132 loopback_Color3us( GLushort red
, GLushort green
, GLushort blue
)
135 col
[0] = USHORT_TO_UBYTE(red
);
136 col
[1] = USHORT_TO_UBYTE(green
);
137 col
[2] = USHORT_TO_UBYTE(blue
);
143 loopback_Color4b( GLbyte red
, GLbyte green
, GLbyte blue
, GLbyte alpha
)
146 col
[0] = BYTE_TO_UBYTE(red
);
147 col
[1] = BYTE_TO_UBYTE(green
);
148 col
[2] = BYTE_TO_UBYTE(blue
);
154 loopback_Color4d( GLdouble red
, GLdouble green
, GLdouble blue
, GLdouble alpha
)
157 GLfloat r
= (GLfloat
) red
;
158 GLfloat g
= (GLfloat
) green
;
159 GLfloat b
= (GLfloat
) blue
;
160 GLfloat a
= (GLfloat
) alpha
;
161 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
162 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
163 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
164 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
169 loopback_Color4i( GLint red
, GLint green
, GLint blue
, GLint alpha
)
172 col
[0] = INT_TO_UBYTE(red
);
173 col
[1] = INT_TO_UBYTE(green
);
174 col
[2] = INT_TO_UBYTE(blue
);
175 col
[3] = INT_TO_UBYTE(alpha
);
180 loopback_Color4s( GLshort red
, GLshort green
, GLshort blue
,
184 col
[0] = SHORT_TO_UBYTE(red
);
185 col
[1] = SHORT_TO_UBYTE(green
);
186 col
[2] = SHORT_TO_UBYTE(blue
);
187 col
[3] = SHORT_TO_UBYTE(alpha
);
192 loopback_Color4ui( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
195 col
[0] = UINT_TO_UBYTE(red
);
196 col
[1] = UINT_TO_UBYTE(green
);
197 col
[2] = UINT_TO_UBYTE(blue
);
198 col
[3] = UINT_TO_UBYTE(alpha
);
203 loopback_Color4us( GLushort red
, GLushort green
, GLushort blue
,
207 col
[0] = USHORT_TO_UBYTE(red
);
208 col
[1] = USHORT_TO_UBYTE(green
);
209 col
[2] = USHORT_TO_UBYTE(blue
);
210 col
[3] = USHORT_TO_UBYTE(alpha
);
215 loopback_Color3bv( const GLbyte
*v
)
218 col
[0] = BYTE_TO_UBYTE(v
[0]);
219 col
[1] = BYTE_TO_UBYTE(v
[1]);
220 col
[2] = BYTE_TO_UBYTE(v
[2]);
226 loopback_Color3dv( const GLdouble
*v
)
229 GLfloat r
= (GLfloat
) v
[0];
230 GLfloat g
= (GLfloat
) v
[1];
231 GLfloat b
= (GLfloat
) v
[2];
232 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
233 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
234 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
240 loopback_Color3iv( const GLint
*v
)
243 col
[0] = INT_TO_UBYTE(v
[0]);
244 col
[1] = INT_TO_UBYTE(v
[1]);
245 col
[2] = INT_TO_UBYTE(v
[2]);
251 loopback_Color3sv( const GLshort
*v
)
254 col
[0] = SHORT_TO_UBYTE(v
[0]);
255 col
[1] = SHORT_TO_UBYTE(v
[1]);
256 col
[2] = SHORT_TO_UBYTE(v
[2]);
262 loopback_Color3uiv( const GLuint
*v
)
265 col
[0] = UINT_TO_UBYTE(v
[0]);
266 col
[1] = UINT_TO_UBYTE(v
[1]);
267 col
[2] = UINT_TO_UBYTE(v
[2]);
273 loopback_Color3usv( const GLushort
*v
)
276 col
[0] = USHORT_TO_UBYTE(v
[0]);
277 col
[1] = USHORT_TO_UBYTE(v
[1]);
278 col
[2] = USHORT_TO_UBYTE(v
[2]);
285 loopback_Color4bv( const GLbyte
*v
)
288 col
[0] = BYTE_TO_UBYTE(v
[0]);
289 col
[1] = BYTE_TO_UBYTE(v
[1]);
290 col
[2] = BYTE_TO_UBYTE(v
[2]);
291 col
[3] = BYTE_TO_UBYTE(v
[3]);
296 loopback_Color4dv( const GLdouble
*v
)
299 GLfloat r
= (GLfloat
) v
[0];
300 GLfloat g
= (GLfloat
) v
[1];
301 GLfloat b
= (GLfloat
) v
[2];
302 GLfloat a
= (GLfloat
) v
[3];
303 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
304 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
305 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
306 UNCLAMPED_FLOAT_TO_UBYTE(col
[3], a
);
311 loopback_Color4iv( const GLint
*v
)
314 col
[0] = INT_TO_UBYTE(v
[0]);
315 col
[1] = INT_TO_UBYTE(v
[1]);
316 col
[2] = INT_TO_UBYTE(v
[2]);
317 col
[3] = INT_TO_UBYTE(v
[3]);
322 loopback_Color4sv( const GLshort
*v
)
325 col
[0] = SHORT_TO_UBYTE(v
[0]);
326 col
[1] = SHORT_TO_UBYTE(v
[1]);
327 col
[2] = SHORT_TO_UBYTE(v
[2]);
328 col
[3] = SHORT_TO_UBYTE(v
[3]);
333 loopback_Color4uiv( const GLuint
*v
)
336 col
[0] = UINT_TO_UBYTE(v
[0]);
337 col
[1] = UINT_TO_UBYTE(v
[1]);
338 col
[2] = UINT_TO_UBYTE(v
[2]);
339 col
[3] = UINT_TO_UBYTE(v
[3]);
344 loopback_Color4usv( const GLushort
*v
)
347 col
[0] = USHORT_TO_UBYTE(v
[0]);
348 col
[1] = USHORT_TO_UBYTE(v
[1]);
349 col
[2] = USHORT_TO_UBYTE(v
[2]);
350 col
[3] = USHORT_TO_UBYTE(v
[3]);
355 loopback_Color3b_f( GLbyte red
, GLbyte green
, GLbyte blue
)
357 COLORF( BYTE_TO_FLOAT(red
),
358 BYTE_TO_FLOAT(green
),
364 loopback_Color3d_f( GLdouble red
, GLdouble green
, GLdouble blue
)
366 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, 1.0 );
370 loopback_Color3i_f( GLint red
, GLint green
, GLint blue
)
372 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
373 INT_TO_FLOAT(blue
), 1.0);
377 loopback_Color3s_f( GLshort red
, GLshort green
, GLshort blue
)
379 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
380 SHORT_TO_FLOAT(blue
), 1.0);
384 loopback_Color3ui_f( GLuint red
, GLuint green
, GLuint blue
)
386 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
387 UINT_TO_FLOAT(blue
), 1.0 );
391 loopback_Color3us_f( GLushort red
, GLushort green
, GLushort blue
)
393 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
394 USHORT_TO_FLOAT(blue
), 1.0 );
399 loopback_Color3bv_f( const GLbyte
*v
)
401 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
402 BYTE_TO_FLOAT(v
[2]), 1.0 );
406 loopback_Color3dv_f( const GLdouble
*v
)
408 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0 );
412 loopback_Color3iv_f( const GLint
*v
)
414 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
415 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
419 loopback_Color3sv_f( const GLshort
*v
)
421 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
422 SHORT_TO_FLOAT(v
[2]), 1.0 );
426 loopback_Color3uiv_f( const GLuint
*v
)
428 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
429 UINT_TO_FLOAT(v
[2]), 1.0 );
433 loopback_Color3usv_f( const GLushort
*v
)
435 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
436 USHORT_TO_FLOAT(v
[2]), 1.0 );
441 loopback_Color4b_f( GLbyte red
, GLbyte green
, GLbyte blue
,
444 COLORF( BYTE_TO_FLOAT(red
), BYTE_TO_FLOAT(green
),
445 BYTE_TO_FLOAT(blue
), BYTE_TO_FLOAT(alpha
) );
449 loopback_Color4d_f( GLdouble red
, GLdouble green
, GLdouble blue
,
452 COLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
, (GLfloat
) alpha
);
456 loopback_Color4i_f( GLint red
, GLint green
, GLint blue
, GLint alpha
)
458 COLORF( INT_TO_FLOAT(red
), INT_TO_FLOAT(green
),
459 INT_TO_FLOAT(blue
), INT_TO_FLOAT(alpha
) );
463 loopback_Color4s_f( GLshort red
, GLshort green
, GLshort blue
,
466 COLORF( SHORT_TO_FLOAT(red
), SHORT_TO_FLOAT(green
),
467 SHORT_TO_FLOAT(blue
), SHORT_TO_FLOAT(alpha
) );
471 loopback_Color4ui_f( GLuint red
, GLuint green
, GLuint blue
, GLuint alpha
)
473 COLORF( UINT_TO_FLOAT(red
), UINT_TO_FLOAT(green
),
474 UINT_TO_FLOAT(blue
), UINT_TO_FLOAT(alpha
) );
478 loopback_Color4us_f( GLushort red
, GLushort green
, GLushort blue
, GLushort alpha
)
480 COLORF( USHORT_TO_FLOAT(red
), USHORT_TO_FLOAT(green
),
481 USHORT_TO_FLOAT(blue
), USHORT_TO_FLOAT(alpha
) );
486 loopback_Color4iv_f( const GLint
*v
)
488 COLORF( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
489 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]) );
494 loopback_Color4bv_f( const GLbyte
*v
)
496 COLORF( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
497 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]) );
501 loopback_Color4dv_f( const GLdouble
*v
)
503 COLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], (GLfloat
) v
[3] );
508 loopback_Color4sv_f( const GLshort
*v
)
510 COLORF( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
511 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]) );
516 loopback_Color4uiv_f( const GLuint
*v
)
518 COLORF( UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
519 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]) );
523 loopback_Color4usv_f( const GLushort
*v
)
525 COLORF( USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
526 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]) );
530 loopback_FogCoorddEXT( GLdouble d
)
532 FOGCOORDF( (GLfloat
) d
);
536 loopback_FogCoorddvEXT( const GLdouble
*v
)
538 FOGCOORDF( (GLfloat
) *v
);
543 loopback_Indexd( GLdouble c
)
549 loopback_Indexf( GLfloat c
)
551 INDEX( (GLuint
) (GLint
) c
);
555 loopback_Indexs( GLshort c
)
561 loopback_Indexub( GLubyte c
)
567 loopback_Indexdv( const GLdouble
*c
)
569 INDEX( (GLint
) (GLint
) *c
);
573 loopback_Indexfv( const GLfloat
*c
)
575 INDEX( (GLint
) (GLint
) *c
);
579 loopback_Indexiv( const GLint
*c
)
585 loopback_Indexsv( const GLshort
*c
)
591 loopback_Indexubv( const GLubyte
*c
)
597 loopback_Normal3b( GLbyte nx
, GLbyte ny
, GLbyte nz
)
599 NORMAL( BYTE_TO_FLOAT(nx
), BYTE_TO_FLOAT(ny
), BYTE_TO_FLOAT(nz
) );
603 loopback_Normal3d( GLdouble nx
, GLdouble ny
, GLdouble nz
)
605 NORMAL((GLfloat
) nx
, (GLfloat
) ny
, (GLfloat
) nz
);
609 loopback_Normal3i( GLint nx
, GLint ny
, GLint nz
)
611 NORMAL( INT_TO_FLOAT(nx
), INT_TO_FLOAT(ny
), INT_TO_FLOAT(nz
) );
615 loopback_Normal3s( GLshort nx
, GLshort ny
, GLshort nz
)
617 NORMAL( SHORT_TO_FLOAT(nx
), SHORT_TO_FLOAT(ny
), SHORT_TO_FLOAT(nz
) );
621 loopback_Normal3bv( const GLbyte
*v
)
623 NORMAL( BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]), BYTE_TO_FLOAT(v
[2]) );
627 loopback_Normal3dv( const GLdouble
*v
)
629 NORMAL( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
633 loopback_Normal3iv( const GLint
*v
)
635 NORMAL( INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]), INT_TO_FLOAT(v
[2]) );
639 loopback_Normal3sv( const GLshort
*v
)
641 NORMAL( SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]), SHORT_TO_FLOAT(v
[2]) );
645 loopback_TexCoord1d( GLdouble s
)
647 TEXCOORD1((GLfloat
) s
);
651 loopback_TexCoord1i( GLint s
)
653 TEXCOORD1((GLfloat
) s
);
657 loopback_TexCoord1s( GLshort s
)
659 TEXCOORD1((GLfloat
) s
);
663 loopback_TexCoord2d( GLdouble s
, GLdouble t
)
665 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
669 loopback_TexCoord2s( GLshort s
, GLshort t
)
671 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
675 loopback_TexCoord2i( GLint s
, GLint t
)
677 TEXCOORD2((GLfloat
) s
,(GLfloat
) t
);
681 loopback_TexCoord3d( GLdouble s
, GLdouble t
, GLdouble r
)
683 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
687 loopback_TexCoord3i( GLint s
, GLint t
, GLint r
)
689 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
693 loopback_TexCoord3s( GLshort s
, GLshort t
, GLshort r
)
695 TEXCOORD3((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
);
699 loopback_TexCoord4d( GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
701 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
705 loopback_TexCoord4i( GLint s
, GLint t
, GLint r
, GLint q
)
707 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
711 loopback_TexCoord4s( GLshort s
, GLshort t
, GLshort r
, GLshort q
)
713 TEXCOORD4((GLfloat
) s
,(GLfloat
) t
,(GLfloat
) r
,(GLfloat
) q
);
717 loopback_TexCoord1dv( const GLdouble
*v
)
719 TEXCOORD1((GLfloat
) v
[0]);
723 loopback_TexCoord1iv( const GLint
*v
)
725 TEXCOORD1((GLfloat
) v
[0]);
729 loopback_TexCoord1sv( const GLshort
*v
)
731 TEXCOORD1((GLfloat
) v
[0]);
735 loopback_TexCoord2dv( const GLdouble
*v
)
737 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
741 loopback_TexCoord2iv( const GLint
*v
)
743 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
747 loopback_TexCoord2sv( const GLshort
*v
)
749 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
753 loopback_TexCoord3dv( const GLdouble
*v
)
755 TEXCOORD2((GLfloat
) v
[0],(GLfloat
) v
[1]);
759 loopback_TexCoord3iv( const GLint
*v
)
761 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
765 loopback_TexCoord3sv( const GLshort
*v
)
767 TEXCOORD3((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2]);
771 loopback_TexCoord4dv( const GLdouble
*v
)
773 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
777 loopback_TexCoord4iv( const GLint
*v
)
779 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
783 loopback_TexCoord4sv( const GLshort
*v
)
785 TEXCOORD4((GLfloat
) v
[0],(GLfloat
) v
[1],(GLfloat
) v
[2],(GLfloat
) v
[3]);
789 loopback_Vertex2d( GLdouble x
, GLdouble y
)
791 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
795 loopback_Vertex2i( GLint x
, GLint y
)
797 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
801 loopback_Vertex2s( GLshort x
, GLshort y
)
803 VERTEX2( (GLfloat
) x
, (GLfloat
) y
);
807 loopback_Vertex3d( GLdouble x
, GLdouble y
, GLdouble z
)
809 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
813 loopback_Vertex3i( GLint x
, GLint y
, GLint z
)
815 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
819 loopback_Vertex3s( GLshort x
, GLshort y
, GLshort z
)
821 VERTEX3( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
);
825 loopback_Vertex4d( GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
827 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
831 loopback_Vertex4i( GLint x
, GLint y
, GLint z
, GLint w
)
833 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
837 loopback_Vertex4s( GLshort x
, GLshort y
, GLshort z
, GLshort w
)
839 VERTEX4( (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
843 loopback_Vertex2dv( const GLdouble
*v
)
845 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
849 loopback_Vertex2iv( const GLint
*v
)
851 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
855 loopback_Vertex2sv( const GLshort
*v
)
857 VERTEX2( (GLfloat
) v
[0], (GLfloat
) v
[1] );
861 loopback_Vertex3dv( const GLdouble
*v
)
863 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
867 loopback_Vertex3iv( const GLint
*v
)
869 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
873 loopback_Vertex3sv( const GLshort
*v
)
875 VERTEX3( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
879 loopback_Vertex4dv( const GLdouble
*v
)
881 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
882 (GLfloat
) v
[2], (GLfloat
) v
[3] );
886 loopback_Vertex4iv( const GLint
*v
)
888 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
889 (GLfloat
) v
[2], (GLfloat
) v
[3] );
893 loopback_Vertex4sv( const GLshort
*v
)
895 VERTEX4( (GLfloat
) v
[0], (GLfloat
) v
[1],
896 (GLfloat
) v
[2], (GLfloat
) v
[3] );
900 loopback_MultiTexCoord1dARB(GLenum target
, GLdouble s
)
902 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
906 loopback_MultiTexCoord1dvARB(GLenum target
, const GLdouble
*v
)
908 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
912 loopback_MultiTexCoord1iARB(GLenum target
, GLint s
)
914 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
918 loopback_MultiTexCoord1ivARB(GLenum target
, const GLint
*v
)
920 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
924 loopback_MultiTexCoord1sARB(GLenum target
, GLshort s
)
926 MULTI_TEXCOORD1( target
, (GLfloat
) s
);
930 loopback_MultiTexCoord1svARB(GLenum target
, const GLshort
*v
)
932 MULTI_TEXCOORD1( target
, (GLfloat
) v
[0] );
936 loopback_MultiTexCoord2dARB(GLenum target
, GLdouble s
, GLdouble t
)
938 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
942 loopback_MultiTexCoord2dvARB(GLenum target
, const GLdouble
*v
)
944 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
948 loopback_MultiTexCoord2iARB(GLenum target
, GLint s
, GLint t
)
950 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
954 loopback_MultiTexCoord2ivARB(GLenum target
, const GLint
*v
)
956 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
960 loopback_MultiTexCoord2sARB(GLenum target
, GLshort s
, GLshort t
)
962 MULTI_TEXCOORD2( target
, (GLfloat
) s
, (GLfloat
) t
);
966 loopback_MultiTexCoord2svARB(GLenum target
, const GLshort
*v
)
968 MULTI_TEXCOORD2( target
, (GLfloat
) v
[0], (GLfloat
) v
[1] );
972 loopback_MultiTexCoord3dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
)
974 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
978 loopback_MultiTexCoord3dvARB(GLenum target
, const GLdouble
*v
)
980 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
984 loopback_MultiTexCoord3iARB(GLenum target
, GLint s
, GLint t
, GLint r
)
986 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
990 loopback_MultiTexCoord3ivARB(GLenum target
, const GLint
*v
)
992 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
996 loopback_MultiTexCoord3sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
)
998 MULTI_TEXCOORD3( target
, (GLfloat
) s
, (GLfloat
) t
, (GLfloat
) r
);
1002 loopback_MultiTexCoord3svARB(GLenum target
, const GLshort
*v
)
1004 MULTI_TEXCOORD3( target
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1008 loopback_MultiTexCoord4dARB(GLenum target
, GLdouble s
, GLdouble t
, GLdouble r
, GLdouble q
)
1010 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1011 (GLfloat
) r
, (GLfloat
) q
);
1015 loopback_MultiTexCoord4dvARB(GLenum target
, const GLdouble
*v
)
1017 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1018 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1022 loopback_MultiTexCoord4iARB(GLenum target
, GLint s
, GLint t
, GLint r
, GLint q
)
1024 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1025 (GLfloat
) r
, (GLfloat
) q
);
1029 loopback_MultiTexCoord4ivARB(GLenum target
, const GLint
*v
)
1031 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1032 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1036 loopback_MultiTexCoord4sARB(GLenum target
, GLshort s
, GLshort t
, GLshort r
, GLshort q
)
1038 MULTI_TEXCOORD4( target
, (GLfloat
) s
, (GLfloat
) t
,
1039 (GLfloat
) r
, (GLfloat
) q
);
1043 loopback_MultiTexCoord4svARB(GLenum target
, const GLshort
*v
)
1045 MULTI_TEXCOORD4( target
, (GLfloat
) v
[0], (GLfloat
) v
[1],
1046 (GLfloat
) v
[2], (GLfloat
) v
[3] );
1050 loopback_EvalCoord2dv( const GLdouble
*u
)
1052 EVALCOORD2( (GLfloat
) u
[0], (GLfloat
) u
[1] );
1056 loopback_EvalCoord2fv( const GLfloat
*u
)
1058 EVALCOORD2( u
[0], u
[1] );
1062 loopback_EvalCoord2d( GLdouble u
, GLdouble v
)
1064 EVALCOORD2( (GLfloat
) u
, (GLfloat
) v
);
1068 loopback_EvalCoord1dv( const GLdouble
*u
)
1070 EVALCOORD1( (GLfloat
) *u
);
1074 loopback_EvalCoord1fv( const GLfloat
*u
)
1076 EVALCOORD1( (GLfloat
) *u
);
1080 loopback_EvalCoord1d( GLdouble u
)
1082 EVALCOORD1( (GLfloat
) u
);
1086 loopback_Materialf( GLenum face
, GLenum pname
, GLfloat param
)
1090 MATERIALFV( face
, pname
, fparam
);
1094 loopback_Materiali(GLenum face
, GLenum pname
, GLint param
)
1096 GLfloat p
= (GLfloat
) param
;
1097 MATERIALFV(face
, pname
, &p
);
1101 loopback_Materialiv(GLenum face
, GLenum pname
, const GLint
*params
)
1109 case GL_AMBIENT_AND_DIFFUSE
:
1110 fparam
[0] = INT_TO_FLOAT( params
[0] );
1111 fparam
[1] = INT_TO_FLOAT( params
[1] );
1112 fparam
[2] = INT_TO_FLOAT( params
[2] );
1113 fparam
[3] = INT_TO_FLOAT( params
[3] );
1116 fparam
[0] = (GLfloat
) params
[0];
1118 case GL_COLOR_INDEXES
:
1119 fparam
[0] = (GLfloat
) params
[0];
1120 fparam
[1] = (GLfloat
) params
[1];
1121 fparam
[2] = (GLfloat
) params
[2];
1126 MATERIALFV(face
, pname
, fparam
);
1131 loopback_Rectd(GLdouble x1
, GLdouble y1
, GLdouble x2
, GLdouble y2
)
1133 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1137 loopback_Rectdv(const GLdouble
*v1
, const GLdouble
*v2
)
1139 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1143 loopback_Rectfv(const GLfloat
*v1
, const GLfloat
*v2
)
1145 RECTF(v1
[0], v1
[1], v2
[0], v2
[1]);
1149 loopback_Recti(GLint x1
, GLint y1
, GLint x2
, GLint y2
)
1151 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1155 loopback_Rectiv(const GLint
*v1
, const GLint
*v2
)
1157 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1161 loopback_Rects(GLshort x1
, GLshort y1
, GLshort x2
, GLshort y2
)
1163 RECTF((GLfloat
) x1
, (GLfloat
) y1
, (GLfloat
) x2
, (GLfloat
) y2
);
1167 loopback_Rectsv(const GLshort
*v1
, const GLshort
*v2
)
1169 RECTF((GLfloat
) v1
[0], (GLfloat
) v1
[1], (GLfloat
) v2
[0], (GLfloat
) v2
[1]);
1173 loopback_SecondaryColor3bEXT( GLbyte red
, GLbyte green
, GLbyte blue
)
1175 SECONDARYCOLORUB( BYTE_TO_UBYTE(red
),
1176 BYTE_TO_UBYTE(green
),
1177 BYTE_TO_UBYTE(blue
) );
1181 loopback_SecondaryColor3dEXT( GLdouble red
, GLdouble green
, GLdouble blue
)
1184 GLfloat r
= (GLfloat
) red
;
1185 GLfloat g
= (GLfloat
) green
;
1186 GLfloat b
= (GLfloat
) blue
;
1187 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1188 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1189 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1190 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1194 loopback_SecondaryColor3iEXT( GLint red
, GLint green
, GLint blue
)
1196 SECONDARYCOLORUB( INT_TO_UBYTE(red
),
1197 INT_TO_UBYTE(green
),
1198 INT_TO_UBYTE(blue
));
1202 loopback_SecondaryColor3sEXT( GLshort red
, GLshort green
, GLshort blue
)
1204 SECONDARYCOLORUB(SHORT_TO_UBYTE(red
),
1205 SHORT_TO_UBYTE(green
),
1206 SHORT_TO_UBYTE(blue
));
1210 loopback_SecondaryColor3uiEXT( GLuint red
, GLuint green
, GLuint blue
)
1212 SECONDARYCOLORUB(UINT_TO_UBYTE(red
),
1213 UINT_TO_UBYTE(green
),
1214 UINT_TO_UBYTE(blue
));
1218 loopback_SecondaryColor3usEXT( GLushort red
, GLushort green
, GLushort blue
)
1220 SECONDARYCOLORUB(USHORT_TO_UBYTE(red
),
1221 USHORT_TO_UBYTE(green
),
1222 USHORT_TO_UBYTE(blue
));
1226 loopback_SecondaryColor3bvEXT( const GLbyte
*v
)
1228 const GLfloat a
= BYTE_TO_FLOAT(v
[0]);
1229 const GLfloat b
= BYTE_TO_FLOAT(v
[1]);
1230 const GLfloat c
= BYTE_TO_FLOAT(v
[2]);
1231 SECONDARYCOLORF(a
,b
,c
);
1235 loopback_SecondaryColor3dvEXT( const GLdouble
*v
)
1238 GLfloat r
= (GLfloat
) v
[0];
1239 GLfloat g
= (GLfloat
) v
[1];
1240 GLfloat b
= (GLfloat
) v
[2];
1241 UNCLAMPED_FLOAT_TO_UBYTE(col
[0], r
);
1242 UNCLAMPED_FLOAT_TO_UBYTE(col
[1], g
);
1243 UNCLAMPED_FLOAT_TO_UBYTE(col
[2], b
);
1244 SECONDARYCOLORUB( col
[0], col
[1], col
[2] );
1248 loopback_SecondaryColor3ivEXT( const GLint
*v
)
1250 SECONDARYCOLORUB(INT_TO_UBYTE(v
[0]),
1252 INT_TO_UBYTE(v
[2]));
1256 loopback_SecondaryColor3svEXT( const GLshort
*v
)
1258 SECONDARYCOLORUB(SHORT_TO_UBYTE(v
[0]),
1259 SHORT_TO_UBYTE(v
[1]),
1260 SHORT_TO_UBYTE(v
[2]));
1264 loopback_SecondaryColor3uivEXT( const GLuint
*v
)
1266 SECONDARYCOLORUB(UINT_TO_UBYTE(v
[0]),
1267 UINT_TO_UBYTE(v
[1]),
1268 UINT_TO_UBYTE(v
[2]));
1272 loopback_SecondaryColor3usvEXT( const GLushort
*v
)
1274 SECONDARYCOLORUB(USHORT_TO_UBYTE(v
[0]),
1275 USHORT_TO_UBYTE(v
[1]),
1276 USHORT_TO_UBYTE(v
[2]));
1281 loopback_SecondaryColor3bEXT_f( GLbyte red
, GLbyte green
, GLbyte blue
)
1283 SECONDARYCOLORF( BYTE_TO_FLOAT(red
),
1284 BYTE_TO_FLOAT(green
),
1285 BYTE_TO_FLOAT(blue
) );
1289 loopback_SecondaryColor3dEXT_f( GLdouble red
, GLdouble green
, GLdouble blue
)
1291 SECONDARYCOLORF( (GLfloat
) red
, (GLfloat
) green
, (GLfloat
) blue
);
1295 loopback_SecondaryColor3iEXT_f( GLint red
, GLint green
, GLint blue
)
1297 SECONDARYCOLORF( INT_TO_FLOAT(red
),
1298 INT_TO_FLOAT(green
),
1299 INT_TO_FLOAT(blue
));
1303 loopback_SecondaryColor3sEXT_f( GLshort red
, GLshort green
, GLshort blue
)
1305 SECONDARYCOLORF(SHORT_TO_FLOAT(red
),
1306 SHORT_TO_FLOAT(green
),
1307 SHORT_TO_FLOAT(blue
));
1311 loopback_SecondaryColor3uiEXT_f( GLuint red
, GLuint green
, GLuint blue
)
1313 SECONDARYCOLORF(UINT_TO_FLOAT(red
),
1314 UINT_TO_FLOAT(green
),
1315 UINT_TO_FLOAT(blue
));
1319 loopback_SecondaryColor3usEXT_f( GLushort red
, GLushort green
, GLushort blue
)
1321 SECONDARYCOLORF(USHORT_TO_FLOAT(red
),
1322 USHORT_TO_FLOAT(green
),
1323 USHORT_TO_FLOAT(blue
));
1327 loopback_SecondaryColor3bvEXT_f( const GLbyte
*v
)
1329 SECONDARYCOLORF(BYTE_TO_FLOAT(v
[0]),
1330 BYTE_TO_FLOAT(v
[1]),
1331 BYTE_TO_FLOAT(v
[2]));
1335 loopback_SecondaryColor3dvEXT_f( const GLdouble
*v
)
1337 SECONDARYCOLORF( (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2] );
1340 loopback_SecondaryColor3ivEXT_f( const GLint
*v
)
1342 SECONDARYCOLORF(INT_TO_FLOAT(v
[0]),
1344 INT_TO_FLOAT(v
[2]));
1348 loopback_SecondaryColor3svEXT_f( const GLshort
*v
)
1350 SECONDARYCOLORF(SHORT_TO_FLOAT(v
[0]),
1351 SHORT_TO_FLOAT(v
[1]),
1352 SHORT_TO_FLOAT(v
[2]));
1356 loopback_SecondaryColor3uivEXT_f( const GLuint
*v
)
1358 SECONDARYCOLORF(UINT_TO_FLOAT(v
[0]),
1359 UINT_TO_FLOAT(v
[1]),
1360 UINT_TO_FLOAT(v
[2]));
1364 loopback_SecondaryColor3usvEXT_f( const GLushort
*v
)
1366 SECONDARYCOLORF(USHORT_TO_FLOAT(v
[0]),
1367 USHORT_TO_FLOAT(v
[1]),
1368 USHORT_TO_FLOAT(v
[2]));
1373 * GL_NV_vertex_program
1377 loopback_VertexAttrib1sNV(GLuint index
, GLshort x
)
1379 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1383 loopback_VertexAttrib1fNV(GLuint index
, GLfloat x
)
1385 ATTRIB(index
, x
, 0.0F
, 0.0F
, 1.0F
);
1389 loopback_VertexAttrib1dNV(GLuint index
, GLdouble x
)
1391 ATTRIB(index
, (GLfloat
) x
, 0.0F
, 0.0F
, 1.0F
);
1395 loopback_VertexAttrib2sNV(GLuint index
, GLshort x
, GLshort y
)
1397 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1401 loopback_VertexAttrib2fNV(GLuint index
, GLfloat x
, GLfloat y
)
1403 ATTRIB(index
, (GLfloat
) x
, y
, 0.0F
, 1.0F
);
1407 loopback_VertexAttrib2dNV(GLuint index
, GLdouble x
, GLdouble y
)
1409 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, 0.0F
, 1.0F
);
1413 loopback_VertexAttrib3sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
)
1415 ATTRIB(index
, (GLfloat
) x
, y
, z
, 1.0F
);
1419 loopback_VertexAttrib3fNV(GLuint index
, GLfloat x
, GLfloat y
, GLfloat z
)
1421 ATTRIB(index
, x
, y
, z
, 1.0F
);
1425 loopback_VertexAttrib3dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
)
1427 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, 1.0F
);
1431 loopback_VertexAttrib4sNV(GLuint index
, GLshort x
, GLshort y
, GLshort z
, GLshort w
)
1433 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1437 loopback_VertexAttrib4dNV(GLuint index
, GLdouble x
, GLdouble y
, GLdouble z
, GLdouble w
)
1439 ATTRIB(index
, (GLfloat
) x
, (GLfloat
) y
, (GLfloat
) z
, (GLfloat
) w
);
1443 loopback_VertexAttrib4ubNV(GLuint index
, GLubyte x
, GLubyte y
, GLubyte z
, GLubyte w
)
1445 ATTRIB(index
, UBYTE_TO_FLOAT(x
), UBYTE_TO_FLOAT(y
),
1446 UBYTE_TO_FLOAT(z
), UBYTE_TO_FLOAT(w
));
1450 loopback_VertexAttrib1svNV(GLuint index
, const GLshort
*v
)
1452 ATTRIB(index
, (GLfloat
) v
[0], 0.0F
, 0.0F
, 1.0F
);
1456 loopback_VertexAttrib1fvNV(GLuint index
, const GLfloat
*v
)
1458 ATTRIB(index
, v
[0], 0.0F
, 0.0F
, 1.0F
);
1462 loopback_VertexAttrib1dvNV(GLuint index
, const GLdouble
*v
)
1464 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1468 loopback_VertexAttrib2svNV(GLuint index
, const GLshort
*v
)
1470 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1474 loopback_VertexAttrib2fvNV(GLuint index
, const GLfloat
*v
)
1476 ATTRIB(index
, v
[0], v
[1], 0.0F
, 1.0F
);
1480 loopback_VertexAttrib2dvNV(GLuint index
, const GLdouble
*v
)
1482 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], 0.0F
, 1.0F
);
1486 loopback_VertexAttrib3svNV(GLuint index
, const GLshort
*v
)
1488 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1492 loopback_VertexAttrib3fvNV(GLuint index
, const GLfloat
*v
)
1494 ATTRIB(index
, v
[0], v
[1], v
[2], 1.0F
);
1498 loopback_VertexAttrib3dvNV(GLuint index
, const GLdouble
*v
)
1500 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2], 1.0F
);
1504 loopback_VertexAttrib4svNV(GLuint index
, const GLshort
*v
)
1506 ATTRIB(index
, (GLfloat
) v
[0], (GLfloat
) v
[1], (GLfloat
) v
[2],
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 * GL_ARB_vertex_program
1640 loopback_VertexAttrib4bvARB(GLuint index
, const GLbyte
* v
)
1642 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1646 loopback_VertexAttrib4ivARB(GLuint index
, const GLint
* v
)
1648 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1652 loopback_VertexAttrib4ubvARB(GLuint index
, const GLubyte
* v
)
1654 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1658 loopback_VertexAttrib4usvARB(GLuint index
, const GLushort
* v
)
1660 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1664 loopback_VertexAttrib4uivARB(GLuint index
, const GLuint
* v
)
1666 ATTRIB(index
, v
[0], v
[1], v
[2], v
[3]);
1670 loopback_VertexAttrib4NbvARB(GLuint index
, const GLbyte
* v
)
1672 ATTRIB(index
, BYTE_TO_FLOAT(v
[0]), BYTE_TO_FLOAT(v
[1]),
1673 BYTE_TO_FLOAT(v
[2]), BYTE_TO_FLOAT(v
[3]));
1677 loopback_VertexAttrib4NsvARB(GLuint index
, const GLshort
* v
)
1679 ATTRIB(index
, SHORT_TO_FLOAT(v
[0]), SHORT_TO_FLOAT(v
[1]),
1680 SHORT_TO_FLOAT(v
[2]), SHORT_TO_FLOAT(v
[3]));
1684 loopback_VertexAttrib4NivARB(GLuint index
, const GLint
* v
)
1686 ATTRIB(index
, INT_TO_FLOAT(v
[0]), INT_TO_FLOAT(v
[1]),
1687 INT_TO_FLOAT(v
[2]), INT_TO_FLOAT(v
[3]));
1691 loopback_VertexAttrib4NusvARB(GLuint index
, const GLushort
* v
)
1693 ATTRIB(index
, USHORT_TO_FLOAT(v
[0]), USHORT_TO_FLOAT(v
[1]),
1694 USHORT_TO_FLOAT(v
[2]), USHORT_TO_FLOAT(v
[3]));
1698 loopback_VertexAttrib4NuivARB(GLuint index
, const GLuint
* v
)
1700 ATTRIB(index
, UINT_TO_FLOAT(v
[0]), UINT_TO_FLOAT(v
[1]),
1701 UINT_TO_FLOAT(v
[2]), UINT_TO_FLOAT(v
[3]));
1707 _mesa_loopback_prefer_float( struct _glapi_table
*dest
,
1708 GLboolean prefer_float_colors
)
1710 if (!prefer_float_colors
) {
1711 dest
->Color3b
= loopback_Color3b
;
1712 dest
->Color3d
= loopback_Color3d
;
1713 dest
->Color3i
= loopback_Color3i
;
1714 dest
->Color3s
= loopback_Color3s
;
1715 dest
->Color3ui
= loopback_Color3ui
;
1716 dest
->Color3us
= loopback_Color3us
;
1717 dest
->Color4b
= loopback_Color4b
;
1718 dest
->Color4d
= loopback_Color4d
;
1719 dest
->Color4i
= loopback_Color4i
;
1720 dest
->Color4s
= loopback_Color4s
;
1721 dest
->Color4ui
= loopback_Color4ui
;
1722 dest
->Color4us
= loopback_Color4us
;
1723 dest
->Color3bv
= loopback_Color3bv
;
1724 dest
->Color3dv
= loopback_Color3dv
;
1725 dest
->Color3iv
= loopback_Color3iv
;
1726 dest
->Color3sv
= loopback_Color3sv
;
1727 dest
->Color3uiv
= loopback_Color3uiv
;
1728 dest
->Color3usv
= loopback_Color3usv
;
1729 dest
->Color4bv
= loopback_Color4bv
;
1730 dest
->Color4dv
= loopback_Color4dv
;
1731 dest
->Color4iv
= loopback_Color4iv
;
1732 dest
->Color4sv
= loopback_Color4sv
;
1733 dest
->Color4uiv
= loopback_Color4uiv
;
1734 dest
->Color4usv
= loopback_Color4usv
;
1735 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT
;
1736 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT
;
1737 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT
;
1738 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT
;
1739 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT
;
1740 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT
;
1741 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT
;
1742 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT
;
1743 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT
;
1744 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT
;
1745 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT
;
1746 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT
;
1749 dest
->Color3b
= loopback_Color3b_f
;
1750 dest
->Color3d
= loopback_Color3d_f
;
1751 dest
->Color3i
= loopback_Color3i_f
;
1752 dest
->Color3s
= loopback_Color3s_f
;
1753 dest
->Color3ui
= loopback_Color3ui_f
;
1754 dest
->Color3us
= loopback_Color3us_f
;
1755 dest
->Color4b
= loopback_Color4b_f
;
1756 dest
->Color4d
= loopback_Color4d_f
;
1757 dest
->Color4i
= loopback_Color4i_f
;
1758 dest
->Color4s
= loopback_Color4s_f
;
1759 dest
->Color4ui
= loopback_Color4ui_f
;
1760 dest
->Color4us
= loopback_Color4us_f
;
1761 dest
->Color3bv
= loopback_Color3bv_f
;
1762 dest
->Color3dv
= loopback_Color3dv_f
;
1763 dest
->Color3iv
= loopback_Color3iv_f
;
1764 dest
->Color3sv
= loopback_Color3sv_f
;
1765 dest
->Color3uiv
= loopback_Color3uiv_f
;
1766 dest
->Color3usv
= loopback_Color3usv_f
;
1767 dest
->Color4bv
= loopback_Color4bv_f
;
1768 dest
->Color4dv
= loopback_Color4dv_f
;
1769 dest
->Color4iv
= loopback_Color4iv_f
;
1770 dest
->Color4sv
= loopback_Color4sv_f
;
1771 dest
->Color4uiv
= loopback_Color4uiv_f
;
1772 dest
->Color4usv
= loopback_Color4usv_f
;
1773 dest
->SecondaryColor3bEXT
= loopback_SecondaryColor3bEXT_f
;
1774 dest
->SecondaryColor3dEXT
= loopback_SecondaryColor3dEXT_f
;
1775 dest
->SecondaryColor3iEXT
= loopback_SecondaryColor3iEXT_f
;
1776 dest
->SecondaryColor3sEXT
= loopback_SecondaryColor3sEXT_f
;
1777 dest
->SecondaryColor3uiEXT
= loopback_SecondaryColor3uiEXT_f
;
1778 dest
->SecondaryColor3usEXT
= loopback_SecondaryColor3usEXT_f
;
1779 dest
->SecondaryColor3bvEXT
= loopback_SecondaryColor3bvEXT_f
;
1780 dest
->SecondaryColor3dvEXT
= loopback_SecondaryColor3dvEXT_f
;
1781 dest
->SecondaryColor3ivEXT
= loopback_SecondaryColor3ivEXT_f
;
1782 dest
->SecondaryColor3svEXT
= loopback_SecondaryColor3svEXT_f
;
1783 dest
->SecondaryColor3uivEXT
= loopback_SecondaryColor3uivEXT_f
;
1784 dest
->SecondaryColor3usvEXT
= loopback_SecondaryColor3usvEXT_f
;
1788 /* Passing prefer_float_colors as true will mean that all colors
1789 * *except* Color{34}ub{v} are passed as floats. Setting it false will
1790 * mean all colors *except* Color{34}f{v} are passed as ubytes.
1792 * This code never registers handlers for any of the entry points
1793 * listed in vtxfmt.h.
1796 _mesa_loopback_init_api_table( struct _glapi_table
*dest
,
1797 GLboolean prefer_float_colors
)
1799 _mesa_loopback_prefer_float( dest
, prefer_float_colors
);
1801 dest
->Indexd
= loopback_Indexd
;
1802 dest
->Indexf
= loopback_Indexf
;
1803 dest
->Indexs
= loopback_Indexs
;
1804 dest
->Indexub
= loopback_Indexub
;
1805 dest
->Indexdv
= loopback_Indexdv
;
1806 dest
->Indexfv
= loopback_Indexfv
;
1807 dest
->Indexiv
= loopback_Indexiv
;
1808 dest
->Indexsv
= loopback_Indexsv
;
1809 dest
->Indexubv
= loopback_Indexubv
;
1810 dest
->Normal3b
= loopback_Normal3b
;
1811 dest
->Normal3d
= loopback_Normal3d
;
1812 dest
->Normal3i
= loopback_Normal3i
;
1813 dest
->Normal3s
= loopback_Normal3s
;
1814 dest
->Normal3bv
= loopback_Normal3bv
;
1815 dest
->Normal3dv
= loopback_Normal3dv
;
1816 dest
->Normal3iv
= loopback_Normal3iv
;
1817 dest
->Normal3sv
= loopback_Normal3sv
;
1818 dest
->TexCoord1d
= loopback_TexCoord1d
;
1819 dest
->TexCoord1i
= loopback_TexCoord1i
;
1820 dest
->TexCoord1s
= loopback_TexCoord1s
;
1821 dest
->TexCoord2d
= loopback_TexCoord2d
;
1822 dest
->TexCoord2s
= loopback_TexCoord2s
;
1823 dest
->TexCoord2i
= loopback_TexCoord2i
;
1824 dest
->TexCoord3d
= loopback_TexCoord3d
;
1825 dest
->TexCoord3i
= loopback_TexCoord3i
;
1826 dest
->TexCoord3s
= loopback_TexCoord3s
;
1827 dest
->TexCoord4d
= loopback_TexCoord4d
;
1828 dest
->TexCoord4i
= loopback_TexCoord4i
;
1829 dest
->TexCoord4s
= loopback_TexCoord4s
;
1830 dest
->TexCoord1dv
= loopback_TexCoord1dv
;
1831 dest
->TexCoord1iv
= loopback_TexCoord1iv
;
1832 dest
->TexCoord1sv
= loopback_TexCoord1sv
;
1833 dest
->TexCoord2dv
= loopback_TexCoord2dv
;
1834 dest
->TexCoord2iv
= loopback_TexCoord2iv
;
1835 dest
->TexCoord2sv
= loopback_TexCoord2sv
;
1836 dest
->TexCoord3dv
= loopback_TexCoord3dv
;
1837 dest
->TexCoord3iv
= loopback_TexCoord3iv
;
1838 dest
->TexCoord3sv
= loopback_TexCoord3sv
;
1839 dest
->TexCoord4dv
= loopback_TexCoord4dv
;
1840 dest
->TexCoord4iv
= loopback_TexCoord4iv
;
1841 dest
->TexCoord4sv
= loopback_TexCoord4sv
;
1842 dest
->Vertex2d
= loopback_Vertex2d
;
1843 dest
->Vertex2i
= loopback_Vertex2i
;
1844 dest
->Vertex2s
= loopback_Vertex2s
;
1845 dest
->Vertex3d
= loopback_Vertex3d
;
1846 dest
->Vertex3i
= loopback_Vertex3i
;
1847 dest
->Vertex3s
= loopback_Vertex3s
;
1848 dest
->Vertex4d
= loopback_Vertex4d
;
1849 dest
->Vertex4i
= loopback_Vertex4i
;
1850 dest
->Vertex4s
= loopback_Vertex4s
;
1851 dest
->Vertex2dv
= loopback_Vertex2dv
;
1852 dest
->Vertex2iv
= loopback_Vertex2iv
;
1853 dest
->Vertex2sv
= loopback_Vertex2sv
;
1854 dest
->Vertex3dv
= loopback_Vertex3dv
;
1855 dest
->Vertex3iv
= loopback_Vertex3iv
;
1856 dest
->Vertex3sv
= loopback_Vertex3sv
;
1857 dest
->Vertex4dv
= loopback_Vertex4dv
;
1858 dest
->Vertex4iv
= loopback_Vertex4iv
;
1859 dest
->Vertex4sv
= loopback_Vertex4sv
;
1860 dest
->MultiTexCoord1dARB
= loopback_MultiTexCoord1dARB
;
1861 dest
->MultiTexCoord1dvARB
= loopback_MultiTexCoord1dvARB
;
1862 dest
->MultiTexCoord1iARB
= loopback_MultiTexCoord1iARB
;
1863 dest
->MultiTexCoord1ivARB
= loopback_MultiTexCoord1ivARB
;
1864 dest
->MultiTexCoord1sARB
= loopback_MultiTexCoord1sARB
;
1865 dest
->MultiTexCoord1svARB
= loopback_MultiTexCoord1svARB
;
1866 dest
->MultiTexCoord2dARB
= loopback_MultiTexCoord2dARB
;
1867 dest
->MultiTexCoord2dvARB
= loopback_MultiTexCoord2dvARB
;
1868 dest
->MultiTexCoord2iARB
= loopback_MultiTexCoord2iARB
;
1869 dest
->MultiTexCoord2ivARB
= loopback_MultiTexCoord2ivARB
;
1870 dest
->MultiTexCoord2sARB
= loopback_MultiTexCoord2sARB
;
1871 dest
->MultiTexCoord2svARB
= loopback_MultiTexCoord2svARB
;
1872 dest
->MultiTexCoord3dARB
= loopback_MultiTexCoord3dARB
;
1873 dest
->MultiTexCoord3dvARB
= loopback_MultiTexCoord3dvARB
;
1874 dest
->MultiTexCoord3iARB
= loopback_MultiTexCoord3iARB
;
1875 dest
->MultiTexCoord3ivARB
= loopback_MultiTexCoord3ivARB
;
1876 dest
->MultiTexCoord3sARB
= loopback_MultiTexCoord3sARB
;
1877 dest
->MultiTexCoord3svARB
= loopback_MultiTexCoord3svARB
;
1878 dest
->MultiTexCoord4dARB
= loopback_MultiTexCoord4dARB
;
1879 dest
->MultiTexCoord4dvARB
= loopback_MultiTexCoord4dvARB
;
1880 dest
->MultiTexCoord4iARB
= loopback_MultiTexCoord4iARB
;
1881 dest
->MultiTexCoord4ivARB
= loopback_MultiTexCoord4ivARB
;
1882 dest
->MultiTexCoord4sARB
= loopback_MultiTexCoord4sARB
;
1883 dest
->MultiTexCoord4svARB
= loopback_MultiTexCoord4svARB
;
1884 dest
->EvalCoord2dv
= loopback_EvalCoord2dv
;
1885 dest
->EvalCoord2fv
= loopback_EvalCoord2fv
;
1886 dest
->EvalCoord2d
= loopback_EvalCoord2d
;
1887 dest
->EvalCoord1dv
= loopback_EvalCoord1dv
;
1888 dest
->EvalCoord1fv
= loopback_EvalCoord1fv
;
1889 dest
->EvalCoord1d
= loopback_EvalCoord1d
;
1890 dest
->Materialf
= loopback_Materialf
;
1891 dest
->Materiali
= loopback_Materiali
;
1892 dest
->Materialiv
= loopback_Materialiv
;
1893 dest
->Rectd
= loopback_Rectd
;
1894 dest
->Rectdv
= loopback_Rectdv
;
1895 dest
->Rectfv
= loopback_Rectfv
;
1896 dest
->Recti
= loopback_Recti
;
1897 dest
->Rectiv
= loopback_Rectiv
;
1898 dest
->Rects
= loopback_Rects
;
1899 dest
->Rectsv
= loopback_Rectsv
;
1900 dest
->FogCoorddEXT
= loopback_FogCoorddEXT
;
1901 dest
->FogCoorddvEXT
= loopback_FogCoorddvEXT
;
1903 dest
->VertexAttrib1sNV
= loopback_VertexAttrib1sNV
;
1904 dest
->VertexAttrib1fNV
= loopback_VertexAttrib1fNV
;
1905 dest
->VertexAttrib1dNV
= loopback_VertexAttrib1dNV
;
1906 dest
->VertexAttrib2sNV
= loopback_VertexAttrib2sNV
;
1907 dest
->VertexAttrib2fNV
= loopback_VertexAttrib2fNV
;
1908 dest
->VertexAttrib2dNV
= loopback_VertexAttrib2dNV
;
1909 dest
->VertexAttrib3sNV
= loopback_VertexAttrib3sNV
;
1910 dest
->VertexAttrib3fNV
= loopback_VertexAttrib3fNV
;
1911 dest
->VertexAttrib3dNV
= loopback_VertexAttrib3dNV
;
1912 dest
->VertexAttrib4sNV
= loopback_VertexAttrib4sNV
;
1913 dest
->VertexAttrib4dNV
= loopback_VertexAttrib4dNV
;
1914 dest
->VertexAttrib4ubNV
= loopback_VertexAttrib4ubNV
;
1916 dest
->VertexAttrib1svNV
= loopback_VertexAttrib1svNV
;
1917 dest
->VertexAttrib1fvNV
= loopback_VertexAttrib1fvNV
;
1918 dest
->VertexAttrib1dvNV
= loopback_VertexAttrib1dvNV
;
1919 dest
->VertexAttrib2svNV
= loopback_VertexAttrib2svNV
;
1920 dest
->VertexAttrib2fvNV
= loopback_VertexAttrib2fvNV
;
1921 dest
->VertexAttrib2dvNV
= loopback_VertexAttrib2dvNV
;
1922 dest
->VertexAttrib3svNV
= loopback_VertexAttrib3svNV
;
1923 dest
->VertexAttrib3fvNV
= loopback_VertexAttrib3fvNV
;
1924 dest
->VertexAttrib3dvNV
= loopback_VertexAttrib3dvNV
;
1925 dest
->VertexAttrib4svNV
= loopback_VertexAttrib4svNV
;
1926 dest
->VertexAttrib4fvNV
= loopback_VertexAttrib4fvNV
;
1927 dest
->VertexAttrib4dvNV
= loopback_VertexAttrib4dvNV
;
1928 dest
->VertexAttrib4ubvNV
= loopback_VertexAttrib4ubvNV
;
1930 dest
->VertexAttribs1svNV
= loopback_VertexAttribs1svNV
;
1931 dest
->VertexAttribs1fvNV
= loopback_VertexAttribs1fvNV
;
1932 dest
->VertexAttribs1dvNV
= loopback_VertexAttribs1dvNV
;
1933 dest
->VertexAttribs2svNV
= loopback_VertexAttribs2svNV
;
1934 dest
->VertexAttribs2fvNV
= loopback_VertexAttribs2fvNV
;
1935 dest
->VertexAttribs2dvNV
= loopback_VertexAttribs2dvNV
;
1936 dest
->VertexAttribs3svNV
= loopback_VertexAttribs3svNV
;
1937 dest
->VertexAttribs3fvNV
= loopback_VertexAttribs3fvNV
;
1938 dest
->VertexAttribs3dvNV
= loopback_VertexAttribs3dvNV
;
1939 dest
->VertexAttribs4svNV
= loopback_VertexAttribs4svNV
;
1940 dest
->VertexAttribs4fvNV
= loopback_VertexAttribs4fvNV
;
1941 dest
->VertexAttribs4dvNV
= loopback_VertexAttribs4dvNV
;
1942 dest
->VertexAttribs4ubvNV
= loopback_VertexAttribs4ubvNV
;
1944 dest
->VertexAttrib4bvARB
= loopback_VertexAttrib4bvARB
;
1945 dest
->VertexAttrib4ivARB
= loopback_VertexAttrib4ivARB
;
1946 dest
->VertexAttrib4ubvARB
= loopback_VertexAttrib4ubvARB
;
1947 dest
->VertexAttrib4usvARB
= loopback_VertexAttrib4usvARB
;
1948 dest
->VertexAttrib4uivARB
= loopback_VertexAttrib4uivARB
;
1949 dest
->VertexAttrib4NbvARB
= loopback_VertexAttrib4NbvARB
;
1950 dest
->VertexAttrib4NsvARB
= loopback_VertexAttrib4NsvARB
;
1951 dest
->VertexAttrib4NivARB
= loopback_VertexAttrib4NivARB
;
1952 dest
->VertexAttrib4NusvARB
= loopback_VertexAttrib4NusvARB
;
1953 dest
->VertexAttrib4NuivARB
= loopback_VertexAttrib4NuivARB
;