Home | Info | Community | Development | myReactOS | Contact Us
[static]
Helper to enable/disable client-side state.
Definition at line 57 of file enable.c.
Referenced by _mesa_DisableClientState(), _mesa_EnableClientState(), and _mesa_set_enable().
{ GLuint flag; GLboolean *var; switch (cap) { case GL_VERTEX_ARRAY: var = &ctx->Array.ArrayObj->Vertex.Enabled; flag = _NEW_ARRAY_VERTEX; break; case GL_NORMAL_ARRAY: var = &ctx->Array.ArrayObj->Normal.Enabled; flag = _NEW_ARRAY_NORMAL; break; case GL_COLOR_ARRAY: var = &ctx->Array.ArrayObj->Color.Enabled; flag = _NEW_ARRAY_COLOR0; break; case GL_INDEX_ARRAY: var = &ctx->Array.ArrayObj->Index.Enabled; flag = _NEW_ARRAY_INDEX; break; case GL_TEXTURE_COORD_ARRAY: var = &ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled; flag = _NEW_ARRAY_TEXCOORD(ctx->Array.ActiveTexture); break; case GL_EDGE_FLAG_ARRAY: var = &ctx->Array.ArrayObj->EdgeFlag.Enabled; flag = _NEW_ARRAY_EDGEFLAG; break; case GL_FOG_COORDINATE_ARRAY_EXT: var = &ctx->Array.ArrayObj->FogCoord.Enabled; flag = _NEW_ARRAY_FOGCOORD; break; case GL_SECONDARY_COLOR_ARRAY_EXT: var = &ctx->Array.ArrayObj->SecondaryColor.Enabled; flag = _NEW_ARRAY_COLOR1; break; #if FEATURE_point_size_array case GL_POINT_SIZE_ARRAY_OES: var = &ctx->Array.ArrayObj->PointSize.Enabled; flag = _NEW_ARRAY_POINT_SIZE; break; #endif #if FEATURE_NV_vertex_program case GL_VERTEX_ATTRIB_ARRAY0_NV: case GL_VERTEX_ATTRIB_ARRAY1_NV: case GL_VERTEX_ATTRIB_ARRAY2_NV: case GL_VERTEX_ATTRIB_ARRAY3_NV: case GL_VERTEX_ATTRIB_ARRAY4_NV: case GL_VERTEX_ATTRIB_ARRAY5_NV: case GL_VERTEX_ATTRIB_ARRAY6_NV: case GL_VERTEX_ATTRIB_ARRAY7_NV: case GL_VERTEX_ATTRIB_ARRAY8_NV: case GL_VERTEX_ATTRIB_ARRAY9_NV: case GL_VERTEX_ATTRIB_ARRAY10_NV: case GL_VERTEX_ATTRIB_ARRAY11_NV: case GL_VERTEX_ATTRIB_ARRAY12_NV: case GL_VERTEX_ATTRIB_ARRAY13_NV: case GL_VERTEX_ATTRIB_ARRAY14_NV: case GL_VERTEX_ATTRIB_ARRAY15_NV: CHECK_EXTENSION(NV_vertex_program, cap); { GLint n = (GLint) cap - GL_VERTEX_ATTRIB_ARRAY0_NV; var = &ctx->Array.ArrayObj->VertexAttrib[n].Enabled; flag = _NEW_ARRAY_ATTRIB(n); } break; #endif /* FEATURE_NV_vertex_program */ default: _mesa_error( ctx, GL_INVALID_ENUM, "glEnable/DisableClientState(0x%x)", cap); return; } if (*var == state) return; FLUSH_VERTICES(ctx, _NEW_ARRAY); ctx->Array.NewState |= flag; _ae_invalidate_state(ctx, _NEW_ARRAY); *var = state; if (state) ctx->Array.ArrayObj->_Enabled |= flag; else ctx->Array.ArrayObj->_Enabled &= ~flag; if (ctx->Driver.Enable) { ctx->Driver.Enable( ctx, cap, state ); } }