Add _tnl_set_attr() to complement existing get_attr() call.

This commit is contained in:
Keith Whitwell
2004-02-16 15:15:24 +00:00
parent 7b5199e8a4
commit 477363455d
2 changed files with 31 additions and 5 deletions

View File

@@ -937,11 +937,31 @@ void _tnl_get_attr( GLcontext *ctx, const void *vin,
}
}
/* Else return the value from ctx->Current
/* Else return the value from ctx->Current -- dangerous???
*/
_mesa_memcpy( dest, ctx->Current.Attrib[attr], 4*sizeof(GLfloat));
}
/* Complementary operation to the above.
*/
void _tnl_set_attr( GLcontext *ctx, void *vout,
GLenum attr, const GLfloat *src )
{
struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx);
const struct tnl_clipspace_attr *a = vtx->attr;
int attr_count = vtx->attr_count;
int j;
for (j = 0; j < attr_count; j++) {
if (a[j].attrib == (int)attr) {
a[j].insert[4-1]( &a[j], (GLubyte *)vout + a[j].vertoffset, src );
return;
}
}
}
void *_tnl_get_vertex( GLcontext *ctx, GLuint nr )
{
struct tnl_clipspace *vtx = GET_VERTEX_STATE(ctx);
@@ -981,8 +1001,8 @@ GLuint _tnl_install_attrs( GLcontext *ctx, const struct tnl_attr_map *map,
if (format == EMIT_PAD) {
offset += map[i].offset;
/* fprintf(stderr, "%d: pad %d, offset now %d\n", i, */
/* map[i].offset, offset); */
/* fprintf(stderr, "%d: pad %d, offset now %d\n", i, */
/* map[i].offset, offset); */
}
else {
@@ -997,8 +1017,8 @@ GLuint _tnl_install_attrs( GLcontext *ctx, const struct tnl_attr_map *map,
else
vtx->attr[j].vertoffset = offset;
/* fprintf(stderr, "%d: %s offset %d\n", i, */
/* format_info[format].name, vtx->attr[j].vertoffset); */
/* fprintf(stderr, "%d: %s offset %d\n", i, */
/* format_info[format].name, vtx->attr[j].vertoffset); */
offset += format_info[format].attrsize;
j++;

View File

@@ -82,6 +82,12 @@ extern void _tnl_copy_pv( GLcontext *ctx, GLuint edst, GLuint esrc );
extern void _tnl_get_attr( GLcontext *ctx, const void *vertex, GLenum attrib,
GLfloat *dest );
/* Complementary to the above.
*/
extern void _tnl_set_attr( GLcontext *ctx, void *vout, GLenum attrib,
const GLfloat *src );
extern void *_tnl_get_vertex( GLcontext *ctx, GLuint nr );