Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
55 | pj | 1 | /* $Id: api_loopback.c,v 1.1 2003-02-28 11:41:57 pj Exp $ */ |
2 | |||
3 | /* |
||
4 | * Mesa 3-D graphics library |
||
5 | * Version: 4.1 |
||
6 | * |
||
7 | * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. |
||
8 | * |
||
9 | * Permission is hereby granted, free of charge, to any person obtaining a |
||
10 | * copy of this software and associated documentation files (the "Software"), |
||
11 | * to deal in the Software without restriction, including without limitation |
||
12 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||
13 | * and/or sell copies of the Software, and to permit persons to whom the |
||
14 | * Software is furnished to do so, subject to the following conditions: |
||
15 | * |
||
16 | * The above copyright notice and this permission notice shall be included |
||
17 | * in all copies or substantial portions of the Software. |
||
18 | * |
||
19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
||
20 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
21 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||
22 | * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
||
23 | * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||
24 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||
25 | * |
||
26 | * Authors: |
||
27 | * Keith Whitwell <keith@tungstengraphics.com> |
||
28 | */ |
||
29 | |||
30 | |||
31 | #include "glheader.h" |
||
32 | #include "glapi.h" |
||
33 | #include "glapitable.h" |
||
34 | #include "macros.h" |
||
35 | #include "colormac.h" |
||
36 | #include "api_loopback.h" |
||
37 | |||
38 | /* KW: A set of functions to convert unusual Color/Normal/Vertex/etc |
||
39 | * calls to a smaller set of driver-provided formats. Currently just |
||
40 | * go back to dispatch to find these (eg. call glNormal3f directly), |
||
41 | * hence 'loopback'. |
||
42 | * |
||
43 | * The driver must supply all of the remaining entry points, which are |
||
44 | * listed in dd.h. The easiest way for a driver to do this is to |
||
45 | * install the supplied software t&l module. |
||
46 | */ |
||
47 | #define COLORUBV(v) glColor4ubv(v) |
||
48 | #define COLORF(r,g,b,a) glColor4f(r,g,b,a) |
||
49 | #define VERTEX2(x,y) glVertex2f(x,y) |
||
50 | #define VERTEX3(x,y,z) glVertex3f(x,y,z) |
||
51 | #define VERTEX4(x,y,z,w) glVertex4f(x,y,z,w) |
||
52 | #define NORMAL(x,y,z) glNormal3f(x,y,z) |
||
53 | #define TEXCOORD1(s) glTexCoord1f(s) |
||
54 | #define TEXCOORD2(s,t) glTexCoord2f(s,t) |
||
55 | #define TEXCOORD3(s,t,u) glTexCoord3f(s,t,u) |
||
56 | #define TEXCOORD4(s,t,u,v) glTexCoord4f(s,t,u,v) |
||
57 | #define INDEX(c) glIndexi(c) |
||
58 | #define MULTI_TEXCOORD1(z,s) glMultiTexCoord1fARB(z,s) |
||
59 | #define MULTI_TEXCOORD2(z,s,t) glMultiTexCoord2fARB(z,s,t) |
||
60 | #define MULTI_TEXCOORD3(z,s,t,u) glMultiTexCoord3fARB(z,s,t,u) |
||
61 | #define MULTI_TEXCOORD4(z,s,t,u,v) glMultiTexCoord4fARB(z,s,t,u,v) |
||
62 | #define EVALCOORD1(x) glEvalCoord1f(x) |
||
63 | #define EVALCOORD2(x,y) glEvalCoord2f(x,y) |
||
64 | #define MATERIALFV(a,b,c) glMaterialfv(a,b,c) |
||
65 | #define RECTF(a,b,c,d) glRectf(a,b,c,d) |
||
66 | |||
67 | #define ATTRIB(index, x, y, z, w) _glapi_Dispatch->VertexAttrib4fNV(index, x, y, z, w) |
||
68 | |||
69 | |||
70 | #define FOGCOORDF(x) _glapi_Dispatch->FogCoordfEXT(x) |
||
71 | #define SECONDARYCOLORUB(a,b,c) _glapi_Dispatch->SecondaryColor3ubEXT(a,b,c) |
||
72 | #define SECONDARYCOLORF(a,b,c) _glapi_Dispatch->SecondaryColor3fEXT(a,b,c) |
||
73 | |||
74 | |||
75 | static void |
||
76 | loopback_Color3b( GLbyte red, GLbyte green, GLbyte blue ) |
||
77 | { |
||
78 | GLubyte col[4]; |
||
79 | col[0] = BYTE_TO_UBYTE(red); |
||
80 | col[1] = BYTE_TO_UBYTE(green); |
||
81 | col[2] = BYTE_TO_UBYTE(blue); |
||
82 | col[3] = 255; |
||
83 | COLORUBV(col); |
||
84 | } |
||
85 | |||
86 | static void |
||
87 | loopback_Color3d( GLdouble red, GLdouble green, GLdouble blue ) |
||
88 | { |
||
89 | GLubyte col[4]; |
||
90 | GLfloat r = (GLfloat) red; |
||
91 | GLfloat g = (GLfloat) green; |
||
92 | GLfloat b = (GLfloat) blue; |
||
93 | UNCLAMPED_FLOAT_TO_UBYTE(col[0], r); |
||
94 | UNCLAMPED_FLOAT_TO_UBYTE(col[1], g); |
||
95 | UNCLAMPED_FLOAT_TO_UBYTE(col[2], b); |
||
96 | col[3] = 255; |
||
97 | COLORUBV( col ); |
||
98 | } |
||
99 | |||
100 | static void |
||
101 | loopback_Color3i( GLint red, GLint green, GLint blue ) |
||
102 | { |
||
103 | GLubyte col[4]; |
||
104 | col[0] = INT_TO_UBYTE(red); |
||
105 | col[1] = INT_TO_UBYTE(green); |
||
106 | col[2] = INT_TO_UBYTE(blue); |
||
107 | col[3] = 255; |
||
108 | COLORUBV(col); |
||
109 | } |
||
110 | |||
111 | static void |
||
112 | loopback_Color3s( GLshort red, GLshort green, GLshort blue ) |
||
113 | { |
||
114 | GLubyte col[4]; |
||
115 | col[0] = SHORT_TO_UBYTE(red); |
||
116 | col[1] = SHORT_TO_UBYTE(green); |
||
117 | col[2] = SHORT_TO_UBYTE(blue); |
||
118 | col[3] = 255; |
||
119 | COLORUBV(col); |
||
120 | } |
||
121 | |||
122 | static void |
||
123 | loopback_Color3ui( GLuint red, GLuint green, GLuint blue ) |
||
124 | { |
||
125 | GLubyte col[4]; |
||
126 | col[0] = UINT_TO_UBYTE(red); |
||
127 | col[1] = UINT_TO_UBYTE(green); |
||
128 | col[2] = UINT_TO_UBYTE(blue); |
||
129 | col[3] = 255; |
||
130 | COLORUBV(col); |
||
131 | } |
||
132 | |||
133 | static void |
||
134 | loopback_Color3us( GLushort red, GLushort green, GLushort blue ) |
||
135 | { |
||
136 | GLubyte col[4]; |
||
137 | col[0] = USHORT_TO_UBYTE(red); |
||
138 | col[1] = USHORT_TO_UBYTE(green); |
||
139 | col[2] = USHORT_TO_UBYTE(blue); |
||
140 | col[3] = 255; |
||
141 | COLORUBV(col); |
||
142 | } |
||
143 | |||
144 | static void |
||
145 | loopback_Color4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ) |
||
146 | { |
||
147 | GLubyte col[4]; |
||
148 | col[0] = BYTE_TO_UBYTE(red); |
||
149 | col[1] = BYTE_TO_UBYTE(green); |
||
150 | col[2] = BYTE_TO_UBYTE(blue); |
||
151 | col[3] = 255; |
||
152 | COLORUBV(col); |
||
153 | } |
||
154 | |||
155 | static void |
||
156 | loopback_Color4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha ) |
||
157 | { |
||
158 | GLubyte col[4]; |
||
159 | GLfloat r = (GLfloat) red; |
||
160 | GLfloat g = (GLfloat) green; |
||
161 | GLfloat b = (GLfloat) blue; |
||
162 | GLfloat a = (GLfloat) alpha; |
||
163 | UNCLAMPED_FLOAT_TO_UBYTE(col[0], r); |
||
164 | UNCLAMPED_FLOAT_TO_UBYTE(col[1], g); |
||
165 | UNCLAMPED_FLOAT_TO_UBYTE(col[2], b); |
||
166 | UNCLAMPED_FLOAT_TO_UBYTE(col[3], a); |
||
167 | COLORUBV( col ); |
||
168 | } |
||
169 | |||
170 | static void |
||
171 | loopback_Color4i( GLint red, GLint green, GLint blue, GLint alpha ) |
||
172 | { |
||
173 | GLubyte col[4]; |
||
174 | col[0] = INT_TO_UBYTE(red); |
||
175 | col[1] = INT_TO_UBYTE(green); |
||
176 | col[2] = INT_TO_UBYTE(blue); |
||
177 | col[3] = INT_TO_UBYTE(alpha); |
||
178 | COLORUBV(col); |
||
179 | } |
||
180 | |||
181 | static void |
||
182 | loopback_Color4s( GLshort red, GLshort green, GLshort blue, |
||
183 | GLshort alpha ) |
||
184 | { |
||
185 | GLubyte col[4]; |
||
186 | col[0] = SHORT_TO_UBYTE(red); |
||
187 | col[1] = SHORT_TO_UBYTE(green); |
||
188 | col[2] = SHORT_TO_UBYTE(blue); |
||
189 | col[3] = SHORT_TO_UBYTE(alpha); |
||
190 | COLORUBV(col); |
||
191 | } |
||
192 | |||
193 | static void |
||
194 | loopback_Color4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha ) |
||
195 | { |
||
196 | GLubyte col[4]; |
||
197 | col[0] = UINT_TO_UBYTE(red); |
||
198 | col[1] = UINT_TO_UBYTE(green); |
||
199 | col[2] = UINT_TO_UBYTE(blue); |
||
200 | col[3] = UINT_TO_UBYTE(alpha); |
||
201 | COLORUBV(col); |
||
202 | } |
||
203 | |||
204 | static void |
||
205 | loopback_Color4us( GLushort red, GLushort green, GLushort blue, |
||
206 | GLushort alpha ) |
||
207 | { |
||
208 | GLubyte col[4]; |
||
209 | col[0] = USHORT_TO_UBYTE(red); |
||
210 | col[1] = USHORT_TO_UBYTE(green); |
||
211 | col[2] = USHORT_TO_UBYTE(blue); |
||
212 | col[3] = USHORT_TO_UBYTE(alpha); |
||
213 | COLORUBV(col); |
||
214 | } |
||
215 | |||
216 | static void |
||
217 | loopback_Color3bv( const GLbyte *v ) |
||
218 | { |
||
219 | GLubyte col[4]; |
||
220 | col[0] = BYTE_TO_UBYTE(v[0]); |
||
221 | col[1] = BYTE_TO_UBYTE(v[1]); |
||
222 | col[2] = BYTE_TO_UBYTE(v[2]); |
||
223 | col[3] = 255; |
||
224 | COLORUBV(col); |
||
225 | } |
||
226 | |||
227 | static void |
||
228 | loopback_Color3dv( const GLdouble *v ) |
||
229 | { |
||
230 | GLubyte col[4]; |
||
231 | GLfloat r = (GLfloat) v[0]; |
||
232 | GLfloat g = (GLfloat) v[1]; |
||
233 | GLfloat b = (GLfloat) v[2]; |
||
234 | UNCLAMPED_FLOAT_TO_UBYTE(col[0], r); |
||
235 | UNCLAMPED_FLOAT_TO_UBYTE(col[1], g); |
||
236 | UNCLAMPED_FLOAT_TO_UBYTE(col[2], b); |
||
237 | col[3] = 255; |
||
238 | COLORUBV( col ); |
||
239 | } |
||
240 | |||
241 | static void |
||
242 | loopback_Color3iv( const GLint *v ) |
||
243 | { |
||
244 | GLubyte col[4]; |
||
245 | col[0] = INT_TO_UBYTE(v[0]); |
||
246 | col[1] = INT_TO_UBYTE(v[1]); |
||
247 | col[2] = INT_TO_UBYTE(v[2]); |
||
248 | col[3] = 255; |
||
249 | COLORUBV(col); |
||
250 | } |
||
251 | |||
252 | static void |
||
253 | loopback_Color3sv( const GLshort *v ) |
||
254 | { |
||
255 | GLubyte col[4]; |
||
256 | col[0] = SHORT_TO_UBYTE(v[0]); |
||
257 | col[1] = SHORT_TO_UBYTE(v[1]); |
||
258 | col[2] = SHORT_TO_UBYTE(v[2]); |
||
259 | col[3] = 255; |
||
260 | COLORUBV(col); |
||
261 | } |
||
262 | |||
263 | static void |
||
264 | loopback_Color3uiv( const GLuint *v ) |
||
265 | { |
||
266 | GLubyte col[4]; |
||
267 | col[0] = UINT_TO_UBYTE(v[0]); |
||
268 | col[1] = UINT_TO_UBYTE(v[1]); |
||
269 | col[2] = UINT_TO_UBYTE(v[2]); |
||
270 | col[3] = 255; |
||
271 | COLORUBV(col); |
||
272 | } |
||
273 | |||
274 | static void |
||
275 | loopback_Color3usv( const GLushort *v ) |
||
276 | { |
||
277 | GLubyte col[4]; |
||
278 | col[0] = USHORT_TO_UBYTE(v[0]); |
||
279 | col[1] = USHORT_TO_UBYTE(v[1]); |
||
280 | col[2] = USHORT_TO_UBYTE(v[2]); |
||
281 | col[3] = 255; |
||
282 | COLORUBV(col); |
||
283 | |||
284 | } |
||
285 | |||
286 | static void |
||
287 | loopback_Color4bv( const GLbyte *v ) |
||
288 | { |
||
289 | GLubyte col[4]; |
||
290 | col[0] = BYTE_TO_UBYTE(v[0]); |
||
291 | col[1] = BYTE_TO_UBYTE(v[1]); |
||
292 | col[2] = BYTE_TO_UBYTE(v[2]); |
||
293 | col[3] = BYTE_TO_UBYTE(v[3]); |
||
294 | COLORUBV(col); |
||
295 | } |
||
296 | |||
297 | static void |
||
298 | loopback_Color4dv( const GLdouble *v ) |
||
299 | { |
||
300 | GLubyte col[4]; |
||
301 | GLfloat r = (GLfloat) v[0]; |
||
302 | GLfloat g = (GLfloat) v[1]; |
||
303 | GLfloat b = (GLfloat) v[2]; |
||
304 | GLfloat a = (GLfloat) v[3]; |
||
305 | UNCLAMPED_FLOAT_TO_UBYTE(col[0], r); |
||
306 | UNCLAMPED_FLOAT_TO_UBYTE(col[1], g); |
||
307 | UNCLAMPED_FLOAT_TO_UBYTE(col[2], b); |
||
308 | UNCLAMPED_FLOAT_TO_UBYTE(col[3], a); |
||
309 | COLORUBV( col ); |
||
310 | } |
||
311 | |||
312 | static void |
||
313 | loopback_Color4iv( const GLint *v ) |
||
314 | { |
||
315 | GLubyte col[4]; |
||
316 | col[0] = INT_TO_UBYTE(v[0]); |
||
317 | col[1] = INT_TO_UBYTE(v[1]); |
||
318 | col[2] = INT_TO_UBYTE(v[2]); |
||
319 | col[3] = INT_TO_UBYTE(v[3]); |
||
320 | COLORUBV(col); |
||
321 | } |
||
322 | |||
323 | static void |
||
324 | loopback_Color4sv( const GLshort *v) |
||
325 | { |
||
326 | GLubyte col[4]; |
||
327 | col[0] = SHORT_TO_UBYTE(v[0]); |
||
328 | col[1] = SHORT_TO_UBYTE(v[1]); |
||
329 | col[2] = SHORT_TO_UBYTE(v[2]); |
||
330 | col[3] = SHORT_TO_UBYTE(v[3]); |
||
331 | COLORUBV(col); |
||
332 | } |
||
333 | |||
334 | static void |
||
335 | loopback_Color4uiv( const GLuint *v) |
||
336 | { |
||
337 | GLubyte col[4]; |
||
338 | col[0] = UINT_TO_UBYTE(v[0]); |
||
339 | col[1] = UINT_TO_UBYTE(v[1]); |
||
340 | col[2] = UINT_TO_UBYTE(v[2]); |
||
341 | col[3] = UINT_TO_UBYTE(v[3]); |
||
342 | COLORUBV(col); |
||
343 | } |
||
344 | |||
345 | static void |
||
346 | loopback_Color4usv( const GLushort *v) |
||
347 | { |
||
348 | GLubyte col[4]; |
||
349 | col[0] = USHORT_TO_UBYTE(v[0]); |
||
350 | col[1] = USHORT_TO_UBYTE(v[1]); |
||
351 | col[2] = USHORT_TO_UBYTE(v[2]); |
||
352 | col[3] = USHORT_TO_UBYTE(v[3]); |
||
353 | COLORUBV(col); |
||
354 | } |
||
355 | |||
356 | static void |
||
357 | loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue ) |
||
358 | { |
||
359 | COLORF( BYTE_TO_FLOAT(red), |
||
360 | BYTE_TO_FLOAT(green), |
||
361 | BYTE_TO_FLOAT(blue), |
||
362 | 1.0 ); |
||
363 | } |
||
364 | |||
365 | static void |
||
366 | loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue ) |
||
367 | { |
||
368 | COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 ); |
||
369 | } |
||
370 | |||
371 | static void |
||
372 | loopback_Color3i_f( GLint red, GLint green, GLint blue ) |
||
373 | { |
||
374 | COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green), |
||
375 | INT_TO_FLOAT(blue), 1.0); |
||
376 | } |
||
377 | |||
378 | static void |
||
379 | loopback_Color3s_f( GLshort red, GLshort green, GLshort blue ) |
||
380 | { |
||
381 | COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), |
||
382 | SHORT_TO_FLOAT(blue), 1.0); |
||
383 | } |
||
384 | |||
385 | static void |
||
386 | loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue ) |
||
387 | { |
||
388 | COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), |
||
389 | UINT_TO_FLOAT(blue), 1.0 ); |
||
390 | } |
||
391 | |||
392 | static void |
||
393 | loopback_Color3us_f( GLushort red, GLushort green, GLushort blue ) |
||
394 | { |
||
395 | COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), |
||
396 | USHORT_TO_FLOAT(blue), 1.0 ); |
||
397 | } |
||
398 | |||
399 | |||
400 | static void |
||
401 | loopback_Color3bv_f( const GLbyte *v ) |
||
402 | { |
||
403 | COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), |
||
404 | BYTE_TO_FLOAT(v[2]), 1.0 ); |
||
405 | } |
||
406 | |||
407 | static void |
||
408 | loopback_Color3dv_f( const GLdouble *v ) |
||
409 | { |
||
410 | COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 ); |
||
411 | } |
||
412 | |||
413 | static void |
||
414 | loopback_Color3iv_f( const GLint *v ) |
||
415 | { |
||
416 | COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), |
||
417 | INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) ); |
||
418 | } |
||
419 | |||
420 | static void |
||
421 | loopback_Color3sv_f( const GLshort *v ) |
||
422 | { |
||
423 | COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), |
||
424 | SHORT_TO_FLOAT(v[2]), 1.0 ); |
||
425 | } |
||
426 | |||
427 | static void |
||
428 | loopback_Color3uiv_f( const GLuint *v ) |
||
429 | { |
||
430 | COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), |
||
431 | UINT_TO_FLOAT(v[2]), 1.0 ); |
||
432 | } |
||
433 | |||
434 | static void |
||
435 | loopback_Color3usv_f( const GLushort *v ) |
||
436 | { |
||
437 | COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), |
||
438 | USHORT_TO_FLOAT(v[2]), 1.0 ); |
||
439 | } |
||
440 | |||
441 | |||
442 | static void |
||
443 | loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue, |
||
444 | GLbyte alpha ) |
||
445 | { |
||
446 | COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green), |
||
447 | BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) ); |
||
448 | } |
||
449 | |||
450 | static void |
||
451 | loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue, |
||
452 | GLdouble alpha ) |
||
453 | { |
||
454 | COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha ); |
||
455 | } |
||
456 | |||
457 | static void |
||
458 | loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha ) |
||
459 | { |
||
460 | COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green), |
||
461 | INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) ); |
||
462 | } |
||
463 | |||
464 | static void |
||
465 | loopback_Color4s_f( GLshort red, GLshort green, GLshort blue, |
||
466 | GLshort alpha ) |
||
467 | { |
||
468 | COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green), |
||
469 | SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) ); |
||
470 | } |
||
471 | |||
472 | static void |
||
473 | loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha ) |
||
474 | { |
||
475 | COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green), |
||
476 | UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) ); |
||
477 | } |
||
478 | |||
479 | static void |
||
480 | loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha ) |
||
481 | { |
||
482 | COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green), |
||
483 | USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) ); |
||
484 | } |
||
485 | |||
486 | |||
487 | static void |
||
488 | loopback_Color4iv_f( const GLint *v ) |
||
489 | { |
||
490 | COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), |
||
491 | INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) ); |
||
492 | } |
||
493 | |||
494 | |||
495 | static void |
||
496 | loopback_Color4bv_f( const GLbyte *v ) |
||
497 | { |
||
498 | COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), |
||
499 | BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) ); |
||
500 | } |
||
501 | |||
502 | static void |
||
503 | loopback_Color4dv_f( const GLdouble *v ) |
||
504 | { |
||
505 | COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] ); |
||
506 | } |
||
507 | |||
508 | |||
509 | static void |
||
510 | loopback_Color4sv_f( const GLshort *v) |
||
511 | { |
||
512 | COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), |
||
513 | SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) ); |
||
514 | } |
||
515 | |||
516 | |||
517 | static void |
||
518 | loopback_Color4uiv_f( const GLuint *v) |
||
519 | { |
||
520 | COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), |
||
521 | UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) ); |
||
522 | } |
||
523 | |||
524 | static void |
||
525 | loopback_Color4usv_f( const GLushort *v) |
||
526 | { |
||
527 | COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), |
||
528 | USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) ); |
||
529 | } |
||
530 | |||
531 | static void |
||
532 | loopback_FogCoorddEXT( GLdouble d ) |
||
533 | { |
||
534 | FOGCOORDF( (GLfloat) d ); |
||
535 | } |
||
536 | |||
537 | static void |
||
538 | loopback_FogCoorddvEXT( const GLdouble *v ) |
||
539 | { |
||
540 | FOGCOORDF( (GLfloat) *v ); |
||
541 | } |
||
542 | |||
543 | |||
544 | static void |
||
545 | loopback_Indexd( GLdouble c ) |
||
546 | { |
||
547 | INDEX( (GLint) c ); |
||
548 | } |
||
549 | |||
550 | static void |
||
551 | loopback_Indexf( GLfloat c ) |
||
552 | { |
||
553 | INDEX( (GLuint) (GLint) c ); |
||
554 | } |
||
555 | |||
556 | static void |
||
557 | loopback_Indexs( GLshort c ) |
||
558 | { |
||
559 | INDEX( (GLint) c ); |
||
560 | } |
||
561 | |||
562 | static void |
||
563 | loopback_Indexub( GLubyte c ) |
||
564 | { |
||
565 | INDEX( (GLint) c ); |
||
566 | } |
||
567 | |||
568 | static void |
||
569 | loopback_Indexdv( const GLdouble *c ) |
||
570 | { |
||
571 | INDEX( (GLint) (GLint) *c ); |
||
572 | } |
||
573 | |||
574 | static void |
||
575 | loopback_Indexfv( const GLfloat *c ) |
||
576 | { |
||
577 | INDEX( (GLint) (GLint) *c ); |
||
578 | } |
||
579 | |||
580 | static void |
||
581 | loopback_Indexiv( const GLint *c ) |
||
582 | { |
||
583 | INDEX( *c ); |
||
584 | } |
||
585 | |||
586 | static void |
||
587 | loopback_Indexsv( const GLshort *c ) |
||
588 | { |
||
589 | INDEX( (GLint) *c ); |
||
590 | } |
||
591 | |||
592 | static void |
||
593 | loopback_Indexubv( const GLubyte *c ) |
||
594 | { |
||
595 | INDEX( (GLint) *c ); |
||
596 | } |
||
597 | |||
598 | static void |
||
599 | loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz ) |
||
600 | { |
||
601 | NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) ); |
||
602 | } |
||
603 | |||
604 | static void |
||
605 | loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz ) |
||
606 | { |
||
607 | NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz); |
||
608 | } |
||
609 | |||
610 | static void |
||
611 | loopback_Normal3i( GLint nx, GLint ny, GLint nz ) |
||
612 | { |
||
613 | NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) ); |
||
614 | } |
||
615 | |||
616 | static void |
||
617 | loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz ) |
||
618 | { |
||
619 | NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) ); |
||
620 | } |
||
621 | |||
622 | static void |
||
623 | loopback_Normal3bv( const GLbyte *v ) |
||
624 | { |
||
625 | NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) ); |
||
626 | } |
||
627 | |||
628 | static void |
||
629 | loopback_Normal3dv( const GLdouble *v ) |
||
630 | { |
||
631 | NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
632 | } |
||
633 | |||
634 | static void |
||
635 | loopback_Normal3iv( const GLint *v ) |
||
636 | { |
||
637 | NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) ); |
||
638 | } |
||
639 | |||
640 | static void |
||
641 | loopback_Normal3sv( const GLshort *v ) |
||
642 | { |
||
643 | NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) ); |
||
644 | } |
||
645 | |||
646 | static void |
||
647 | loopback_TexCoord1d( GLdouble s ) |
||
648 | { |
||
649 | TEXCOORD1((GLfloat) s); |
||
650 | } |
||
651 | |||
652 | static void |
||
653 | loopback_TexCoord1i( GLint s ) |
||
654 | { |
||
655 | TEXCOORD1((GLfloat) s); |
||
656 | } |
||
657 | |||
658 | static void |
||
659 | loopback_TexCoord1s( GLshort s ) |
||
660 | { |
||
661 | TEXCOORD1((GLfloat) s); |
||
662 | } |
||
663 | |||
664 | static void |
||
665 | loopback_TexCoord2d( GLdouble s, GLdouble t ) |
||
666 | { |
||
667 | TEXCOORD2((GLfloat) s,(GLfloat) t); |
||
668 | } |
||
669 | |||
670 | static void |
||
671 | loopback_TexCoord2s( GLshort s, GLshort t ) |
||
672 | { |
||
673 | TEXCOORD2((GLfloat) s,(GLfloat) t); |
||
674 | } |
||
675 | |||
676 | static void |
||
677 | loopback_TexCoord2i( GLint s, GLint t ) |
||
678 | { |
||
679 | TEXCOORD2((GLfloat) s,(GLfloat) t); |
||
680 | } |
||
681 | |||
682 | static void |
||
683 | loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r ) |
||
684 | { |
||
685 | TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); |
||
686 | } |
||
687 | |||
688 | static void |
||
689 | loopback_TexCoord3i( GLint s, GLint t, GLint r ) |
||
690 | { |
||
691 | TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); |
||
692 | } |
||
693 | |||
694 | static void |
||
695 | loopback_TexCoord3s( GLshort s, GLshort t, GLshort r ) |
||
696 | { |
||
697 | TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r); |
||
698 | } |
||
699 | |||
700 | static void |
||
701 | loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ) |
||
702 | { |
||
703 | TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); |
||
704 | } |
||
705 | |||
706 | static void |
||
707 | loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q ) |
||
708 | { |
||
709 | TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); |
||
710 | } |
||
711 | |||
712 | static void |
||
713 | loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ) |
||
714 | { |
||
715 | TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q); |
||
716 | } |
||
717 | |||
718 | static void |
||
719 | loopback_TexCoord1dv( const GLdouble *v ) |
||
720 | { |
||
721 | TEXCOORD1((GLfloat) v[0]); |
||
722 | } |
||
723 | |||
724 | static void |
||
725 | loopback_TexCoord1iv( const GLint *v ) |
||
726 | { |
||
727 | TEXCOORD1((GLfloat) v[0]); |
||
728 | } |
||
729 | |||
730 | static void |
||
731 | loopback_TexCoord1sv( const GLshort *v ) |
||
732 | { |
||
733 | TEXCOORD1((GLfloat) v[0]); |
||
734 | } |
||
735 | |||
736 | static void |
||
737 | loopback_TexCoord2dv( const GLdouble *v ) |
||
738 | { |
||
739 | TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); |
||
740 | } |
||
741 | |||
742 | static void |
||
743 | loopback_TexCoord2iv( const GLint *v ) |
||
744 | { |
||
745 | TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); |
||
746 | } |
||
747 | |||
748 | static void |
||
749 | loopback_TexCoord2sv( const GLshort *v ) |
||
750 | { |
||
751 | TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); |
||
752 | } |
||
753 | |||
754 | static void |
||
755 | loopback_TexCoord3dv( const GLdouble *v ) |
||
756 | { |
||
757 | TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]); |
||
758 | } |
||
759 | |||
760 | static void |
||
761 | loopback_TexCoord3iv( const GLint *v ) |
||
762 | { |
||
763 | TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); |
||
764 | } |
||
765 | |||
766 | static void |
||
767 | loopback_TexCoord3sv( const GLshort *v ) |
||
768 | { |
||
769 | TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]); |
||
770 | } |
||
771 | |||
772 | static void |
||
773 | loopback_TexCoord4dv( const GLdouble *v ) |
||
774 | { |
||
775 | TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); |
||
776 | } |
||
777 | |||
778 | static void |
||
779 | loopback_TexCoord4iv( const GLint *v ) |
||
780 | { |
||
781 | TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); |
||
782 | } |
||
783 | |||
784 | static void |
||
785 | loopback_TexCoord4sv( const GLshort *v ) |
||
786 | { |
||
787 | TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]); |
||
788 | } |
||
789 | |||
790 | static void |
||
791 | loopback_Vertex2d( GLdouble x, GLdouble y ) |
||
792 | { |
||
793 | VERTEX2( (GLfloat) x, (GLfloat) y ); |
||
794 | } |
||
795 | |||
796 | static void |
||
797 | loopback_Vertex2i( GLint x, GLint y ) |
||
798 | { |
||
799 | VERTEX2( (GLfloat) x, (GLfloat) y ); |
||
800 | } |
||
801 | |||
802 | static void |
||
803 | loopback_Vertex2s( GLshort x, GLshort y ) |
||
804 | { |
||
805 | VERTEX2( (GLfloat) x, (GLfloat) y ); |
||
806 | } |
||
807 | |||
808 | static void |
||
809 | loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z ) |
||
810 | { |
||
811 | VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); |
||
812 | } |
||
813 | |||
814 | static void |
||
815 | loopback_Vertex3i( GLint x, GLint y, GLint z ) |
||
816 | { |
||
817 | VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); |
||
818 | } |
||
819 | |||
820 | static void |
||
821 | loopback_Vertex3s( GLshort x, GLshort y, GLshort z ) |
||
822 | { |
||
823 | VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z ); |
||
824 | } |
||
825 | |||
826 | static void |
||
827 | loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) |
||
828 | { |
||
829 | VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); |
||
830 | } |
||
831 | |||
832 | static void |
||
833 | loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w ) |
||
834 | { |
||
835 | VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); |
||
836 | } |
||
837 | |||
838 | static void |
||
839 | loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w ) |
||
840 | { |
||
841 | VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w ); |
||
842 | } |
||
843 | |||
844 | static void |
||
845 | loopback_Vertex2dv( const GLdouble *v ) |
||
846 | { |
||
847 | VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); |
||
848 | } |
||
849 | |||
850 | static void |
||
851 | loopback_Vertex2iv( const GLint *v ) |
||
852 | { |
||
853 | VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); |
||
854 | } |
||
855 | |||
856 | static void |
||
857 | loopback_Vertex2sv( const GLshort *v ) |
||
858 | { |
||
859 | VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); |
||
860 | } |
||
861 | |||
862 | static void |
||
863 | loopback_Vertex3dv( const GLdouble *v ) |
||
864 | { |
||
865 | VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
866 | } |
||
867 | |||
868 | static void |
||
869 | loopback_Vertex3iv( const GLint *v ) |
||
870 | { |
||
871 | VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
872 | } |
||
873 | |||
874 | static void |
||
875 | loopback_Vertex3sv( const GLshort *v ) |
||
876 | { |
||
877 | VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
878 | } |
||
879 | |||
880 | static void |
||
881 | loopback_Vertex4dv( const GLdouble *v ) |
||
882 | { |
||
883 | VERTEX4( (GLfloat) v[0], (GLfloat) v[1], |
||
884 | (GLfloat) v[2], (GLfloat) v[3] ); |
||
885 | } |
||
886 | |||
887 | static void |
||
888 | loopback_Vertex4iv( const GLint *v ) |
||
889 | { |
||
890 | VERTEX4( (GLfloat) v[0], (GLfloat) v[1], |
||
891 | (GLfloat) v[2], (GLfloat) v[3] ); |
||
892 | } |
||
893 | |||
894 | static void |
||
895 | loopback_Vertex4sv( const GLshort *v ) |
||
896 | { |
||
897 | VERTEX4( (GLfloat) v[0], (GLfloat) v[1], |
||
898 | (GLfloat) v[2], (GLfloat) v[3] ); |
||
899 | } |
||
900 | |||
901 | static void |
||
902 | loopback_MultiTexCoord1dARB(GLenum target, GLdouble s) |
||
903 | { |
||
904 | MULTI_TEXCOORD1( target, (GLfloat) s ); |
||
905 | } |
||
906 | |||
907 | static void |
||
908 | loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v) |
||
909 | { |
||
910 | MULTI_TEXCOORD1( target, (GLfloat) v[0] ); |
||
911 | } |
||
912 | |||
913 | static void |
||
914 | loopback_MultiTexCoord1iARB(GLenum target, GLint s) |
||
915 | { |
||
916 | MULTI_TEXCOORD1( target, (GLfloat) s ); |
||
917 | } |
||
918 | |||
919 | static void |
||
920 | loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v) |
||
921 | { |
||
922 | MULTI_TEXCOORD1( target, (GLfloat) v[0] ); |
||
923 | } |
||
924 | |||
925 | static void |
||
926 | loopback_MultiTexCoord1sARB(GLenum target, GLshort s) |
||
927 | { |
||
928 | MULTI_TEXCOORD1( target, (GLfloat) s ); |
||
929 | } |
||
930 | |||
931 | static void |
||
932 | loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v) |
||
933 | { |
||
934 | MULTI_TEXCOORD1( target, (GLfloat) v[0] ); |
||
935 | } |
||
936 | |||
937 | static void |
||
938 | loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) |
||
939 | { |
||
940 | MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); |
||
941 | } |
||
942 | |||
943 | static void |
||
944 | loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v) |
||
945 | { |
||
946 | MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); |
||
947 | } |
||
948 | |||
949 | static void |
||
950 | loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t) |
||
951 | { |
||
952 | MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); |
||
953 | } |
||
954 | |||
955 | static void |
||
956 | loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v) |
||
957 | { |
||
958 | MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); |
||
959 | } |
||
960 | |||
961 | static void |
||
962 | loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t) |
||
963 | { |
||
964 | MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t ); |
||
965 | } |
||
966 | |||
967 | static void |
||
968 | loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v) |
||
969 | { |
||
970 | MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] ); |
||
971 | } |
||
972 | |||
973 | static void |
||
974 | loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) |
||
975 | { |
||
976 | MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); |
||
977 | } |
||
978 | |||
979 | static void |
||
980 | loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v) |
||
981 | { |
||
982 | MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
983 | } |
||
984 | |||
985 | static void |
||
986 | loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) |
||
987 | { |
||
988 | MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); |
||
989 | } |
||
990 | |||
991 | static void |
||
992 | loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v) |
||
993 | { |
||
994 | MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
995 | } |
||
996 | |||
997 | static void |
||
998 | loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r) |
||
999 | { |
||
1000 | MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r ); |
||
1001 | } |
||
1002 | |||
1003 | static void |
||
1004 | loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v) |
||
1005 | { |
||
1006 | MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
1007 | } |
||
1008 | |||
1009 | static void |
||
1010 | loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) |
||
1011 | { |
||
1012 | MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, |
||
1013 | (GLfloat) r, (GLfloat) q ); |
||
1014 | } |
||
1015 | |||
1016 | static void |
||
1017 | loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v) |
||
1018 | { |
||
1019 | MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], |
||
1020 | (GLfloat) v[2], (GLfloat) v[3] ); |
||
1021 | } |
||
1022 | |||
1023 | static void |
||
1024 | loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) |
||
1025 | { |
||
1026 | MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, |
||
1027 | (GLfloat) r, (GLfloat) q ); |
||
1028 | } |
||
1029 | |||
1030 | static void |
||
1031 | loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v) |
||
1032 | { |
||
1033 | MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], |
||
1034 | (GLfloat) v[2], (GLfloat) v[3] ); |
||
1035 | } |
||
1036 | |||
1037 | static void |
||
1038 | loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) |
||
1039 | { |
||
1040 | MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t, |
||
1041 | (GLfloat) r, (GLfloat) q ); |
||
1042 | } |
||
1043 | |||
1044 | static void |
||
1045 | loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v) |
||
1046 | { |
||
1047 | MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1], |
||
1048 | (GLfloat) v[2], (GLfloat) v[3] ); |
||
1049 | } |
||
1050 | |||
1051 | static void |
||
1052 | loopback_EvalCoord2dv( const GLdouble *u ) |
||
1053 | { |
||
1054 | EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] ); |
||
1055 | } |
||
1056 | |||
1057 | static void |
||
1058 | loopback_EvalCoord2fv( const GLfloat *u ) |
||
1059 | { |
||
1060 | EVALCOORD2( u[0], u[1] ); |
||
1061 | } |
||
1062 | |||
1063 | static void |
||
1064 | loopback_EvalCoord2d( GLdouble u, GLdouble v ) |
||
1065 | { |
||
1066 | EVALCOORD2( (GLfloat) u, (GLfloat) v ); |
||
1067 | } |
||
1068 | |||
1069 | static void |
||
1070 | loopback_EvalCoord1dv( const GLdouble *u ) |
||
1071 | { |
||
1072 | EVALCOORD1( (GLfloat) *u ); |
||
1073 | } |
||
1074 | |||
1075 | static void |
||
1076 | loopback_EvalCoord1fv( const GLfloat *u ) |
||
1077 | { |
||
1078 | EVALCOORD1( (GLfloat) *u ); |
||
1079 | } |
||
1080 | |||
1081 | static void |
||
1082 | loopback_EvalCoord1d( GLdouble u ) |
||
1083 | { |
||
1084 | EVALCOORD1( (GLfloat) u ); |
||
1085 | } |
||
1086 | |||
1087 | static void |
||
1088 | loopback_Materialf( GLenum face, GLenum pname, GLfloat param ) |
||
1089 | { |
||
1090 | GLfloat fparam[4]; |
||
1091 | fparam[0] = param; |
||
1092 | MATERIALFV( face, pname, fparam ); |
||
1093 | } |
||
1094 | |||
1095 | static void |
||
1096 | loopback_Materiali(GLenum face, GLenum pname, GLint param ) |
||
1097 | { |
||
1098 | GLfloat p = (GLfloat) param; |
||
1099 | MATERIALFV(face, pname, &p); |
||
1100 | } |
||
1101 | |||
1102 | static void |
||
1103 | loopback_Materialiv(GLenum face, GLenum pname, const GLint *params ) |
||
1104 | { |
||
1105 | GLfloat fparam[4]; |
||
1106 | switch (pname) { |
||
1107 | case GL_AMBIENT: |
||
1108 | case GL_DIFFUSE: |
||
1109 | case GL_SPECULAR: |
||
1110 | case GL_EMISSION: |
||
1111 | case GL_AMBIENT_AND_DIFFUSE: |
||
1112 | fparam[0] = INT_TO_FLOAT( params[0] ); |
||
1113 | fparam[1] = INT_TO_FLOAT( params[1] ); |
||
1114 | fparam[2] = INT_TO_FLOAT( params[2] ); |
||
1115 | fparam[3] = INT_TO_FLOAT( params[3] ); |
||
1116 | break; |
||
1117 | case GL_SHININESS: |
||
1118 | fparam[0] = (GLfloat) params[0]; |
||
1119 | break; |
||
1120 | case GL_COLOR_INDEXES: |
||
1121 | fparam[0] = (GLfloat) params[0]; |
||
1122 | fparam[1] = (GLfloat) params[1]; |
||
1123 | fparam[2] = (GLfloat) params[2]; |
||
1124 | break; |
||
1125 | default: |
||
1126 | ; |
||
1127 | } |
||
1128 | MATERIALFV(face, pname, fparam); |
||
1129 | } |
||
1130 | |||
1131 | |||
1132 | static void |
||
1133 | loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) |
||
1134 | { |
||
1135 | RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); |
||
1136 | } |
||
1137 | |||
1138 | static void |
||
1139 | loopback_Rectdv(const GLdouble *v1, const GLdouble *v2) |
||
1140 | { |
||
1141 | RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); |
||
1142 | } |
||
1143 | |||
1144 | static void |
||
1145 | loopback_Rectfv(const GLfloat *v1, const GLfloat *v2) |
||
1146 | { |
||
1147 | RECTF(v1[0], v1[1], v2[0], v2[1]); |
||
1148 | } |
||
1149 | |||
1150 | static void |
||
1151 | loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2) |
||
1152 | { |
||
1153 | RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); |
||
1154 | } |
||
1155 | |||
1156 | static void |
||
1157 | loopback_Rectiv(const GLint *v1, const GLint *v2) |
||
1158 | { |
||
1159 | RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); |
||
1160 | } |
||
1161 | |||
1162 | static void |
||
1163 | loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) |
||
1164 | { |
||
1165 | RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2); |
||
1166 | } |
||
1167 | |||
1168 | static void |
||
1169 | loopback_Rectsv(const GLshort *v1, const GLshort *v2) |
||
1170 | { |
||
1171 | RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]); |
||
1172 | } |
||
1173 | |||
1174 | static void |
||
1175 | loopback_SecondaryColor3bEXT( GLbyte red, GLbyte green, GLbyte blue ) |
||
1176 | { |
||
1177 | SECONDARYCOLORUB( BYTE_TO_UBYTE(red), |
||
1178 | BYTE_TO_UBYTE(green), |
||
1179 | BYTE_TO_UBYTE(blue) ); |
||
1180 | } |
||
1181 | |||
1182 | static void |
||
1183 | loopback_SecondaryColor3dEXT( GLdouble red, GLdouble green, GLdouble blue ) |
||
1184 | { |
||
1185 | GLubyte col[3]; |
||
1186 | GLfloat r = (GLfloat) red; |
||
1187 | GLfloat g = (GLfloat) green; |
||
1188 | GLfloat b = (GLfloat) blue; |
||
1189 | UNCLAMPED_FLOAT_TO_UBYTE(col[0], r); |
||
1190 | UNCLAMPED_FLOAT_TO_UBYTE(col[1], g); |
||
1191 | UNCLAMPED_FLOAT_TO_UBYTE(col[2], b); |
||
1192 | SECONDARYCOLORUB( col[0], col[1], col[2] ); |
||
1193 | } |
||
1194 | |||
1195 | static void |
||
1196 | loopback_SecondaryColor3iEXT( GLint red, GLint green, GLint blue ) |
||
1197 | { |
||
1198 | SECONDARYCOLORUB( INT_TO_UBYTE(red), |
||
1199 | INT_TO_UBYTE(green), |
||
1200 | INT_TO_UBYTE(blue)); |
||
1201 | } |
||
1202 | |||
1203 | static void |
||
1204 | loopback_SecondaryColor3sEXT( GLshort red, GLshort green, GLshort blue ) |
||
1205 | { |
||
1206 | SECONDARYCOLORUB(SHORT_TO_UBYTE(red), |
||
1207 | SHORT_TO_UBYTE(green), |
||
1208 | SHORT_TO_UBYTE(blue)); |
||
1209 | } |
||
1210 | |||
1211 | static void |
||
1212 | loopback_SecondaryColor3uiEXT( GLuint red, GLuint green, GLuint blue ) |
||
1213 | { |
||
1214 | SECONDARYCOLORUB(UINT_TO_UBYTE(red), |
||
1215 | UINT_TO_UBYTE(green), |
||
1216 | UINT_TO_UBYTE(blue)); |
||
1217 | } |
||
1218 | |||
1219 | static void |
||
1220 | loopback_SecondaryColor3usEXT( GLushort red, GLushort green, GLushort blue ) |
||
1221 | { |
||
1222 | SECONDARYCOLORUB(USHORT_TO_UBYTE(red), |
||
1223 | USHORT_TO_UBYTE(green), |
||
1224 | USHORT_TO_UBYTE(blue)); |
||
1225 | } |
||
1226 | |||
1227 | static void |
||
1228 | loopback_SecondaryColor3bvEXT( const GLbyte *v ) |
||
1229 | { |
||
1230 | const GLfloat a = BYTE_TO_FLOAT(v[0]); |
||
1231 | const GLfloat b = BYTE_TO_FLOAT(v[1]); |
||
1232 | const GLfloat c = BYTE_TO_FLOAT(v[2]); |
||
1233 | SECONDARYCOLORF(a,b,c); |
||
1234 | } |
||
1235 | |||
1236 | static void |
||
1237 | loopback_SecondaryColor3dvEXT( const GLdouble *v ) |
||
1238 | { |
||
1239 | GLubyte col[3]; |
||
1240 | GLfloat r = (GLfloat) v[0]; |
||
1241 | GLfloat g = (GLfloat) v[1]; |
||
1242 | GLfloat b = (GLfloat) v[2]; |
||
1243 | UNCLAMPED_FLOAT_TO_UBYTE(col[0], r); |
||
1244 | UNCLAMPED_FLOAT_TO_UBYTE(col[1], g); |
||
1245 | UNCLAMPED_FLOAT_TO_UBYTE(col[2], b); |
||
1246 | SECONDARYCOLORUB( col[0], col[1], col[2] ); |
||
1247 | } |
||
1248 | |||
1249 | static void |
||
1250 | loopback_SecondaryColor3ivEXT( const GLint *v ) |
||
1251 | { |
||
1252 | SECONDARYCOLORUB(INT_TO_UBYTE(v[0]), |
||
1253 | INT_TO_UBYTE(v[1]), |
||
1254 | INT_TO_UBYTE(v[2])); |
||
1255 | } |
||
1256 | |||
1257 | static void |
||
1258 | loopback_SecondaryColor3svEXT( const GLshort *v ) |
||
1259 | { |
||
1260 | SECONDARYCOLORUB(SHORT_TO_UBYTE(v[0]), |
||
1261 | SHORT_TO_UBYTE(v[1]), |
||
1262 | SHORT_TO_UBYTE(v[2])); |
||
1263 | } |
||
1264 | |||
1265 | static void |
||
1266 | loopback_SecondaryColor3uivEXT( const GLuint *v ) |
||
1267 | { |
||
1268 | SECONDARYCOLORUB(UINT_TO_UBYTE(v[0]), |
||
1269 | UINT_TO_UBYTE(v[1]), |
||
1270 | UINT_TO_UBYTE(v[2])); |
||
1271 | } |
||
1272 | |||
1273 | static void |
||
1274 | loopback_SecondaryColor3usvEXT( const GLushort *v ) |
||
1275 | { |
||
1276 | SECONDARYCOLORUB(USHORT_TO_UBYTE(v[0]), |
||
1277 | USHORT_TO_UBYTE(v[1]), |
||
1278 | USHORT_TO_UBYTE(v[2])); |
||
1279 | } |
||
1280 | |||
1281 | |||
1282 | static void |
||
1283 | loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue ) |
||
1284 | { |
||
1285 | SECONDARYCOLORF( BYTE_TO_FLOAT(red), |
||
1286 | BYTE_TO_FLOAT(green), |
||
1287 | BYTE_TO_FLOAT(blue) ); |
||
1288 | } |
||
1289 | |||
1290 | static void |
||
1291 | loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue ) |
||
1292 | { |
||
1293 | SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue ); |
||
1294 | } |
||
1295 | |||
1296 | static void |
||
1297 | loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue ) |
||
1298 | { |
||
1299 | SECONDARYCOLORF( INT_TO_FLOAT(red), |
||
1300 | INT_TO_FLOAT(green), |
||
1301 | INT_TO_FLOAT(blue)); |
||
1302 | } |
||
1303 | |||
1304 | static void |
||
1305 | loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue ) |
||
1306 | { |
||
1307 | SECONDARYCOLORF(SHORT_TO_FLOAT(red), |
||
1308 | SHORT_TO_FLOAT(green), |
||
1309 | SHORT_TO_FLOAT(blue)); |
||
1310 | } |
||
1311 | |||
1312 | static void |
||
1313 | loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue ) |
||
1314 | { |
||
1315 | SECONDARYCOLORF(UINT_TO_FLOAT(red), |
||
1316 | UINT_TO_FLOAT(green), |
||
1317 | UINT_TO_FLOAT(blue)); |
||
1318 | } |
||
1319 | |||
1320 | static void |
||
1321 | loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue ) |
||
1322 | { |
||
1323 | SECONDARYCOLORF(USHORT_TO_FLOAT(red), |
||
1324 | USHORT_TO_FLOAT(green), |
||
1325 | USHORT_TO_FLOAT(blue)); |
||
1326 | } |
||
1327 | |||
1328 | static void |
||
1329 | loopback_SecondaryColor3bvEXT_f( const GLbyte *v ) |
||
1330 | { |
||
1331 | SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]), |
||
1332 | BYTE_TO_FLOAT(v[1]), |
||
1333 | BYTE_TO_FLOAT(v[2])); |
||
1334 | } |
||
1335 | |||
1336 | static void |
||
1337 | loopback_SecondaryColor3dvEXT_f( const GLdouble *v ) |
||
1338 | { |
||
1339 | SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); |
||
1340 | } |
||
1341 | static void |
||
1342 | loopback_SecondaryColor3ivEXT_f( const GLint *v ) |
||
1343 | { |
||
1344 | SECONDARYCOLORF(INT_TO_FLOAT(v[0]), |
||
1345 | INT_TO_FLOAT(v[1]), |
||
1346 | INT_TO_FLOAT(v[2])); |
||
1347 | } |
||
1348 | |||
1349 | static void |
||
1350 | loopback_SecondaryColor3svEXT_f( const GLshort *v ) |
||
1351 | { |
||
1352 | SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]), |
||
1353 | SHORT_TO_FLOAT(v[1]), |
||
1354 | SHORT_TO_FLOAT(v[2])); |
||
1355 | } |
||
1356 | |||
1357 | static void |
||
1358 | loopback_SecondaryColor3uivEXT_f( const GLuint *v ) |
||
1359 | { |
||
1360 | SECONDARYCOLORF(UINT_TO_FLOAT(v[0]), |
||
1361 | UINT_TO_FLOAT(v[1]), |
||
1362 | UINT_TO_FLOAT(v[2])); |
||
1363 | } |
||
1364 | |||
1365 | static void |
||
1366 | loopback_SecondaryColor3usvEXT_f( const GLushort *v ) |
||
1367 | { |
||
1368 | SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]), |
||
1369 | USHORT_TO_FLOAT(v[1]), |
||
1370 | USHORT_TO_FLOAT(v[2])); |
||
1371 | } |
||
1372 | |||
1373 | |||
1374 | /* |
||
1375 | * GL_NV_vertex_program |
||
1376 | */ |
||
1377 | |||
1378 | static void |
||
1379 | loopback_VertexAttrib1sNV(GLuint index, GLshort x) |
||
1380 | { |
||
1381 | ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F); |
||
1382 | } |
||
1383 | |||
1384 | static void |
||
1385 | loopback_VertexAttrib1fNV(GLuint index, GLfloat x) |
||
1386 | { |
||
1387 | ATTRIB(index, x, 0.0F, 0.0F, 1.0F); |
||
1388 | } |
||
1389 | |||
1390 | static void |
||
1391 | loopback_VertexAttrib1dNV(GLuint index, GLdouble x) |
||
1392 | { |
||
1393 | ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F); |
||
1394 | } |
||
1395 | |||
1396 | static void |
||
1397 | loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y) |
||
1398 | { |
||
1399 | ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F); |
||
1400 | } |
||
1401 | |||
1402 | static void |
||
1403 | loopback_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) |
||
1404 | { |
||
1405 | ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F); |
||
1406 | } |
||
1407 | |||
1408 | static void |
||
1409 | loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y) |
||
1410 | { |
||
1411 | ATTRIB(index, (GLfloat) x, (GLfloat) y, 0.0F, 1.0F); |
||
1412 | } |
||
1413 | |||
1414 | static void |
||
1415 | loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z) |
||
1416 | { |
||
1417 | ATTRIB(index, (GLfloat) x, y, z, 1.0F); |
||
1418 | } |
||
1419 | |||
1420 | static void |
||
1421 | loopback_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) |
||
1422 | { |
||
1423 | ATTRIB(index, x, y, z, 1.0F); |
||
1424 | } |
||
1425 | |||
1426 | static void |
||
1427 | loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z) |
||
1428 | { |
||
1429 | ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F); |
||
1430 | } |
||
1431 | |||
1432 | static void |
||
1433 | loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) |
||
1434 | { |
||
1435 | ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); |
||
1436 | } |
||
1437 | |||
1438 | static void |
||
1439 | loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) |
||
1440 | { |
||
1441 | ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w); |
||
1442 | } |
||
1443 | |||
1444 | static void |
||
1445 | loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) |
||
1446 | { |
||
1447 | ATTRIB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), |
||
1448 | UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w)); |
||
1449 | } |
||
1450 | |||
1451 | static void |
||
1452 | loopback_VertexAttrib1svNV(GLuint index, const GLshort *v) |
||
1453 | { |
||
1454 | ATTRIB(index, (GLfloat) v[0], 0.0F, 0.0F, 1.0F); |
||
1455 | } |
||
1456 | |||
1457 | static void |
||
1458 | loopback_VertexAttrib1fvNV(GLuint index, const GLfloat *v) |
||
1459 | { |
||
1460 | ATTRIB(index, v[0], 0.0F, 0.0F, 1.0F); |
||
1461 | } |
||
1462 | |||
1463 | static void |
||
1464 | loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v) |
||
1465 | { |
||
1466 | ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); |
||
1467 | } |
||
1468 | |||
1469 | static void |
||
1470 | loopback_VertexAttrib2svNV(GLuint index, const GLshort *v) |
||
1471 | { |
||
1472 | ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); |
||
1473 | } |
||
1474 | |||
1475 | static void |
||
1476 | loopback_VertexAttrib2fvNV(GLuint index, const GLfloat *v) |
||
1477 | { |
||
1478 | ATTRIB(index, v[0], v[1], 0.0F, 1.0F); |
||
1479 | } |
||
1480 | |||
1481 | static void |
||
1482 | loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v) |
||
1483 | { |
||
1484 | ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F); |
||
1485 | } |
||
1486 | |||
1487 | static void |
||
1488 | loopback_VertexAttrib3svNV(GLuint index, const GLshort *v) |
||
1489 | { |
||
1490 | ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); |
||
1491 | } |
||
1492 | |||
1493 | static void |
||
1494 | loopback_VertexAttrib3fvNV(GLuint index, const GLfloat *v) |
||
1495 | { |
||
1496 | ATTRIB(index, v[0], v[1], v[2], 1.0F); |
||
1497 | } |
||
1498 | |||
1499 | static void |
||
1500 | loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v) |
||
1501 | { |
||
1502 | ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); |
||
1503 | } |
||
1504 | |||
1505 | static void |
||
1506 | loopback_VertexAttrib4svNV(GLuint index, const GLshort *v) |
||
1507 | { |
||
1508 | ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F); |
||
1509 | } |
||
1510 | |||
1511 | static void |
||
1512 | loopback_VertexAttrib4fvNV(GLuint index, const GLfloat *v) |
||
1513 | { |
||
1514 | ATTRIB(index, v[0], v[1], v[2], v[3]); |
||
1515 | } |
||
1516 | |||
1517 | static void |
||
1518 | loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v) |
||
1519 | { |
||
1520 | ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]); |
||
1521 | } |
||
1522 | |||
1523 | static void |
||
1524 | loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v) |
||
1525 | { |
||
1526 | ATTRIB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), |
||
1527 | UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3])); |
||
1528 | } |
||
1529 | |||
1530 | |||
1531 | static void |
||
1532 | loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v) |
||
1533 | { |
||
1534 | GLint i; |
||
1535 | for (i = n - 1; i >= 0; i--) |
||
1536 | loopback_VertexAttrib1svNV(index + i, v + i); |
||
1537 | } |
||
1538 | |||
1539 | static void |
||
1540 | loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v) |
||
1541 | { |
||
1542 | GLint i; |
||
1543 | for (i = n - 1; i >= 0; i--) |
||
1544 | loopback_VertexAttrib1fvNV(index + i, v + i); |
||
1545 | } |
||
1546 | |||
1547 | static void |
||
1548 | loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v) |
||
1549 | { |
||
1550 | GLint i; |
||
1551 | for (i = n - 1; i >= 0; i--) |
||
1552 | loopback_VertexAttrib1dvNV(index + i, v + i); |
||
1553 | } |
||
1554 | |||
1555 | static void |
||
1556 | loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v) |
||
1557 | { |
||
1558 | GLint i; |
||
1559 | for (i = n - 1; i >= 0; i--) |
||
1560 | loopback_VertexAttrib2svNV(index + i, v + 2 * i); |
||
1561 | } |
||
1562 | |||
1563 | static void |
||
1564 | loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v) |
||
1565 | { |
||
1566 | GLint i; |
||
1567 | for (i = n - 1; i >= 0; i--) |
||
1568 | loopback_VertexAttrib2fvNV(index + i, v + 2 * i); |
||
1569 | } |
||
1570 | |||
1571 | static void |
||
1572 | loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v) |
||
1573 | { |
||
1574 | GLint i; |
||
1575 | for (i = n - 1; i >= 0; i--) |
||
1576 | loopback_VertexAttrib2dvNV(index + i, v + 2 * i); |
||
1577 | } |
||
1578 | |||
1579 | static void |
||
1580 | loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v) |
||
1581 | { |
||
1582 | GLint i; |
||
1583 | for (i = n - 1; i >= 0; i--) |
||
1584 | loopback_VertexAttrib3svNV(index + i, v + 3 * i); |
||
1585 | } |
||
1586 | |||
1587 | static void |
||
1588 | loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v) |
||
1589 | { |
||
1590 | GLint i; |
||
1591 | for (i = n - 1; i >= 0; i--) |
||
1592 | loopback_VertexAttrib3fvNV(index + i, v + 3 * i); |
||
1593 | } |
||
1594 | |||
1595 | static void |
||
1596 | loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v) |
||
1597 | { |
||
1598 | GLint i; |
||
1599 | for (i = n - 1; i >= 0; i--) |
||
1600 | loopback_VertexAttrib3dvNV(index + i, v + 3 * i); |
||
1601 | } |
||
1602 | |||
1603 | static void |
||
1604 | loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v) |
||
1605 | { |
||
1606 | GLint i; |
||
1607 | for (i = n - 1; i >= 0; i--) |
||
1608 | loopback_VertexAttrib4svNV(index + i, v + 4 * i); |
||
1609 | } |
||
1610 | |||
1611 | static void |
||
1612 | loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v) |
||
1613 | { |
||
1614 | GLint i; |
||
1615 | for (i = n - 1; i >= 0; i--) |
||
1616 | loopback_VertexAttrib4fvNV(index + i, v + 4 * i); |
||
1617 | } |
||
1618 | |||
1619 | static void |
||
1620 | loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v) |
||
1621 | { |
||
1622 | GLint i; |
||
1623 | for (i = n - 1; i >= 0; i--) |
||
1624 | loopback_VertexAttrib4dvNV(index + i, v + 4 * i); |
||
1625 | } |
||
1626 | |||
1627 | static void |
||
1628 | loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v) |
||
1629 | { |
||
1630 | GLint i; |
||
1631 | for (i = n - 1; i >= 0; i--) |
||
1632 | loopback_VertexAttrib4ubvNV(index + i, v + 4 * i); |
||
1633 | } |
||
1634 | |||
1635 | |||
1636 | |||
1637 | void |
||
1638 | _mesa_loopback_prefer_float( struct _glapi_table *dest, |
||
1639 | GLboolean prefer_float_colors ) |
||
1640 | { |
||
1641 | if (!prefer_float_colors) { |
||
1642 | dest->Color3b = loopback_Color3b; |
||
1643 | dest->Color3d = loopback_Color3d; |
||
1644 | dest->Color3i = loopback_Color3i; |
||
1645 | dest->Color3s = loopback_Color3s; |
||
1646 | dest->Color3ui = loopback_Color3ui; |
||
1647 | dest->Color3us = loopback_Color3us; |
||
1648 | dest->Color4b = loopback_Color4b; |
||
1649 | dest->Color4d = loopback_Color4d; |
||
1650 | dest->Color4i = loopback_Color4i; |
||
1651 | dest->Color4s = loopback_Color4s; |
||
1652 | dest->Color4ui = loopback_Color4ui; |
||
1653 | dest->Color4us = loopback_Color4us; |
||
1654 | dest->Color3bv = loopback_Color3bv; |
||
1655 | dest->Color3dv = loopback_Color3dv; |
||
1656 | dest->Color3iv = loopback_Color3iv; |
||
1657 | dest->Color3sv = loopback_Color3sv; |
||
1658 | dest->Color3uiv = loopback_Color3uiv; |
||
1659 | dest->Color3usv = loopback_Color3usv; |
||
1660 | dest->Color4bv = loopback_Color4bv; |
||
1661 | dest->Color4dv = loopback_Color4dv; |
||
1662 | dest->Color4iv = loopback_Color4iv; |
||
1663 | dest->Color4sv = loopback_Color4sv; |
||
1664 | dest->Color4uiv = loopback_Color4uiv; |
||
1665 | dest->Color4usv = loopback_Color4usv; |
||
1666 | dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT; |
||
1667 | dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT; |
||
1668 | dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT; |
||
1669 | dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT; |
||
1670 | dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT; |
||
1671 | dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT; |
||
1672 | dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT; |
||
1673 | dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT; |
||
1674 | dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT; |
||
1675 | dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT; |
||
1676 | dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT; |
||
1677 | dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT; |
||
1678 | } |
||
1679 | else { |
||
1680 | dest->Color3b = loopback_Color3b_f; |
||
1681 | dest->Color3d = loopback_Color3d_f; |
||
1682 | dest->Color3i = loopback_Color3i_f; |
||
1683 | dest->Color3s = loopback_Color3s_f; |
||
1684 | dest->Color3ui = loopback_Color3ui_f; |
||
1685 | dest->Color3us = loopback_Color3us_f; |
||
1686 | dest->Color4b = loopback_Color4b_f; |
||
1687 | dest->Color4d = loopback_Color4d_f; |
||
1688 | dest->Color4i = loopback_Color4i_f; |
||
1689 | dest->Color4s = loopback_Color4s_f; |
||
1690 | dest->Color4ui = loopback_Color4ui_f; |
||
1691 | dest->Color4us = loopback_Color4us_f; |
||
1692 | dest->Color3bv = loopback_Color3bv_f; |
||
1693 | dest->Color3dv = loopback_Color3dv_f; |
||
1694 | dest->Color3iv = loopback_Color3iv_f; |
||
1695 | dest->Color3sv = loopback_Color3sv_f; |
||
1696 | dest->Color3uiv = loopback_Color3uiv_f; |
||
1697 | dest->Color3usv = loopback_Color3usv_f; |
||
1698 | dest->Color4bv = loopback_Color4bv_f; |
||
1699 | dest->Color4dv = loopback_Color4dv_f; |
||
1700 | dest->Color4iv = loopback_Color4iv_f; |
||
1701 | dest->Color4sv = loopback_Color4sv_f; |
||
1702 | dest->Color4uiv = loopback_Color4uiv_f; |
||
1703 | dest->Color4usv = loopback_Color4usv_f; |
||
1704 | dest->SecondaryColor3bEXT = loopback_SecondaryColor3bEXT_f; |
||
1705 | dest->SecondaryColor3dEXT = loopback_SecondaryColor3dEXT_f; |
||
1706 | dest->SecondaryColor3iEXT = loopback_SecondaryColor3iEXT_f; |
||
1707 | dest->SecondaryColor3sEXT = loopback_SecondaryColor3sEXT_f; |
||
1708 | dest->SecondaryColor3uiEXT = loopback_SecondaryColor3uiEXT_f; |
||
1709 | dest->SecondaryColor3usEXT = loopback_SecondaryColor3usEXT_f; |
||
1710 | dest->SecondaryColor3bvEXT = loopback_SecondaryColor3bvEXT_f; |
||
1711 | dest->SecondaryColor3dvEXT = loopback_SecondaryColor3dvEXT_f; |
||
1712 | dest->SecondaryColor3ivEXT = loopback_SecondaryColor3ivEXT_f; |
||
1713 | dest->SecondaryColor3svEXT = loopback_SecondaryColor3svEXT_f; |
||
1714 | dest->SecondaryColor3uivEXT = loopback_SecondaryColor3uivEXT_f; |
||
1715 | dest->SecondaryColor3usvEXT = loopback_SecondaryColor3usvEXT_f; |
||
1716 | } |
||
1717 | } |
||
1718 | |||
1719 | /* Passing prefer_float_colors as true will mean that all colors |
||
1720 | * *except* Color{34}ub{v} are passed as floats. Setting it false will |
||
1721 | * mean all colors *except* Color{34}f{v} are passed as ubytes. |
||
1722 | * |
||
1723 | * This code never registers handlers for any of the entry points |
||
1724 | * listed in vtxfmt.h. |
||
1725 | */ |
||
1726 | void |
||
1727 | _mesa_loopback_init_api_table( struct _glapi_table *dest, |
||
1728 | GLboolean prefer_float_colors ) |
||
1729 | { |
||
1730 | _mesa_loopback_prefer_float( dest, prefer_float_colors ); |
||
1731 | |||
1732 | dest->Indexd = loopback_Indexd; |
||
1733 | dest->Indexf = loopback_Indexf; |
||
1734 | dest->Indexs = loopback_Indexs; |
||
1735 | dest->Indexub = loopback_Indexub; |
||
1736 | dest->Indexdv = loopback_Indexdv; |
||
1737 | dest->Indexfv = loopback_Indexfv; |
||
1738 | dest->Indexiv = loopback_Indexiv; |
||
1739 | dest->Indexsv = loopback_Indexsv; |
||
1740 | dest->Indexubv = loopback_Indexubv; |
||
1741 | dest->Normal3b = loopback_Normal3b; |
||
1742 | dest->Normal3d = loopback_Normal3d; |
||
1743 | dest->Normal3i = loopback_Normal3i; |
||
1744 | dest->Normal3s = loopback_Normal3s; |
||
1745 | dest->Normal3bv = loopback_Normal3bv; |
||
1746 | dest->Normal3dv = loopback_Normal3dv; |
||
1747 | dest->Normal3iv = loopback_Normal3iv; |
||
1748 | dest->Normal3sv = loopback_Normal3sv; |
||
1749 | dest->TexCoord1d = loopback_TexCoord1d; |
||
1750 | dest->TexCoord1i = loopback_TexCoord1i; |
||
1751 | dest->TexCoord1s = loopback_TexCoord1s; |
||
1752 | dest->TexCoord2d = loopback_TexCoord2d; |
||
1753 | dest->TexCoord2s = loopback_TexCoord2s; |
||
1754 | dest->TexCoord2i = loopback_TexCoord2i; |
||
1755 | dest->TexCoord3d = loopback_TexCoord3d; |
||
1756 | dest->TexCoord3i = loopback_TexCoord3i; |
||
1757 | dest->TexCoord3s = loopback_TexCoord3s; |
||
1758 | dest->TexCoord4d = loopback_TexCoord4d; |
||
1759 | dest->TexCoord4i = loopback_TexCoord4i; |
||
1760 | dest->TexCoord4s = loopback_TexCoord4s; |
||
1761 | dest->TexCoord1dv = loopback_TexCoord1dv; |
||
1762 | dest->TexCoord1iv = loopback_TexCoord1iv; |
||
1763 | dest->TexCoord1sv = loopback_TexCoord1sv; |
||
1764 | dest->TexCoord2dv = loopback_TexCoord2dv; |
||
1765 | dest->TexCoord2iv = loopback_TexCoord2iv; |
||
1766 | dest->TexCoord2sv = loopback_TexCoord2sv; |
||
1767 | dest->TexCoord3dv = loopback_TexCoord3dv; |
||
1768 | dest->TexCoord3iv = loopback_TexCoord3iv; |
||
1769 | dest->TexCoord3sv = loopback_TexCoord3sv; |
||
1770 | dest->TexCoord4dv = loopback_TexCoord4dv; |
||
1771 | dest->TexCoord4iv = loopback_TexCoord4iv; |
||
1772 | dest->TexCoord4sv = loopback_TexCoord4sv; |
||
1773 | dest->Vertex2d = loopback_Vertex2d; |
||
1774 | dest->Vertex2i = loopback_Vertex2i; |
||
1775 | dest->Vertex2s = loopback_Vertex2s; |
||
1776 | dest->Vertex3d = loopback_Vertex3d; |
||
1777 | dest->Vertex3i = loopback_Vertex3i; |
||
1778 | dest->Vertex3s = loopback_Vertex3s; |
||
1779 | dest->Vertex4d = loopback_Vertex4d; |
||
1780 | dest->Vertex4i = loopback_Vertex4i; |
||
1781 | dest->Vertex4s = loopback_Vertex4s; |
||
1782 | dest->Vertex2dv = loopback_Vertex2dv; |
||
1783 | dest->Vertex2iv = loopback_Vertex2iv; |
||
1784 | dest->Vertex2sv = loopback_Vertex2sv; |
||
1785 | dest->Vertex3dv = loopback_Vertex3dv; |
||
1786 | dest->Vertex3iv = loopback_Vertex3iv; |
||
1787 | dest->Vertex3sv = loopback_Vertex3sv; |
||
1788 | dest->Vertex4dv = loopback_Vertex4dv; |
||
1789 | dest->Vertex4iv = loopback_Vertex4iv; |
||
1790 | dest->Vertex4sv = loopback_Vertex4sv; |
||
1791 | dest->MultiTexCoord1dARB = loopback_MultiTexCoord1dARB; |
||
1792 | dest->MultiTexCoord1dvARB = loopback_MultiTexCoord1dvARB; |
||
1793 | dest->MultiTexCoord1iARB = loopback_MultiTexCoord1iARB; |
||
1794 | dest->MultiTexCoord1ivARB = loopback_MultiTexCoord1ivARB; |
||
1795 | dest->MultiTexCoord1sARB = loopback_MultiTexCoord1sARB; |
||
1796 | dest->MultiTexCoord1svARB = loopback_MultiTexCoord1svARB; |
||
1797 | dest->MultiTexCoord2dARB = loopback_MultiTexCoord2dARB; |
||
1798 | dest->MultiTexCoord2dvARB = loopback_MultiTexCoord2dvARB; |
||
1799 | dest->MultiTexCoord2iARB = loopback_MultiTexCoord2iARB; |
||
1800 | dest->MultiTexCoord2ivARB = loopback_MultiTexCoord2ivARB; |
||
1801 | dest->MultiTexCoord2sARB = loopback_MultiTexCoord2sARB; |
||
1802 | dest->MultiTexCoord2svARB = loopback_MultiTexCoord2svARB; |
||
1803 | dest->MultiTexCoord3dARB = loopback_MultiTexCoord3dARB; |
||
1804 | dest->MultiTexCoord3dvARB = loopback_MultiTexCoord3dvARB; |
||
1805 | dest->MultiTexCoord3iARB = loopback_MultiTexCoord3iARB; |
||
1806 | dest->MultiTexCoord3ivARB = loopback_MultiTexCoord3ivARB; |
||
1807 | dest->MultiTexCoord3sARB = loopback_MultiTexCoord3sARB; |
||
1808 | dest->MultiTexCoord3svARB = loopback_MultiTexCoord3svARB; |
||
1809 | dest->MultiTexCoord4dARB = loopback_MultiTexCoord4dARB; |
||
1810 | dest->MultiTexCoord4dvARB = loopback_MultiTexCoord4dvARB; |
||
1811 | dest->MultiTexCoord4iARB = loopback_MultiTexCoord4iARB; |
||
1812 | dest->MultiTexCoord4ivARB = loopback_MultiTexCoord4ivARB; |
||
1813 | dest->MultiTexCoord4sARB = loopback_MultiTexCoord4sARB; |
||
1814 | dest->MultiTexCoord4svARB = loopback_MultiTexCoord4svARB; |
||
1815 | dest->EvalCoord2dv = loopback_EvalCoord2dv; |
||
1816 | dest->EvalCoord2fv = loopback_EvalCoord2fv; |
||
1817 | dest->EvalCoord2d = loopback_EvalCoord2d; |
||
1818 | dest->EvalCoord1dv = loopback_EvalCoord1dv; |
||
1819 | dest->EvalCoord1fv = loopback_EvalCoord1fv; |
||
1820 | dest->EvalCoord1d = loopback_EvalCoord1d; |
||
1821 | dest->Materialf = loopback_Materialf; |
||
1822 | dest->Materiali = loopback_Materiali; |
||
1823 | dest->Materialiv = loopback_Materialiv; |
||
1824 | dest->Rectd = loopback_Rectd; |
||
1825 | dest->Rectdv = loopback_Rectdv; |
||
1826 | dest->Rectfv = loopback_Rectfv; |
||
1827 | dest->Recti = loopback_Recti; |
||
1828 | dest->Rectiv = loopback_Rectiv; |
||
1829 | dest->Rects = loopback_Rects; |
||
1830 | dest->Rectsv = loopback_Rectsv; |
||
1831 | dest->FogCoorddEXT = loopback_FogCoorddEXT; |
||
1832 | dest->FogCoorddvEXT = loopback_FogCoorddvEXT; |
||
1833 | |||
1834 | dest->VertexAttrib1sNV = loopback_VertexAttrib1sNV; |
||
1835 | dest->VertexAttrib1fNV = loopback_VertexAttrib1fNV; |
||
1836 | dest->VertexAttrib1dNV = loopback_VertexAttrib1dNV; |
||
1837 | dest->VertexAttrib2sNV = loopback_VertexAttrib2sNV; |
||
1838 | dest->VertexAttrib2fNV = loopback_VertexAttrib2fNV; |
||
1839 | dest->VertexAttrib2dNV = loopback_VertexAttrib2dNV; |
||
1840 | dest->VertexAttrib3sNV = loopback_VertexAttrib3sNV; |
||
1841 | dest->VertexAttrib3fNV = loopback_VertexAttrib3fNV; |
||
1842 | dest->VertexAttrib3dNV = loopback_VertexAttrib3dNV; |
||
1843 | dest->VertexAttrib4sNV = loopback_VertexAttrib4sNV; |
||
1844 | dest->VertexAttrib4dNV = loopback_VertexAttrib4dNV; |
||
1845 | dest->VertexAttrib4ubNV = loopback_VertexAttrib4ubNV; |
||
1846 | |||
1847 | dest->VertexAttrib1svNV = loopback_VertexAttrib1svNV; |
||
1848 | dest->VertexAttrib1fvNV = loopback_VertexAttrib1fvNV; |
||
1849 | dest->VertexAttrib1dvNV = loopback_VertexAttrib1dvNV; |
||
1850 | dest->VertexAttrib2svNV = loopback_VertexAttrib2svNV; |
||
1851 | dest->VertexAttrib2fvNV = loopback_VertexAttrib2fvNV; |
||
1852 | dest->VertexAttrib2dvNV = loopback_VertexAttrib2dvNV; |
||
1853 | dest->VertexAttrib3svNV = loopback_VertexAttrib3svNV; |
||
1854 | dest->VertexAttrib3fvNV = loopback_VertexAttrib3fvNV; |
||
1855 | dest->VertexAttrib3dvNV = loopback_VertexAttrib3dvNV; |
||
1856 | dest->VertexAttrib4svNV = loopback_VertexAttrib4svNV; |
||
1857 | dest->VertexAttrib4fvNV = loopback_VertexAttrib4fvNV; |
||
1858 | dest->VertexAttrib4dvNV = loopback_VertexAttrib4dvNV; |
||
1859 | dest->VertexAttrib4ubvNV = loopback_VertexAttrib4ubvNV; |
||
1860 | |||
1861 | dest->VertexAttribs1svNV = loopback_VertexAttribs1svNV; |
||
1862 | dest->VertexAttribs1fvNV = loopback_VertexAttribs1fvNV; |
||
1863 | dest->VertexAttribs1dvNV = loopback_VertexAttribs1dvNV; |
||
1864 | dest->VertexAttribs2svNV = loopback_VertexAttribs2svNV; |
||
1865 | dest->VertexAttribs2fvNV = loopback_VertexAttribs2fvNV; |
||
1866 | dest->VertexAttribs2dvNV = loopback_VertexAttribs2dvNV; |
||
1867 | dest->VertexAttribs3svNV = loopback_VertexAttribs3svNV; |
||
1868 | dest->VertexAttribs3fvNV = loopback_VertexAttribs3fvNV; |
||
1869 | dest->VertexAttribs3dvNV = loopback_VertexAttribs3dvNV; |
||
1870 | dest->VertexAttribs4svNV = loopback_VertexAttribs4svNV; |
||
1871 | dest->VertexAttribs4fvNV = loopback_VertexAttribs4fvNV; |
||
1872 | dest->VertexAttribs4dvNV = loopback_VertexAttribs4dvNV; |
||
1873 | dest->VertexAttribs4ubvNV = loopback_VertexAttribs4ubvNV; |
||
1874 | |||
1875 | } |