void _mesa_EvalCoord2f( GLfloat u, GLfloat v ) { GET_CURRENT_CONTEXT( ctx ); GLfloat normal[3], texcoord[4], color[4]; GLuint index; COPY_3FV( normal, ctx->Current.Attrib[VERT_ATTRIB_NORMAL] ); COPY_4FV( texcoord, ctx->Current.Attrib[VERT_ATTRIB_TEX0] ); COPY_4FV( color, ctx->Current.Attrib[VERT_ATTRIB_COLOR0] ); index = ctx->Current.Index; do_EvalCoord2f( ctx, u, v ); COPY_3FV( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], normal ); COPY_4FV( ctx->Current.Attrib[VERT_ATTRIB_TEX0], texcoord ); COPY_4FV( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], color ); ctx->Current.Index = index; }
/** Copy all the color attributes from src vertex to dst0 & dst1 vertices */ static INLINE void copy_colors2( struct draw_stage *stage, struct vertex_header *dst0, struct vertex_header *dst1, const struct vertex_header *src ) { const struct flat_stage *flat = flat_stage(stage); uint i; for (i = 0; i < flat->num_color_attribs; i++) { const uint attr = flat->color_attribs[i]; COPY_4FV(dst0->data[attr], src->data[attr]); COPY_4FV(dst1->data[attr], src->data[attr]); } for (i = 0; i < flat->num_spec_attribs; i++) { const uint attr = flat->spec_attribs[i]; COPY_3FV(dst0->data[attr], src->data[attr]); COPY_3FV(dst1->data[attr], src->data[attr]); } }
static void copy_pv_extras( GLcontext *ctx, GLuint dst, GLuint src ) { struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; if (VB->ColorPtr[1]) { COPY_4FV( GET_COLOR(VB->ColorPtr[1], dst), GET_COLOR(VB->ColorPtr[1], src) ); if (VB->SecondaryColorPtr[1]) { COPY_3FV( GET_COLOR(VB->SecondaryColorPtr[1], dst), GET_COLOR(VB->SecondaryColorPtr[1], src) ); } } setup_tab[FX_CONTEXT(ctx)->SetupIndex].copy_pv(ctx, dst, src); }