void do_vertex_attrib_enable( GLuint index, GLboolean val ) { __GLXcontext *gc = __glXGetCurrentContext(); __GLXattribute * state = (__GLXattribute *)(gc->client_state_private); if ( ! __glXSetArrayEnable( state, GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB, index, val ) ) { __glXSetError(gc, GL_INVALID_ENUM); } }
static void do_enable_disable(GLenum array, GLboolean val) { __GLXcontext *gc = __glXGetCurrentContext(); __GLXattribute *state = (__GLXattribute *) (gc->client_state_private); unsigned index = 0; if (array == GL_TEXTURE_COORD_ARRAY) { index = __glXGetActiveTextureUnit(state); } if (!__glXSetArrayEnable(state, array, index, val)) { __glXSetError(gc, GL_INVALID_ENUM); } }
void __glXPopArrayState( __GLXattribute * state ) { struct array_state_vector * arrays = state->array_state; struct array_stack_state * stack; unsigned i; arrays->stack_index--; stack = & arrays->stack[ (arrays->stack_index * arrays->num_arrays) ]; for ( i = 0 ; i < arrays->num_arrays ; i++ ) { switch ( stack[i].key ) { case GL_NORMAL_ARRAY: __indirect_glNormalPointer( stack[i].data_type, stack[i].user_stride, stack[i].data ); break; case GL_COLOR_ARRAY: __indirect_glColorPointer( stack[i].count, stack[i].data_type, stack[i].user_stride, stack[i].data ); break; case GL_INDEX_ARRAY: __indirect_glIndexPointer( stack[i].data_type, stack[i].user_stride, stack[i].data ); break; case GL_EDGE_FLAG_ARRAY: __indirect_glEdgeFlagPointer( stack[i].user_stride, stack[i].data ); break; case GL_TEXTURE_COORD_ARRAY: arrays->active_texture_unit = stack[i].index; __indirect_glTexCoordPointer( stack[i].count, stack[i].data_type, stack[i].user_stride, stack[i].data ); break; case GL_SECONDARY_COLOR_ARRAY: __indirect_glSecondaryColorPointerEXT( stack[i].count, stack[i].data_type, stack[i].user_stride, stack[i].data ); break; case GL_FOG_COORDINATE_ARRAY: __indirect_glFogCoordPointerEXT( stack[i].data_type, stack[i].user_stride, stack[i].data ); break; } __glXSetArrayEnable( state, stack[i].key, stack[i].index, stack[i].enabled ); } arrays->active_texture_unit = arrays->active_texture_unit_stack[ arrays->stack_index ]; }