3
* Mesa 3-D graphics library
6
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
8
* Permission is hereby granted, free of charge, to any person obtaining a
9
* copy of this software and associated documentation files (the "Software"),
10
* to deal in the Software without restriction, including without limitation
11
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
* and/or sell copies of the Software, and to permit persons to whom the
13
* Software is furnished to do so, subject to the following conditions:
15
* The above copyright notice and this permission notice shall be included
16
* in all copies or substantial portions of the Software.
18
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
* eval.c was written by
29
* Bernd Barsuhn (bdbarsuh@cip.informatik.uni-erlangen.de) and
30
* Volker Weiss (vrweiss@cip.informatik.uni-erlangen.de).
32
* My original implementation of evaluators was simplistic and didn't
33
* compute surface normal vectors properly. Bernd and Volker applied
34
* used more sophisticated methods to get better results.
55
* Return the number of components per control point for any type of
56
* evaluator. Return 0 if bad target.
57
* See table 5.1 in the OpenGL 1.2 spec.
59
GLuint _mesa_evaluator_components( GLenum target )
62
case GL_MAP1_VERTEX_3: return 3;
63
case GL_MAP1_VERTEX_4: return 4;
64
case GL_MAP1_INDEX: return 1;
65
case GL_MAP1_COLOR_4: return 4;
66
case GL_MAP1_NORMAL: return 3;
67
case GL_MAP1_TEXTURE_COORD_1: return 1;
68
case GL_MAP1_TEXTURE_COORD_2: return 2;
69
case GL_MAP1_TEXTURE_COORD_3: return 3;
70
case GL_MAP1_TEXTURE_COORD_4: return 4;
71
case GL_MAP2_VERTEX_3: return 3;
72
case GL_MAP2_VERTEX_4: return 4;
73
case GL_MAP2_INDEX: return 1;
74
case GL_MAP2_COLOR_4: return 4;
75
case GL_MAP2_NORMAL: return 3;
76
case GL_MAP2_TEXTURE_COORD_1: return 1;
77
case GL_MAP2_TEXTURE_COORD_2: return 2;
78
case GL_MAP2_TEXTURE_COORD_3: return 3;
79
case GL_MAP2_TEXTURE_COORD_4: return 4;
85
/**********************************************************************/
86
/*** Copy and deallocate control points ***/
87
/**********************************************************************/
91
* Copy 1-parametric evaluator control points from user-specified
92
* memory space to a buffer of contiguous control points.
93
* Input: see glMap1f for details
94
* Return: pointer to buffer of contiguous control points or NULL if out
97
GLfloat *_mesa_copy_map_points1f( GLenum target, GLint ustride, GLint uorder,
98
const GLfloat *points )
101
GLint i, k, size = _mesa_evaluator_components(target);
103
if (!points || size==0) {
107
buffer = (GLfloat *) MALLOC(uorder * size * sizeof(GLfloat));
110
for(i=0, p=buffer; i<uorder; i++, points+=ustride)
111
for(k=0; k<size; k++)
120
* Same as above but convert doubles to floats.
122
GLfloat *_mesa_copy_map_points1d( GLenum target, GLint ustride, GLint uorder,
123
const GLdouble *points )
126
GLint i, k, size = _mesa_evaluator_components(target);
128
if (!points || size==0) {
132
buffer = (GLfloat *) MALLOC(uorder * size * sizeof(GLfloat));
135
for(i=0, p=buffer; i<uorder; i++, points+=ustride)
136
for(k=0; k<size; k++)
137
*p++ = (GLfloat) points[k];
145
* Copy 2-parametric evaluator control points from user-specified
146
* memory space to a buffer of contiguous control points.
147
* Additional memory is allocated to be used by the horner and
148
* de Casteljau evaluation schemes.
150
* Input: see glMap2f for details
151
* Return: pointer to buffer of contiguous control points or NULL if out
154
GLfloat *_mesa_copy_map_points2f( GLenum target,
155
GLint ustride, GLint uorder,
156
GLint vstride, GLint vorder,
157
const GLfloat *points )
160
GLint i, j, k, size, dsize, hsize;
163
size = _mesa_evaluator_components(target);
165
if (!points || size==0) {
169
/* max(uorder, vorder) additional points are used in */
170
/* horner evaluation and uorder*vorder additional */
171
/* values are needed for de Casteljau */
172
dsize = (uorder == 2 && vorder == 2)? 0 : uorder*vorder;
173
hsize = (uorder > vorder ? uorder : vorder)*size;
176
buffer = (GLfloat *) MALLOC((uorder*vorder*size+hsize)*sizeof(GLfloat));
178
buffer = (GLfloat *) MALLOC((uorder*vorder*size+dsize)*sizeof(GLfloat));
180
/* compute the increment value for the u-loop */
181
uinc = ustride - vorder*vstride;
184
for (i=0, p=buffer; i<uorder; i++, points += uinc)
185
for (j=0; j<vorder; j++, points += vstride)
186
for (k=0; k<size; k++)
195
* Same as above but convert doubles to floats.
197
GLfloat *_mesa_copy_map_points2d(GLenum target,
198
GLint ustride, GLint uorder,
199
GLint vstride, GLint vorder,
200
const GLdouble *points )
203
GLint i, j, k, size, hsize, dsize;
206
size = _mesa_evaluator_components(target);
208
if (!points || size==0) {
212
/* max(uorder, vorder) additional points are used in */
213
/* horner evaluation and uorder*vorder additional */
214
/* values are needed for de Casteljau */
215
dsize = (uorder == 2 && vorder == 2)? 0 : uorder*vorder;
216
hsize = (uorder > vorder ? uorder : vorder)*size;
219
buffer = (GLfloat *) MALLOC((uorder*vorder*size+hsize)*sizeof(GLfloat));
221
buffer = (GLfloat *) MALLOC((uorder*vorder*size+dsize)*sizeof(GLfloat));
223
/* compute the increment value for the u-loop */
224
uinc = ustride - vorder*vstride;
227
for (i=0, p=buffer; i<uorder; i++, points += uinc)
228
for (j=0; j<vorder; j++, points += vstride)
229
for (k=0; k<size; k++)
230
*p++ = (GLfloat) points[k];
238
/**********************************************************************/
239
/*** API entry points ***/
240
/**********************************************************************/
244
* This does the work of glMap1[fd].
247
map1(GLenum target, GLfloat u1, GLfloat u2, GLint ustride,
248
GLint uorder, const GLvoid *points, GLenum type )
250
GET_CURRENT_CONTEXT(ctx);
253
struct gl_1d_map *map = 0;
254
ASSERT_OUTSIDE_BEGIN_END(ctx);
256
assert(type == GL_FLOAT || type == GL_DOUBLE);
259
_mesa_error( ctx, GL_INVALID_VALUE, "glMap1(u1,u2)" );
262
if (uorder < 1 || uorder > MAX_EVAL_ORDER) {
263
_mesa_error( ctx, GL_INVALID_VALUE, "glMap1(order)" );
267
_mesa_error( ctx, GL_INVALID_VALUE, "glMap1(points)" );
271
k = _mesa_evaluator_components( target );
273
_mesa_error( ctx, GL_INVALID_ENUM, "glMap1(target)" );
277
_mesa_error( ctx, GL_INVALID_VALUE, "glMap1(stride)" );
281
if (ctx->Texture.CurrentUnit != 0) {
282
/* See OpenGL 1.2.1 spec, section F.2.13 */
283
_mesa_error( ctx, GL_INVALID_OPERATION, "glMap2(ACTIVE_TEXTURE != 0)" );
288
case GL_MAP1_VERTEX_3:
289
map = &ctx->EvalMap.Map1Vertex3;
291
case GL_MAP1_VERTEX_4:
292
map = &ctx->EvalMap.Map1Vertex4;
295
map = &ctx->EvalMap.Map1Index;
297
case GL_MAP1_COLOR_4:
298
map = &ctx->EvalMap.Map1Color4;
301
map = &ctx->EvalMap.Map1Normal;
303
case GL_MAP1_TEXTURE_COORD_1:
304
map = &ctx->EvalMap.Map1Texture1;
306
case GL_MAP1_TEXTURE_COORD_2:
307
map = &ctx->EvalMap.Map1Texture2;
309
case GL_MAP1_TEXTURE_COORD_3:
310
map = &ctx->EvalMap.Map1Texture3;
312
case GL_MAP1_TEXTURE_COORD_4:
313
map = &ctx->EvalMap.Map1Texture4;
316
_mesa_error( ctx, GL_INVALID_ENUM, "glMap1(target)" );
320
/* make copy of the control points */
321
if (type == GL_FLOAT)
322
pnts = _mesa_copy_map_points1f(target, ustride, uorder, (GLfloat*) points);
324
pnts = _mesa_copy_map_points1d(target, ustride, uorder, (GLdouble*) points);
327
FLUSH_VERTICES(ctx, _NEW_EVAL);
331
map->du = 1.0F / (u2 - u1);
340
_mesa_Map1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride,
341
GLint order, const GLfloat *points )
343
map1(target, u1, u2, stride, order, points, GL_FLOAT);
348
_mesa_Map1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride,
349
GLint order, const GLdouble *points )
351
map1(target, (GLfloat) u1, (GLfloat) u2, stride, order, points, GL_DOUBLE);
356
map2( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
357
GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
358
const GLvoid *points, GLenum type )
360
GET_CURRENT_CONTEXT(ctx);
363
struct gl_2d_map *map = 0;
364
ASSERT_OUTSIDE_BEGIN_END(ctx);
367
_mesa_error( ctx, GL_INVALID_VALUE, "glMap2(u1,u2)" );
372
_mesa_error( ctx, GL_INVALID_VALUE, "glMap2(v1,v2)" );
376
if (uorder<1 || uorder>MAX_EVAL_ORDER) {
377
_mesa_error( ctx, GL_INVALID_VALUE, "glMap2(uorder)" );
381
if (vorder<1 || vorder>MAX_EVAL_ORDER) {
382
_mesa_error( ctx, GL_INVALID_VALUE, "glMap2(vorder)" );
386
k = _mesa_evaluator_components( target );
388
_mesa_error( ctx, GL_INVALID_ENUM, "glMap2(target)" );
392
_mesa_error( ctx, GL_INVALID_VALUE, "glMap2(ustride)" );
396
_mesa_error( ctx, GL_INVALID_VALUE, "glMap2(vstride)" );
400
if (ctx->Texture.CurrentUnit != 0) {
401
/* See OpenGL 1.2.1 spec, section F.2.13 */
402
_mesa_error( ctx, GL_INVALID_OPERATION, "glMap2(ACTIVE_TEXTURE != 0)" );
407
case GL_MAP2_VERTEX_3:
408
map = &ctx->EvalMap.Map2Vertex3;
410
case GL_MAP2_VERTEX_4:
411
map = &ctx->EvalMap.Map2Vertex4;
414
map = &ctx->EvalMap.Map2Index;
416
case GL_MAP2_COLOR_4:
417
map = &ctx->EvalMap.Map2Color4;
420
map = &ctx->EvalMap.Map2Normal;
422
case GL_MAP2_TEXTURE_COORD_1:
423
map = &ctx->EvalMap.Map2Texture1;
425
case GL_MAP2_TEXTURE_COORD_2:
426
map = &ctx->EvalMap.Map2Texture2;
428
case GL_MAP2_TEXTURE_COORD_3:
429
map = &ctx->EvalMap.Map2Texture3;
431
case GL_MAP2_TEXTURE_COORD_4:
432
map = &ctx->EvalMap.Map2Texture4;
435
_mesa_error( ctx, GL_INVALID_ENUM, "glMap2(target)" );
439
/* make copy of the control points */
440
if (type == GL_FLOAT)
441
pnts = _mesa_copy_map_points2f(target, ustride, uorder,
442
vstride, vorder, (GLfloat*) points);
444
pnts = _mesa_copy_map_points2d(target, ustride, uorder,
445
vstride, vorder, (GLdouble*) points);
448
FLUSH_VERTICES(ctx, _NEW_EVAL);
449
map->Uorder = uorder;
452
map->du = 1.0F / (u2 - u1);
453
map->Vorder = vorder;
456
map->dv = 1.0F / (v2 - v1);
464
_mesa_Map2f( GLenum target,
465
GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
466
GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
467
const GLfloat *points)
469
map2(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder,
475
_mesa_Map2d( GLenum target,
476
GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
477
GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
478
const GLdouble *points )
480
map2(target, (GLfloat) u1, (GLfloat) u2, ustride, uorder,
481
(GLfloat) v1, (GLfloat) v2, vstride, vorder, points, GL_DOUBLE);
487
_mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v )
489
GET_CURRENT_CONTEXT(ctx);
492
ASSERT_OUTSIDE_BEGIN_END(ctx);
497
case GL_MAP1_COLOR_4:
498
data = ctx->EvalMap.Map1Color4.Points;
499
n = ctx->EvalMap.Map1Color4.Order * 4;
502
data = ctx->EvalMap.Map1Index.Points;
503
n = ctx->EvalMap.Map1Index.Order;
506
data = ctx->EvalMap.Map1Normal.Points;
507
n = ctx->EvalMap.Map1Normal.Order * 3;
509
case GL_MAP1_TEXTURE_COORD_1:
510
data = ctx->EvalMap.Map1Texture1.Points;
511
n = ctx->EvalMap.Map1Texture1.Order * 1;
513
case GL_MAP1_TEXTURE_COORD_2:
514
data = ctx->EvalMap.Map1Texture2.Points;
515
n = ctx->EvalMap.Map1Texture2.Order * 2;
517
case GL_MAP1_TEXTURE_COORD_3:
518
data = ctx->EvalMap.Map1Texture3.Points;
519
n = ctx->EvalMap.Map1Texture3.Order * 3;
521
case GL_MAP1_TEXTURE_COORD_4:
522
data = ctx->EvalMap.Map1Texture4.Points;
523
n = ctx->EvalMap.Map1Texture4.Order * 4;
525
case GL_MAP1_VERTEX_3:
526
data = ctx->EvalMap.Map1Vertex3.Points;
527
n = ctx->EvalMap.Map1Vertex3.Order * 3;
529
case GL_MAP1_VERTEX_4:
530
data = ctx->EvalMap.Map1Vertex4.Points;
531
n = ctx->EvalMap.Map1Vertex4.Order * 4;
533
case GL_MAP2_COLOR_4:
534
data = ctx->EvalMap.Map2Color4.Points;
535
n = ctx->EvalMap.Map2Color4.Uorder
536
* ctx->EvalMap.Map2Color4.Vorder * 4;
539
data = ctx->EvalMap.Map2Index.Points;
540
n = ctx->EvalMap.Map2Index.Uorder
541
* ctx->EvalMap.Map2Index.Vorder;
544
data = ctx->EvalMap.Map2Normal.Points;
545
n = ctx->EvalMap.Map2Normal.Uorder
546
* ctx->EvalMap.Map2Normal.Vorder * 3;
548
case GL_MAP2_TEXTURE_COORD_1:
549
data = ctx->EvalMap.Map2Texture1.Points;
550
n = ctx->EvalMap.Map2Texture1.Uorder
551
* ctx->EvalMap.Map2Texture1.Vorder * 1;
553
case GL_MAP2_TEXTURE_COORD_2:
554
data = ctx->EvalMap.Map2Texture2.Points;
555
n = ctx->EvalMap.Map2Texture2.Uorder
556
* ctx->EvalMap.Map2Texture2.Vorder * 2;
558
case GL_MAP2_TEXTURE_COORD_3:
559
data = ctx->EvalMap.Map2Texture3.Points;
560
n = ctx->EvalMap.Map2Texture3.Uorder
561
* ctx->EvalMap.Map2Texture3.Vorder * 3;
563
case GL_MAP2_TEXTURE_COORD_4:
564
data = ctx->EvalMap.Map2Texture4.Points;
565
n = ctx->EvalMap.Map2Texture4.Uorder
566
* ctx->EvalMap.Map2Texture4.Vorder * 4;
568
case GL_MAP2_VERTEX_3:
569
data = ctx->EvalMap.Map2Vertex3.Points;
570
n = ctx->EvalMap.Map2Vertex3.Uorder
571
* ctx->EvalMap.Map2Vertex3.Vorder * 3;
573
case GL_MAP2_VERTEX_4:
574
data = ctx->EvalMap.Map2Vertex4.Points;
575
n = ctx->EvalMap.Map2Vertex4.Uorder
576
* ctx->EvalMap.Map2Vertex4.Vorder * 4;
579
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(target)" );
590
case GL_MAP1_COLOR_4:
591
*v = ctx->EvalMap.Map1Color4.Order;
594
*v = ctx->EvalMap.Map1Index.Order;
597
*v = ctx->EvalMap.Map1Normal.Order;
599
case GL_MAP1_TEXTURE_COORD_1:
600
*v = ctx->EvalMap.Map1Texture1.Order;
602
case GL_MAP1_TEXTURE_COORD_2:
603
*v = ctx->EvalMap.Map1Texture2.Order;
605
case GL_MAP1_TEXTURE_COORD_3:
606
*v = ctx->EvalMap.Map1Texture3.Order;
608
case GL_MAP1_TEXTURE_COORD_4:
609
*v = ctx->EvalMap.Map1Texture4.Order;
611
case GL_MAP1_VERTEX_3:
612
*v = ctx->EvalMap.Map1Vertex3.Order;
614
case GL_MAP1_VERTEX_4:
615
*v = ctx->EvalMap.Map1Vertex4.Order;
617
case GL_MAP2_COLOR_4:
618
v[0] = ctx->EvalMap.Map2Color4.Uorder;
619
v[1] = ctx->EvalMap.Map2Color4.Vorder;
622
v[0] = ctx->EvalMap.Map2Index.Uorder;
623
v[1] = ctx->EvalMap.Map2Index.Vorder;
626
v[0] = ctx->EvalMap.Map2Normal.Uorder;
627
v[1] = ctx->EvalMap.Map2Normal.Vorder;
629
case GL_MAP2_TEXTURE_COORD_1:
630
v[0] = ctx->EvalMap.Map2Texture1.Uorder;
631
v[1] = ctx->EvalMap.Map2Texture1.Vorder;
633
case GL_MAP2_TEXTURE_COORD_2:
634
v[0] = ctx->EvalMap.Map2Texture2.Uorder;
635
v[1] = ctx->EvalMap.Map2Texture2.Vorder;
637
case GL_MAP2_TEXTURE_COORD_3:
638
v[0] = ctx->EvalMap.Map2Texture3.Uorder;
639
v[1] = ctx->EvalMap.Map2Texture3.Vorder;
641
case GL_MAP2_TEXTURE_COORD_4:
642
v[0] = ctx->EvalMap.Map2Texture4.Uorder;
643
v[1] = ctx->EvalMap.Map2Texture4.Vorder;
645
case GL_MAP2_VERTEX_3:
646
v[0] = ctx->EvalMap.Map2Vertex3.Uorder;
647
v[1] = ctx->EvalMap.Map2Vertex3.Vorder;
649
case GL_MAP2_VERTEX_4:
650
v[0] = ctx->EvalMap.Map2Vertex4.Uorder;
651
v[1] = ctx->EvalMap.Map2Vertex4.Vorder;
654
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(target)" );
660
case GL_MAP1_COLOR_4:
661
v[0] = ctx->EvalMap.Map1Color4.u1;
662
v[1] = ctx->EvalMap.Map1Color4.u2;
665
v[0] = ctx->EvalMap.Map1Index.u1;
666
v[1] = ctx->EvalMap.Map1Index.u2;
669
v[0] = ctx->EvalMap.Map1Normal.u1;
670
v[1] = ctx->EvalMap.Map1Normal.u2;
672
case GL_MAP1_TEXTURE_COORD_1:
673
v[0] = ctx->EvalMap.Map1Texture1.u1;
674
v[1] = ctx->EvalMap.Map1Texture1.u2;
676
case GL_MAP1_TEXTURE_COORD_2:
677
v[0] = ctx->EvalMap.Map1Texture2.u1;
678
v[1] = ctx->EvalMap.Map1Texture2.u2;
680
case GL_MAP1_TEXTURE_COORD_3:
681
v[0] = ctx->EvalMap.Map1Texture3.u1;
682
v[1] = ctx->EvalMap.Map1Texture3.u2;
684
case GL_MAP1_TEXTURE_COORD_4:
685
v[0] = ctx->EvalMap.Map1Texture4.u1;
686
v[1] = ctx->EvalMap.Map1Texture4.u2;
688
case GL_MAP1_VERTEX_3:
689
v[0] = ctx->EvalMap.Map1Vertex3.u1;
690
v[1] = ctx->EvalMap.Map1Vertex3.u2;
692
case GL_MAP1_VERTEX_4:
693
v[0] = ctx->EvalMap.Map1Vertex4.u1;
694
v[1] = ctx->EvalMap.Map1Vertex4.u2;
696
case GL_MAP2_COLOR_4:
697
v[0] = ctx->EvalMap.Map2Color4.u1;
698
v[1] = ctx->EvalMap.Map2Color4.u2;
699
v[2] = ctx->EvalMap.Map2Color4.v1;
700
v[3] = ctx->EvalMap.Map2Color4.v2;
703
v[0] = ctx->EvalMap.Map2Index.u1;
704
v[1] = ctx->EvalMap.Map2Index.u2;
705
v[2] = ctx->EvalMap.Map2Index.v1;
706
v[3] = ctx->EvalMap.Map2Index.v2;
709
v[0] = ctx->EvalMap.Map2Normal.u1;
710
v[1] = ctx->EvalMap.Map2Normal.u2;
711
v[2] = ctx->EvalMap.Map2Normal.v1;
712
v[3] = ctx->EvalMap.Map2Normal.v2;
714
case GL_MAP2_TEXTURE_COORD_1:
715
v[0] = ctx->EvalMap.Map2Texture1.u1;
716
v[1] = ctx->EvalMap.Map2Texture1.u2;
717
v[2] = ctx->EvalMap.Map2Texture1.v1;
718
v[3] = ctx->EvalMap.Map2Texture1.v2;
720
case GL_MAP2_TEXTURE_COORD_2:
721
v[0] = ctx->EvalMap.Map2Texture2.u1;
722
v[1] = ctx->EvalMap.Map2Texture2.u2;
723
v[2] = ctx->EvalMap.Map2Texture2.v1;
724
v[3] = ctx->EvalMap.Map2Texture2.v2;
726
case GL_MAP2_TEXTURE_COORD_3:
727
v[0] = ctx->EvalMap.Map2Texture3.u1;
728
v[1] = ctx->EvalMap.Map2Texture3.u2;
729
v[2] = ctx->EvalMap.Map2Texture3.v1;
730
v[3] = ctx->EvalMap.Map2Texture3.v2;
732
case GL_MAP2_TEXTURE_COORD_4:
733
v[0] = ctx->EvalMap.Map2Texture4.u1;
734
v[1] = ctx->EvalMap.Map2Texture4.u2;
735
v[2] = ctx->EvalMap.Map2Texture4.v1;
736
v[3] = ctx->EvalMap.Map2Texture4.v2;
738
case GL_MAP2_VERTEX_3:
739
v[0] = ctx->EvalMap.Map2Vertex3.u1;
740
v[1] = ctx->EvalMap.Map2Vertex3.u2;
741
v[2] = ctx->EvalMap.Map2Vertex3.v1;
742
v[3] = ctx->EvalMap.Map2Vertex3.v2;
744
case GL_MAP2_VERTEX_4:
745
v[0] = ctx->EvalMap.Map2Vertex4.u1;
746
v[1] = ctx->EvalMap.Map2Vertex4.u2;
747
v[2] = ctx->EvalMap.Map2Vertex4.v1;
748
v[3] = ctx->EvalMap.Map2Vertex4.v2;
751
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(target)" );
755
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(query)" );
761
_mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v )
763
GET_CURRENT_CONTEXT(ctx);
766
ASSERT_OUTSIDE_BEGIN_END(ctx);
771
case GL_MAP1_COLOR_4:
772
data = ctx->EvalMap.Map1Color4.Points;
773
n = ctx->EvalMap.Map1Color4.Order * 4;
776
data = ctx->EvalMap.Map1Index.Points;
777
n = ctx->EvalMap.Map1Index.Order;
780
data = ctx->EvalMap.Map1Normal.Points;
781
n = ctx->EvalMap.Map1Normal.Order * 3;
783
case GL_MAP1_TEXTURE_COORD_1:
784
data = ctx->EvalMap.Map1Texture1.Points;
785
n = ctx->EvalMap.Map1Texture1.Order * 1;
787
case GL_MAP1_TEXTURE_COORD_2:
788
data = ctx->EvalMap.Map1Texture2.Points;
789
n = ctx->EvalMap.Map1Texture2.Order * 2;
791
case GL_MAP1_TEXTURE_COORD_3:
792
data = ctx->EvalMap.Map1Texture3.Points;
793
n = ctx->EvalMap.Map1Texture3.Order * 3;
795
case GL_MAP1_TEXTURE_COORD_4:
796
data = ctx->EvalMap.Map1Texture4.Points;
797
n = ctx->EvalMap.Map1Texture4.Order * 4;
799
case GL_MAP1_VERTEX_3:
800
data = ctx->EvalMap.Map1Vertex3.Points;
801
n = ctx->EvalMap.Map1Vertex3.Order * 3;
803
case GL_MAP1_VERTEX_4:
804
data = ctx->EvalMap.Map1Vertex4.Points;
805
n = ctx->EvalMap.Map1Vertex4.Order * 4;
807
case GL_MAP2_COLOR_4:
808
data = ctx->EvalMap.Map2Color4.Points;
809
n = ctx->EvalMap.Map2Color4.Uorder
810
* ctx->EvalMap.Map2Color4.Vorder * 4;
813
data = ctx->EvalMap.Map2Index.Points;
814
n = ctx->EvalMap.Map2Index.Uorder
815
* ctx->EvalMap.Map2Index.Vorder;
818
data = ctx->EvalMap.Map2Normal.Points;
819
n = ctx->EvalMap.Map2Normal.Uorder
820
* ctx->EvalMap.Map2Normal.Vorder * 3;
822
case GL_MAP2_TEXTURE_COORD_1:
823
data = ctx->EvalMap.Map2Texture1.Points;
824
n = ctx->EvalMap.Map2Texture1.Uorder
825
* ctx->EvalMap.Map2Texture1.Vorder * 1;
827
case GL_MAP2_TEXTURE_COORD_2:
828
data = ctx->EvalMap.Map2Texture2.Points;
829
n = ctx->EvalMap.Map2Texture2.Uorder
830
* ctx->EvalMap.Map2Texture2.Vorder * 2;
832
case GL_MAP2_TEXTURE_COORD_3:
833
data = ctx->EvalMap.Map2Texture3.Points;
834
n = ctx->EvalMap.Map2Texture3.Uorder
835
* ctx->EvalMap.Map2Texture3.Vorder * 3;
837
case GL_MAP2_TEXTURE_COORD_4:
838
data = ctx->EvalMap.Map2Texture4.Points;
839
n = ctx->EvalMap.Map2Texture4.Uorder
840
* ctx->EvalMap.Map2Texture4.Vorder * 4;
842
case GL_MAP2_VERTEX_3:
843
data = ctx->EvalMap.Map2Vertex3.Points;
844
n = ctx->EvalMap.Map2Vertex3.Uorder
845
* ctx->EvalMap.Map2Vertex3.Vorder * 3;
847
case GL_MAP2_VERTEX_4:
848
data = ctx->EvalMap.Map2Vertex4.Points;
849
n = ctx->EvalMap.Map2Vertex4.Uorder
850
* ctx->EvalMap.Map2Vertex4.Vorder * 4;
853
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(target)" );
864
case GL_MAP1_COLOR_4:
865
*v = (GLfloat) ctx->EvalMap.Map1Color4.Order;
868
*v = (GLfloat) ctx->EvalMap.Map1Index.Order;
871
*v = (GLfloat) ctx->EvalMap.Map1Normal.Order;
873
case GL_MAP1_TEXTURE_COORD_1:
874
*v = (GLfloat) ctx->EvalMap.Map1Texture1.Order;
876
case GL_MAP1_TEXTURE_COORD_2:
877
*v = (GLfloat) ctx->EvalMap.Map1Texture2.Order;
879
case GL_MAP1_TEXTURE_COORD_3:
880
*v = (GLfloat) ctx->EvalMap.Map1Texture3.Order;
882
case GL_MAP1_TEXTURE_COORD_4:
883
*v = (GLfloat) ctx->EvalMap.Map1Texture4.Order;
885
case GL_MAP1_VERTEX_3:
886
*v = (GLfloat) ctx->EvalMap.Map1Vertex3.Order;
888
case GL_MAP1_VERTEX_4:
889
*v = (GLfloat) ctx->EvalMap.Map1Vertex4.Order;
891
case GL_MAP2_COLOR_4:
892
v[0] = (GLfloat) ctx->EvalMap.Map2Color4.Uorder;
893
v[1] = (GLfloat) ctx->EvalMap.Map2Color4.Vorder;
896
v[0] = (GLfloat) ctx->EvalMap.Map2Index.Uorder;
897
v[1] = (GLfloat) ctx->EvalMap.Map2Index.Vorder;
900
v[0] = (GLfloat) ctx->EvalMap.Map2Normal.Uorder;
901
v[1] = (GLfloat) ctx->EvalMap.Map2Normal.Vorder;
903
case GL_MAP2_TEXTURE_COORD_1:
904
v[0] = (GLfloat) ctx->EvalMap.Map2Texture1.Uorder;
905
v[1] = (GLfloat) ctx->EvalMap.Map2Texture1.Vorder;
907
case GL_MAP2_TEXTURE_COORD_2:
908
v[0] = (GLfloat) ctx->EvalMap.Map2Texture2.Uorder;
909
v[1] = (GLfloat) ctx->EvalMap.Map2Texture2.Vorder;
911
case GL_MAP2_TEXTURE_COORD_3:
912
v[0] = (GLfloat) ctx->EvalMap.Map2Texture3.Uorder;
913
v[1] = (GLfloat) ctx->EvalMap.Map2Texture3.Vorder;
915
case GL_MAP2_TEXTURE_COORD_4:
916
v[0] = (GLfloat) ctx->EvalMap.Map2Texture4.Uorder;
917
v[1] = (GLfloat) ctx->EvalMap.Map2Texture4.Vorder;
919
case GL_MAP2_VERTEX_3:
920
v[0] = (GLfloat) ctx->EvalMap.Map2Vertex3.Uorder;
921
v[1] = (GLfloat) ctx->EvalMap.Map2Vertex3.Vorder;
923
case GL_MAP2_VERTEX_4:
924
v[0] = (GLfloat) ctx->EvalMap.Map2Vertex4.Uorder;
925
v[1] = (GLfloat) ctx->EvalMap.Map2Vertex4.Vorder;
928
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(target)" );
934
case GL_MAP1_COLOR_4:
935
v[0] = ctx->EvalMap.Map1Color4.u1;
936
v[1] = ctx->EvalMap.Map1Color4.u2;
939
v[0] = ctx->EvalMap.Map1Index.u1;
940
v[1] = ctx->EvalMap.Map1Index.u2;
943
v[0] = ctx->EvalMap.Map1Normal.u1;
944
v[1] = ctx->EvalMap.Map1Normal.u2;
946
case GL_MAP1_TEXTURE_COORD_1:
947
v[0] = ctx->EvalMap.Map1Texture1.u1;
948
v[1] = ctx->EvalMap.Map1Texture1.u2;
950
case GL_MAP1_TEXTURE_COORD_2:
951
v[0] = ctx->EvalMap.Map1Texture2.u1;
952
v[1] = ctx->EvalMap.Map1Texture2.u2;
954
case GL_MAP1_TEXTURE_COORD_3:
955
v[0] = ctx->EvalMap.Map1Texture3.u1;
956
v[1] = ctx->EvalMap.Map1Texture3.u2;
958
case GL_MAP1_TEXTURE_COORD_4:
959
v[0] = ctx->EvalMap.Map1Texture4.u1;
960
v[1] = ctx->EvalMap.Map1Texture4.u2;
962
case GL_MAP1_VERTEX_3:
963
v[0] = ctx->EvalMap.Map1Vertex3.u1;
964
v[1] = ctx->EvalMap.Map1Vertex3.u2;
966
case GL_MAP1_VERTEX_4:
967
v[0] = ctx->EvalMap.Map1Vertex4.u1;
968
v[1] = ctx->EvalMap.Map1Vertex4.u2;
970
case GL_MAP2_COLOR_4:
971
v[0] = ctx->EvalMap.Map2Color4.u1;
972
v[1] = ctx->EvalMap.Map2Color4.u2;
973
v[2] = ctx->EvalMap.Map2Color4.v1;
974
v[3] = ctx->EvalMap.Map2Color4.v2;
977
v[0] = ctx->EvalMap.Map2Index.u1;
978
v[1] = ctx->EvalMap.Map2Index.u2;
979
v[2] = ctx->EvalMap.Map2Index.v1;
980
v[3] = ctx->EvalMap.Map2Index.v2;
983
v[0] = ctx->EvalMap.Map2Normal.u1;
984
v[1] = ctx->EvalMap.Map2Normal.u2;
985
v[2] = ctx->EvalMap.Map2Normal.v1;
986
v[3] = ctx->EvalMap.Map2Normal.v2;
988
case GL_MAP2_TEXTURE_COORD_1:
989
v[0] = ctx->EvalMap.Map2Texture1.u1;
990
v[1] = ctx->EvalMap.Map2Texture1.u2;
991
v[2] = ctx->EvalMap.Map2Texture1.v1;
992
v[3] = ctx->EvalMap.Map2Texture1.v2;
994
case GL_MAP2_TEXTURE_COORD_2:
995
v[0] = ctx->EvalMap.Map2Texture2.u1;
996
v[1] = ctx->EvalMap.Map2Texture2.u2;
997
v[2] = ctx->EvalMap.Map2Texture2.v1;
998
v[3] = ctx->EvalMap.Map2Texture2.v2;
1000
case GL_MAP2_TEXTURE_COORD_3:
1001
v[0] = ctx->EvalMap.Map2Texture3.u1;
1002
v[1] = ctx->EvalMap.Map2Texture3.u2;
1003
v[2] = ctx->EvalMap.Map2Texture3.v1;
1004
v[3] = ctx->EvalMap.Map2Texture3.v2;
1006
case GL_MAP2_TEXTURE_COORD_4:
1007
v[0] = ctx->EvalMap.Map2Texture4.u1;
1008
v[1] = ctx->EvalMap.Map2Texture4.u2;
1009
v[2] = ctx->EvalMap.Map2Texture4.v1;
1010
v[3] = ctx->EvalMap.Map2Texture4.v2;
1012
case GL_MAP2_VERTEX_3:
1013
v[0] = ctx->EvalMap.Map2Vertex3.u1;
1014
v[1] = ctx->EvalMap.Map2Vertex3.u2;
1015
v[2] = ctx->EvalMap.Map2Vertex3.v1;
1016
v[3] = ctx->EvalMap.Map2Vertex3.v2;
1018
case GL_MAP2_VERTEX_4:
1019
v[0] = ctx->EvalMap.Map2Vertex4.u1;
1020
v[1] = ctx->EvalMap.Map2Vertex4.u2;
1021
v[2] = ctx->EvalMap.Map2Vertex4.v1;
1022
v[3] = ctx->EvalMap.Map2Vertex4.v2;
1025
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(target)" );
1029
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(query)" );
1035
_mesa_GetMapiv( GLenum target, GLenum query, GLint *v )
1037
GET_CURRENT_CONTEXT(ctx);
1040
ASSERT_OUTSIDE_BEGIN_END(ctx);
1045
case GL_MAP1_COLOR_4:
1046
data = ctx->EvalMap.Map1Color4.Points;
1047
n = ctx->EvalMap.Map1Color4.Order * 4;
1050
data = ctx->EvalMap.Map1Index.Points;
1051
n = ctx->EvalMap.Map1Index.Order;
1053
case GL_MAP1_NORMAL:
1054
data = ctx->EvalMap.Map1Normal.Points;
1055
n = ctx->EvalMap.Map1Normal.Order * 3;
1057
case GL_MAP1_TEXTURE_COORD_1:
1058
data = ctx->EvalMap.Map1Texture1.Points;
1059
n = ctx->EvalMap.Map1Texture1.Order * 1;
1061
case GL_MAP1_TEXTURE_COORD_2:
1062
data = ctx->EvalMap.Map1Texture2.Points;
1063
n = ctx->EvalMap.Map1Texture2.Order * 2;
1065
case GL_MAP1_TEXTURE_COORD_3:
1066
data = ctx->EvalMap.Map1Texture3.Points;
1067
n = ctx->EvalMap.Map1Texture3.Order * 3;
1069
case GL_MAP1_TEXTURE_COORD_4:
1070
data = ctx->EvalMap.Map1Texture4.Points;
1071
n = ctx->EvalMap.Map1Texture4.Order * 4;
1073
case GL_MAP1_VERTEX_3:
1074
data = ctx->EvalMap.Map1Vertex3.Points;
1075
n = ctx->EvalMap.Map1Vertex3.Order * 3;
1077
case GL_MAP1_VERTEX_4:
1078
data = ctx->EvalMap.Map1Vertex4.Points;
1079
n = ctx->EvalMap.Map1Vertex4.Order * 4;
1081
case GL_MAP2_COLOR_4:
1082
data = ctx->EvalMap.Map2Color4.Points;
1083
n = ctx->EvalMap.Map2Color4.Uorder
1084
* ctx->EvalMap.Map2Color4.Vorder * 4;
1087
data = ctx->EvalMap.Map2Index.Points;
1088
n = ctx->EvalMap.Map2Index.Uorder
1089
* ctx->EvalMap.Map2Index.Vorder;
1091
case GL_MAP2_NORMAL:
1092
data = ctx->EvalMap.Map2Normal.Points;
1093
n = ctx->EvalMap.Map2Normal.Uorder
1094
* ctx->EvalMap.Map2Normal.Vorder * 3;
1096
case GL_MAP2_TEXTURE_COORD_1:
1097
data = ctx->EvalMap.Map2Texture1.Points;
1098
n = ctx->EvalMap.Map2Texture1.Uorder
1099
* ctx->EvalMap.Map2Texture1.Vorder * 1;
1101
case GL_MAP2_TEXTURE_COORD_2:
1102
data = ctx->EvalMap.Map2Texture2.Points;
1103
n = ctx->EvalMap.Map2Texture2.Uorder
1104
* ctx->EvalMap.Map2Texture2.Vorder * 2;
1106
case GL_MAP2_TEXTURE_COORD_3:
1107
data = ctx->EvalMap.Map2Texture3.Points;
1108
n = ctx->EvalMap.Map2Texture3.Uorder
1109
* ctx->EvalMap.Map2Texture3.Vorder * 3;
1111
case GL_MAP2_TEXTURE_COORD_4:
1112
data = ctx->EvalMap.Map2Texture4.Points;
1113
n = ctx->EvalMap.Map2Texture4.Uorder
1114
* ctx->EvalMap.Map2Texture4.Vorder * 4;
1116
case GL_MAP2_VERTEX_3:
1117
data = ctx->EvalMap.Map2Vertex3.Points;
1118
n = ctx->EvalMap.Map2Vertex3.Uorder
1119
* ctx->EvalMap.Map2Vertex3.Vorder * 3;
1121
case GL_MAP2_VERTEX_4:
1122
data = ctx->EvalMap.Map2Vertex4.Points;
1123
n = ctx->EvalMap.Map2Vertex4.Uorder
1124
* ctx->EvalMap.Map2Vertex4.Vorder * 4;
1127
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(target)" );
1132
v[i] = ROUNDF(data[i]);
1138
case GL_MAP1_COLOR_4:
1139
*v = ctx->EvalMap.Map1Color4.Order;
1142
*v = ctx->EvalMap.Map1Index.Order;
1144
case GL_MAP1_NORMAL:
1145
*v = ctx->EvalMap.Map1Normal.Order;
1147
case GL_MAP1_TEXTURE_COORD_1:
1148
*v = ctx->EvalMap.Map1Texture1.Order;
1150
case GL_MAP1_TEXTURE_COORD_2:
1151
*v = ctx->EvalMap.Map1Texture2.Order;
1153
case GL_MAP1_TEXTURE_COORD_3:
1154
*v = ctx->EvalMap.Map1Texture3.Order;
1156
case GL_MAP1_TEXTURE_COORD_4:
1157
*v = ctx->EvalMap.Map1Texture4.Order;
1159
case GL_MAP1_VERTEX_3:
1160
*v = ctx->EvalMap.Map1Vertex3.Order;
1162
case GL_MAP1_VERTEX_4:
1163
*v = ctx->EvalMap.Map1Vertex4.Order;
1165
case GL_MAP2_COLOR_4:
1166
v[0] = ctx->EvalMap.Map2Color4.Uorder;
1167
v[1] = ctx->EvalMap.Map2Color4.Vorder;
1170
v[0] = ctx->EvalMap.Map2Index.Uorder;
1171
v[1] = ctx->EvalMap.Map2Index.Vorder;
1173
case GL_MAP2_NORMAL:
1174
v[0] = ctx->EvalMap.Map2Normal.Uorder;
1175
v[1] = ctx->EvalMap.Map2Normal.Vorder;
1177
case GL_MAP2_TEXTURE_COORD_1:
1178
v[0] = ctx->EvalMap.Map2Texture1.Uorder;
1179
v[1] = ctx->EvalMap.Map2Texture1.Vorder;
1181
case GL_MAP2_TEXTURE_COORD_2:
1182
v[0] = ctx->EvalMap.Map2Texture2.Uorder;
1183
v[1] = ctx->EvalMap.Map2Texture2.Vorder;
1185
case GL_MAP2_TEXTURE_COORD_3:
1186
v[0] = ctx->EvalMap.Map2Texture3.Uorder;
1187
v[1] = ctx->EvalMap.Map2Texture3.Vorder;
1189
case GL_MAP2_TEXTURE_COORD_4:
1190
v[0] = ctx->EvalMap.Map2Texture4.Uorder;
1191
v[1] = ctx->EvalMap.Map2Texture4.Vorder;
1193
case GL_MAP2_VERTEX_3:
1194
v[0] = ctx->EvalMap.Map2Vertex3.Uorder;
1195
v[1] = ctx->EvalMap.Map2Vertex3.Vorder;
1197
case GL_MAP2_VERTEX_4:
1198
v[0] = ctx->EvalMap.Map2Vertex4.Uorder;
1199
v[1] = ctx->EvalMap.Map2Vertex4.Vorder;
1202
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(target)" );
1208
case GL_MAP1_COLOR_4:
1209
v[0] = ROUNDF(ctx->EvalMap.Map1Color4.u1);
1210
v[1] = ROUNDF(ctx->EvalMap.Map1Color4.u2);
1213
v[0] = ROUNDF(ctx->EvalMap.Map1Index.u1);
1214
v[1] = ROUNDF(ctx->EvalMap.Map1Index.u2);
1216
case GL_MAP1_NORMAL:
1217
v[0] = ROUNDF(ctx->EvalMap.Map1Normal.u1);
1218
v[1] = ROUNDF(ctx->EvalMap.Map1Normal.u2);
1220
case GL_MAP1_TEXTURE_COORD_1:
1221
v[0] = ROUNDF(ctx->EvalMap.Map1Texture1.u1);
1222
v[1] = ROUNDF(ctx->EvalMap.Map1Texture1.u2);
1224
case GL_MAP1_TEXTURE_COORD_2:
1225
v[0] = ROUNDF(ctx->EvalMap.Map1Texture2.u1);
1226
v[1] = ROUNDF(ctx->EvalMap.Map1Texture2.u2);
1228
case GL_MAP1_TEXTURE_COORD_3:
1229
v[0] = ROUNDF(ctx->EvalMap.Map1Texture3.u1);
1230
v[1] = ROUNDF(ctx->EvalMap.Map1Texture3.u2);
1232
case GL_MAP1_TEXTURE_COORD_4:
1233
v[0] = ROUNDF(ctx->EvalMap.Map1Texture4.u1);
1234
v[1] = ROUNDF(ctx->EvalMap.Map1Texture4.u2);
1236
case GL_MAP1_VERTEX_3:
1237
v[0] = ROUNDF(ctx->EvalMap.Map1Vertex3.u1);
1238
v[1] = ROUNDF(ctx->EvalMap.Map1Vertex3.u2);
1240
case GL_MAP1_VERTEX_4:
1241
v[0] = ROUNDF(ctx->EvalMap.Map1Vertex4.u1);
1242
v[1] = ROUNDF(ctx->EvalMap.Map1Vertex4.u2);
1244
case GL_MAP2_COLOR_4:
1245
v[0] = ROUNDF(ctx->EvalMap.Map2Color4.u1);
1246
v[1] = ROUNDF(ctx->EvalMap.Map2Color4.u2);
1247
v[2] = ROUNDF(ctx->EvalMap.Map2Color4.v1);
1248
v[3] = ROUNDF(ctx->EvalMap.Map2Color4.v2);
1251
v[0] = ROUNDF(ctx->EvalMap.Map2Index.u1);
1252
v[1] = ROUNDF(ctx->EvalMap.Map2Index.u2);
1253
v[2] = ROUNDF(ctx->EvalMap.Map2Index.v1);
1254
v[3] = ROUNDF(ctx->EvalMap.Map2Index.v2);
1256
case GL_MAP2_NORMAL:
1257
v[0] = ROUNDF(ctx->EvalMap.Map2Normal.u1);
1258
v[1] = ROUNDF(ctx->EvalMap.Map2Normal.u2);
1259
v[2] = ROUNDF(ctx->EvalMap.Map2Normal.v1);
1260
v[3] = ROUNDF(ctx->EvalMap.Map2Normal.v2);
1262
case GL_MAP2_TEXTURE_COORD_1:
1263
v[0] = ROUNDF(ctx->EvalMap.Map2Texture1.u1);
1264
v[1] = ROUNDF(ctx->EvalMap.Map2Texture1.u2);
1265
v[2] = ROUNDF(ctx->EvalMap.Map2Texture1.v1);
1266
v[3] = ROUNDF(ctx->EvalMap.Map2Texture1.v2);
1268
case GL_MAP2_TEXTURE_COORD_2:
1269
v[0] = ROUNDF(ctx->EvalMap.Map2Texture2.u1);
1270
v[1] = ROUNDF(ctx->EvalMap.Map2Texture2.u2);
1271
v[2] = ROUNDF(ctx->EvalMap.Map2Texture2.v1);
1272
v[3] = ROUNDF(ctx->EvalMap.Map2Texture2.v2);
1274
case GL_MAP2_TEXTURE_COORD_3:
1275
v[0] = ROUNDF(ctx->EvalMap.Map2Texture3.u1);
1276
v[1] = ROUNDF(ctx->EvalMap.Map2Texture3.u2);
1277
v[2] = ROUNDF(ctx->EvalMap.Map2Texture3.v1);
1278
v[3] = ROUNDF(ctx->EvalMap.Map2Texture3.v2);
1280
case GL_MAP2_TEXTURE_COORD_4:
1281
v[0] = ROUNDF(ctx->EvalMap.Map2Texture4.u1);
1282
v[1] = ROUNDF(ctx->EvalMap.Map2Texture4.u2);
1283
v[2] = ROUNDF(ctx->EvalMap.Map2Texture4.v1);
1284
v[3] = ROUNDF(ctx->EvalMap.Map2Texture4.v2);
1286
case GL_MAP2_VERTEX_3:
1287
v[0] = ROUNDF(ctx->EvalMap.Map2Vertex3.u1);
1288
v[1] = ROUNDF(ctx->EvalMap.Map2Vertex3.u2);
1289
v[2] = ROUNDF(ctx->EvalMap.Map2Vertex3.v1);
1290
v[3] = ROUNDF(ctx->EvalMap.Map2Vertex3.v2);
1292
case GL_MAP2_VERTEX_4:
1293
v[0] = ROUNDF(ctx->EvalMap.Map2Vertex4.u1);
1294
v[1] = ROUNDF(ctx->EvalMap.Map2Vertex4.u2);
1295
v[2] = ROUNDF(ctx->EvalMap.Map2Vertex4.v1);
1296
v[3] = ROUNDF(ctx->EvalMap.Map2Vertex4.v2);
1299
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(target)" );
1303
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(query)" );
1310
_mesa_MapGrid1f( GLint un, GLfloat u1, GLfloat u2 )
1312
GET_CURRENT_CONTEXT(ctx);
1313
ASSERT_OUTSIDE_BEGIN_END(ctx);
1316
_mesa_error( ctx, GL_INVALID_VALUE, "glMapGrid1f" );
1319
FLUSH_VERTICES(ctx, _NEW_EVAL);
1320
ctx->Eval.MapGrid1un = un;
1321
ctx->Eval.MapGrid1u1 = u1;
1322
ctx->Eval.MapGrid1u2 = u2;
1323
ctx->Eval.MapGrid1du = (u2 - u1) / (GLfloat) un;
1328
_mesa_MapGrid1d( GLint un, GLdouble u1, GLdouble u2 )
1330
_mesa_MapGrid1f( un, (GLfloat) u1, (GLfloat) u2 );
1335
_mesa_MapGrid2f( GLint un, GLfloat u1, GLfloat u2,
1336
GLint vn, GLfloat v1, GLfloat v2 )
1338
GET_CURRENT_CONTEXT(ctx);
1339
ASSERT_OUTSIDE_BEGIN_END(ctx);
1342
_mesa_error( ctx, GL_INVALID_VALUE, "glMapGrid2f(un)" );
1346
_mesa_error( ctx, GL_INVALID_VALUE, "glMapGrid2f(vn)" );
1350
FLUSH_VERTICES(ctx, _NEW_EVAL);
1351
ctx->Eval.MapGrid2un = un;
1352
ctx->Eval.MapGrid2u1 = u1;
1353
ctx->Eval.MapGrid2u2 = u2;
1354
ctx->Eval.MapGrid2du = (u2 - u1) / (GLfloat) un;
1355
ctx->Eval.MapGrid2vn = vn;
1356
ctx->Eval.MapGrid2v1 = v1;
1357
ctx->Eval.MapGrid2v2 = v2;
1358
ctx->Eval.MapGrid2dv = (v2 - v1) / (GLfloat) vn;
1363
_mesa_MapGrid2d( GLint un, GLdouble u1, GLdouble u2,
1364
GLint vn, GLdouble v1, GLdouble v2 )
1366
_mesa_MapGrid2f( un, (GLfloat) u1, (GLfloat) u2,
1367
vn, (GLfloat) v1, (GLfloat) v2 );