1 /* $Id: enable.c,v 1.6 1999/10/08 09:27:10 keithw Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 /* $XFree86: xc/lib/GL/mesa/src/enable.c,v 1.3 1999/04/04 00:20:23 dawes Exp $ */
37 #include "GL/xf86glx.h"
45 #include "simple_list.h"
51 #include "GL/xf86glx.h"
58 * Perform glEnable and glDisable calls.
60 void gl_set_enable( GLcontext
*ctx
, GLenum cap
, GLboolean state
)
62 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx
, "gl_enable/disable" );
64 if (MESA_VERBOSE
& VERBOSE_API
)
65 fprintf(stderr
, "%s %s (newstate is %x)\n",
66 state
? "glEnable" : "glDisable",
67 gl_lookup_enum_by_nr(cap
),
72 if (ctx
->Color
.AlphaEnabled
!=state
) {
73 ctx
->Color
.AlphaEnabled
= state
;
74 ctx
->NewState
|= NEW_RASTER_OPS
;
78 ctx
->Eval
.AutoNormal
= state
;
81 if (ctx
->Color
.BlendEnabled
!=state
) {
82 ctx
->Color
.BlendEnabled
= state
;
83 /* The following needed to accomodate 1.0 RGB logic op blending */
84 if (ctx
->Color
.BlendEquation
==GL_LOGIC_OP
&& state
) {
85 ctx
->Color
.ColorLogicOpEnabled
= GL_TRUE
;
88 ctx
->Color
.ColorLogicOpEnabled
= GL_FALSE
;
90 ctx
->NewState
|= NEW_RASTER_OPS
;
99 if (cap
>= GL_CLIP_PLANE0
&&
100 cap
<= GL_CLIP_PLANE5
&&
101 ctx
->Transform
.ClipEnabled
[cap
-GL_CLIP_PLANE0
] != state
)
103 GLuint p
= cap
-GL_CLIP_PLANE0
;
105 ctx
->Transform
.ClipEnabled
[p
] = state
;
106 ctx
->NewState
|= NEW_USER_CLIP
;
109 ctx
->Enabled
|= ENABLE_USERCLIP
;
110 ctx
->Transform
.AnyClip
++;
112 if (ctx
->ProjectionMatrix
.flags
& MAT_DIRTY_ALL_OVER
) {
113 gl_matrix_analyze( &ctx
->ProjectionMatrix
);
116 gl_transform_vector( ctx
->Transform
.ClipUserPlane
[p
],
117 ctx
->Transform
.EyeUserPlane
[p
],
118 ctx
->ProjectionMatrix
.inv
);
120 if (--ctx
->Transform
.AnyClip
== 0)
121 ctx
->Enabled
&= ~ENABLE_USERCLIP
;
125 case GL_COLOR_MATERIAL
:
126 if (ctx
->Light
.ColorMaterialEnabled
!=state
) {
127 ctx
->Light
.ColorMaterialEnabled
= state
;
128 ctx
->NewState
|= NEW_LIGHTING
;
132 if (ctx
->Polygon
.CullFlag
!=state
) {
133 ctx
->Polygon
.CullFlag
= state
;
134 ctx
->TriangleCaps
^= DD_TRI_CULL
;
135 ctx
->NewState
|= NEW_POLYGON
;
139 if (state
&& ctx
->Visual
->DepthBits
==0) {
140 gl_warning(ctx
,"glEnable(GL_DEPTH_TEST) but no depth buffer");
143 if (ctx
->Depth
.Test
!=state
) {
144 ctx
->Depth
.Test
= state
;
145 ctx
->NewState
|= NEW_RASTER_OPS
;
150 /* MESA_NO_DITHER env var */
153 if (ctx
->Color
.DitherFlag
!=state
) {
154 ctx
->Color
.DitherFlag
= state
;
155 ctx
->NewState
|= NEW_RASTER_OPS
;
159 if (ctx
->Fog
.Enabled
!=state
) {
160 ctx
->Fog
.Enabled
= state
;
161 ctx
->Enabled
^= ENABLE_FOG
;
162 ctx
->NewState
|= NEW_FOG
|NEW_RASTER_OPS
;
173 if (ctx
->Light
.Light
[cap
-GL_LIGHT0
].Enabled
!= state
)
175 ctx
->Light
.Light
[cap
-GL_LIGHT0
].Enabled
= state
;
178 insert_at_tail(&ctx
->Light
.EnabledList
,
179 &ctx
->Light
.Light
[cap
-GL_LIGHT0
]);
180 if (ctx
->Light
.Enabled
)
181 ctx
->Enabled
|= ENABLE_LIGHT
;
183 remove_from_list(&ctx
->Light
.Light
[cap
-GL_LIGHT0
]);
184 if (is_empty_list(&ctx
->Light
.EnabledList
))
185 ctx
->Enabled
&= ~ENABLE_LIGHT
;
188 ctx
->NewState
|= NEW_LIGHTING
;
192 if (ctx
->Light
.Enabled
!=state
) {
193 ctx
->Light
.Enabled
= state
;
194 ctx
->Enabled
&= ~ENABLE_LIGHT
;
195 if (state
&& !is_empty_list(&ctx
->Light
.EnabledList
))
196 ctx
->Enabled
|= ENABLE_LIGHT
;
197 ctx
->NewState
|= NEW_LIGHTING
;
201 if (ctx
->Line
.SmoothFlag
!=state
) {
202 ctx
->Line
.SmoothFlag
= state
;
203 ctx
->NewState
|= NEW_RASTER_OPS
;
206 case GL_LINE_STIPPLE
:
207 if (ctx
->Line
.StippleFlag
!=state
) {
208 ctx
->Line
.StippleFlag
= state
;
209 ctx
->TriangleCaps
^= DD_LINE_STIPPLE
;
210 ctx
->NewState
|= NEW_RASTER_OPS
;
213 case GL_INDEX_LOGIC_OP
:
214 if (ctx
->Color
.IndexLogicOpEnabled
!=state
) {
215 ctx
->Color
.IndexLogicOpEnabled
= state
;
216 ctx
->NewState
|= NEW_RASTER_OPS
;
219 case GL_COLOR_LOGIC_OP
:
220 if (ctx
->Color
.ColorLogicOpEnabled
!=state
) {
221 ctx
->Color
.ColorLogicOpEnabled
= state
;
222 ctx
->NewState
|= NEW_RASTER_OPS
;
225 case GL_MAP1_COLOR_4
:
226 ctx
->Eval
.Map1Color4
= state
;
229 ctx
->Eval
.Map1Index
= state
;
232 ctx
->Eval
.Map1Normal
= state
;
234 case GL_MAP1_TEXTURE_COORD_1
:
235 ctx
->Eval
.Map1TextureCoord1
= state
;
237 case GL_MAP1_TEXTURE_COORD_2
:
238 ctx
->Eval
.Map1TextureCoord2
= state
;
240 case GL_MAP1_TEXTURE_COORD_3
:
241 ctx
->Eval
.Map1TextureCoord3
= state
;
243 case GL_MAP1_TEXTURE_COORD_4
:
244 ctx
->Eval
.Map1TextureCoord4
= state
;
246 case GL_MAP1_VERTEX_3
:
247 ctx
->Eval
.Map1Vertex3
= state
;
249 case GL_MAP1_VERTEX_4
:
250 ctx
->Eval
.Map1Vertex4
= state
;
252 case GL_MAP2_COLOR_4
:
253 ctx
->Eval
.Map2Color4
= state
;
256 ctx
->Eval
.Map2Index
= state
;
259 ctx
->Eval
.Map2Normal
= state
;
261 case GL_MAP2_TEXTURE_COORD_1
:
262 ctx
->Eval
.Map2TextureCoord1
= state
;
264 case GL_MAP2_TEXTURE_COORD_2
:
265 ctx
->Eval
.Map2TextureCoord2
= state
;
267 case GL_MAP2_TEXTURE_COORD_3
:
268 ctx
->Eval
.Map2TextureCoord3
= state
;
270 case GL_MAP2_TEXTURE_COORD_4
:
271 ctx
->Eval
.Map2TextureCoord4
= state
;
273 case GL_MAP2_VERTEX_3
:
274 ctx
->Eval
.Map2Vertex3
= state
;
276 case GL_MAP2_VERTEX_4
:
277 ctx
->Eval
.Map2Vertex4
= state
;
280 if (ctx
->Transform
.Normalize
!= state
) {
281 ctx
->Transform
.Normalize
= state
;
282 ctx
->NewState
|= NEW_NORMAL_TRANSFORM
|NEW_LIGHTING
;
283 ctx
->Enabled
^= ENABLE_NORMALIZE
;
286 case GL_POINT_SMOOTH
:
287 if (ctx
->Point
.SmoothFlag
!=state
) {
288 ctx
->Point
.SmoothFlag
= state
;
289 ctx
->NewState
|= NEW_RASTER_OPS
;
292 case GL_POLYGON_SMOOTH
:
293 if (ctx
->Polygon
.SmoothFlag
!=state
) {
294 ctx
->Polygon
.SmoothFlag
= state
;
295 ctx
->NewState
|= NEW_RASTER_OPS
;
298 case GL_POLYGON_STIPPLE
:
299 if (ctx
->Polygon
.StippleFlag
!=state
) {
300 ctx
->Polygon
.StippleFlag
= state
;
301 ctx
->TriangleCaps
^= DD_TRI_STIPPLE
;
302 ctx
->NewState
|= NEW_RASTER_OPS
;
305 case GL_POLYGON_OFFSET_POINT
:
306 if (ctx
->Polygon
.OffsetPoint
!=state
) {
307 ctx
->Polygon
.OffsetPoint
= state
;
308 ctx
->NewState
|= NEW_POLYGON
;
311 case GL_POLYGON_OFFSET_LINE
:
312 if (ctx
->Polygon
.OffsetLine
!=state
) {
313 ctx
->Polygon
.OffsetLine
= state
;
314 ctx
->NewState
|= NEW_POLYGON
;
317 case GL_POLYGON_OFFSET_FILL
:
318 /*case GL_POLYGON_OFFSET_EXT:*/
319 if (ctx
->Polygon
.OffsetFill
!=state
) {
320 ctx
->Polygon
.OffsetFill
= state
;
321 ctx
->NewState
|= NEW_POLYGON
;
324 case GL_RESCALE_NORMAL_EXT
:
325 if (ctx
->Transform
.RescaleNormals
!= state
) {
326 ctx
->Transform
.RescaleNormals
= state
;
327 ctx
->NewState
|= NEW_NORMAL_TRANSFORM
|NEW_LIGHTING
;
328 ctx
->Enabled
^= ENABLE_RESCALE
;
331 case GL_SCISSOR_TEST
:
332 if (ctx
->Scissor
.Enabled
!=state
) {
333 ctx
->Scissor
.Enabled
= state
;
334 ctx
->NewState
|= NEW_RASTER_OPS
;
337 case GL_SHARED_TEXTURE_PALETTE_EXT
:
338 ctx
->Texture
.SharedPalette
= state
;
339 if (ctx
->Driver
.UseGlobalTexturePalette
)
340 (*ctx
->Driver
.UseGlobalTexturePalette
)( ctx
, state
);
342 case GL_STENCIL_TEST
:
343 if (state
&& ctx
->Visual
->StencilBits
==0) {
344 gl_warning(ctx
, "glEnable(GL_STENCIL_TEST) but no stencil buffer");
347 if (ctx
->Stencil
.Enabled
!=state
) {
348 ctx
->Stencil
.Enabled
= state
;
349 ctx
->NewState
|= NEW_RASTER_OPS
;
350 ctx
->TriangleCaps
^= DD_STENCIL
;
354 if (ctx
->Visual
->RGBAflag
) {
355 const GLuint curr
= ctx
->Texture
.CurrentUnit
;
356 const GLuint flag
= TEXTURE0_1D
<< (curr
* 4);
357 struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[curr
];
358 ctx
->NewState
|= NEW_TEXTURE_ENABLE
;
360 texUnit
->Enabled
|= TEXTURE0_1D
;
361 ctx
->Enabled
|= flag
;
364 texUnit
->Enabled
&= ~TEXTURE0_1D
;
365 ctx
->Enabled
&= ~flag
;
370 if (ctx
->Visual
->RGBAflag
) {
371 const GLuint curr
= ctx
->Texture
.CurrentUnit
;
372 const GLuint flag
= TEXTURE0_2D
<< (curr
* 4);
373 struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[curr
];
374 ctx
->NewState
|= NEW_TEXTURE_ENABLE
;
376 texUnit
->Enabled
|= TEXTURE0_2D
;
377 ctx
->Enabled
|= flag
;
380 texUnit
->Enabled
&= ~TEXTURE0_2D
;
381 ctx
->Enabled
&= ~flag
;
386 if (ctx
->Visual
->RGBAflag
) {
387 const GLuint curr
= ctx
->Texture
.CurrentUnit
;
388 const GLuint flag
= TEXTURE0_3D
<< (curr
* 4);
389 struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[curr
];
390 ctx
->NewState
|= NEW_TEXTURE_ENABLE
;
392 texUnit
->Enabled
|= TEXTURE0_3D
;
393 ctx
->Enabled
|= flag
;
396 texUnit
->Enabled
&= ~TEXTURE0_3D
;
397 ctx
->Enabled
&= ~flag
;
401 case GL_TEXTURE_GEN_Q
:
403 struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
405 texUnit
->TexGenEnabled
|= Q_BIT
;
407 texUnit
->TexGenEnabled
&= ~Q_BIT
;
408 ctx
->NewState
|= NEW_TEXTURING
;
411 case GL_TEXTURE_GEN_R
:
413 struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
415 texUnit
->TexGenEnabled
|= R_BIT
;
417 texUnit
->TexGenEnabled
&= ~R_BIT
;
418 ctx
->NewState
|= NEW_TEXTURING
;
421 case GL_TEXTURE_GEN_S
:
423 struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
425 texUnit
->TexGenEnabled
|= S_BIT
;
427 texUnit
->TexGenEnabled
&= ~S_BIT
;
428 ctx
->NewState
|= NEW_TEXTURING
;
431 case GL_TEXTURE_GEN_T
:
433 struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
435 texUnit
->TexGenEnabled
|= T_BIT
;
437 texUnit
->TexGenEnabled
&= ~T_BIT
;
438 ctx
->NewState
|= NEW_TEXTURING
;
445 case GL_VERTEX_ARRAY
:
446 ctx
->Array
.Vertex
.Enabled
= state
;
448 case GL_NORMAL_ARRAY
:
449 ctx
->Array
.Normal
.Enabled
= state
;
452 ctx
->Array
.Color
.Enabled
= state
;
455 ctx
->Array
.Index
.Enabled
= state
;
457 case GL_TEXTURE_COORD_ARRAY
:
458 ctx
->Array
.TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
= state
;
460 case GL_EDGE_FLAG_ARRAY
:
461 ctx
->Array
.EdgeFlag
.Enabled
= state
;
466 gl_error( ctx
, GL_INVALID_ENUM
, "glEnable" );
469 gl_error( ctx
, GL_INVALID_ENUM
, "glDisable" );
474 if (ctx
->Driver
.Enable
) {
475 (*ctx
->Driver
.Enable
)( ctx
, cap
, state
);
482 void gl_Enable( GLcontext
* ctx
, GLenum cap
)
484 gl_set_enable( ctx
, cap
, GL_TRUE
);
489 void gl_Disable( GLcontext
* ctx
, GLenum cap
)
491 gl_set_enable( ctx
, cap
, GL_FALSE
);
496 GLboolean
gl_IsEnabled( GLcontext
* ctx
, GLenum cap
)
500 return ctx
->Color
.AlphaEnabled
;
502 return ctx
->Eval
.AutoNormal
;
504 return ctx
->Color
.BlendEnabled
;
511 return ctx
->Transform
.ClipEnabled
[cap
-GL_CLIP_PLANE0
];
512 case GL_COLOR_MATERIAL
:
513 return ctx
->Light
.ColorMaterialEnabled
;
515 return ctx
->Polygon
.CullFlag
;
517 return ctx
->Depth
.Test
;
519 return ctx
->Color
.DitherFlag
;
521 return ctx
->Fog
.Enabled
;
523 return ctx
->Light
.Enabled
;
532 return ctx
->Light
.Light
[cap
-GL_LIGHT0
].Enabled
;
534 return ctx
->Line
.SmoothFlag
;
535 case GL_LINE_STIPPLE
:
536 return ctx
->Line
.StippleFlag
;
537 case GL_INDEX_LOGIC_OP
:
538 return ctx
->Color
.IndexLogicOpEnabled
;
539 case GL_COLOR_LOGIC_OP
:
540 return ctx
->Color
.ColorLogicOpEnabled
;
541 case GL_MAP1_COLOR_4
:
542 return ctx
->Eval
.Map1Color4
;
544 return ctx
->Eval
.Map1Index
;
546 return ctx
->Eval
.Map1Normal
;
547 case GL_MAP1_TEXTURE_COORD_1
:
548 return ctx
->Eval
.Map1TextureCoord1
;
549 case GL_MAP1_TEXTURE_COORD_2
:
550 return ctx
->Eval
.Map1TextureCoord2
;
551 case GL_MAP1_TEXTURE_COORD_3
:
552 return ctx
->Eval
.Map1TextureCoord3
;
553 case GL_MAP1_TEXTURE_COORD_4
:
554 return ctx
->Eval
.Map1TextureCoord4
;
555 case GL_MAP1_VERTEX_3
:
556 return ctx
->Eval
.Map1Vertex3
;
557 case GL_MAP1_VERTEX_4
:
558 return ctx
->Eval
.Map1Vertex4
;
559 case GL_MAP2_COLOR_4
:
560 return ctx
->Eval
.Map2Color4
;
562 return ctx
->Eval
.Map2Index
;
564 return ctx
->Eval
.Map2Normal
;
565 case GL_MAP2_TEXTURE_COORD_1
:
566 return ctx
->Eval
.Map2TextureCoord1
;
567 case GL_MAP2_TEXTURE_COORD_2
:
568 return ctx
->Eval
.Map2TextureCoord2
;
569 case GL_MAP2_TEXTURE_COORD_3
:
570 return ctx
->Eval
.Map2TextureCoord3
;
571 case GL_MAP2_TEXTURE_COORD_4
:
572 return ctx
->Eval
.Map2TextureCoord4
;
573 case GL_MAP2_VERTEX_3
:
574 return ctx
->Eval
.Map2Vertex3
;
575 case GL_MAP2_VERTEX_4
:
576 return ctx
->Eval
.Map2Vertex4
;
578 return ctx
->Transform
.Normalize
;
579 case GL_POINT_SMOOTH
:
580 return ctx
->Point
.SmoothFlag
;
581 case GL_POLYGON_SMOOTH
:
582 return ctx
->Polygon
.SmoothFlag
;
583 case GL_POLYGON_STIPPLE
:
584 return ctx
->Polygon
.StippleFlag
;
585 case GL_POLYGON_OFFSET_POINT
:
586 return ctx
->Polygon
.OffsetPoint
;
587 case GL_POLYGON_OFFSET_LINE
:
588 return ctx
->Polygon
.OffsetLine
;
589 case GL_POLYGON_OFFSET_FILL
:
590 /*case GL_POLYGON_OFFSET_EXT:*/
591 return ctx
->Polygon
.OffsetFill
;
592 case GL_RESCALE_NORMAL_EXT
:
593 return ctx
->Transform
.RescaleNormals
;
594 case GL_SCISSOR_TEST
:
595 return ctx
->Scissor
.Enabled
;
596 case GL_SHARED_TEXTURE_PALETTE_EXT
:
597 return ctx
->Texture
.SharedPalette
;
598 case GL_STENCIL_TEST
:
599 return ctx
->Stencil
.Enabled
;
602 const struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
603 return (texUnit
->Enabled
& TEXTURE0_1D
) ? GL_TRUE
: GL_FALSE
;
607 const struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
608 return (texUnit
->Enabled
& TEXTURE0_2D
) ? GL_TRUE
: GL_FALSE
;
612 const struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
613 return (texUnit
->Enabled
& TEXTURE0_3D
) ? GL_TRUE
: GL_FALSE
;
615 case GL_TEXTURE_GEN_Q
:
617 const struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
618 return (texUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
620 case GL_TEXTURE_GEN_R
:
622 const struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
623 return (texUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
625 case GL_TEXTURE_GEN_S
:
627 const struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
628 return (texUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
630 case GL_TEXTURE_GEN_T
:
632 const struct gl_texture_unit
*texUnit
= &ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
];
633 return (texUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
639 case GL_VERTEX_ARRAY
:
640 return ctx
->Array
.Vertex
.Enabled
;
641 case GL_NORMAL_ARRAY
:
642 return ctx
->Array
.Normal
.Enabled
;
644 return ctx
->Array
.Color
.Enabled
;
646 return ctx
->Array
.Index
.Enabled
;
647 case GL_TEXTURE_COORD_ARRAY
:
648 return ctx
->Array
.TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
;
649 case GL_EDGE_FLAG_ARRAY
:
650 return ctx
->Array
.EdgeFlag
.Enabled
;
652 gl_error( ctx
, GL_INVALID_ENUM
, "glIsEnabled" );
660 static void gl_client_state( GLcontext
*ctx
, GLenum cap
, GLboolean state
)
662 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx
,
664 ? "glEnableClientState"
665 : "glDisableClientState") );
668 case GL_VERTEX_ARRAY
:
669 ctx
->Array
.Vertex
.Enabled
= state
;
671 case GL_NORMAL_ARRAY
:
672 ctx
->Array
.Normal
.Enabled
= state
;
675 ctx
->Array
.Color
.Enabled
= state
;
678 ctx
->Array
.Index
.Enabled
= state
;
680 case GL_TEXTURE_COORD_ARRAY
:
681 ctx
->Array
.TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
= state
;
683 case GL_EDGE_FLAG_ARRAY
:
684 ctx
->Array
.EdgeFlag
.Enabled
= state
;
687 gl_error( ctx
, GL_INVALID_ENUM
, "glEnable/DisableClientState" );
690 ctx
->NewState
|= NEW_CLIENT_STATE
;
695 void gl_EnableClientState( GLcontext
*ctx
, GLenum cap
)
697 gl_client_state( ctx
, cap
, GL_TRUE
);
702 void gl_DisableClientState( GLcontext
*ctx
, GLenum cap
)
704 gl_client_state( ctx
, cap
, GL_FALSE
);