コード例 #1
0
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);
    }
}
コード例 #2
0
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);
   }
}
コード例 #3
0
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 ];
}