Esempio n. 1
0
File: api_eval.c Progetto: aosm/X11
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]);
   }
}
Esempio n. 3
0
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);
}