diff options
author | Keith Whitwell <keith@tungstengraphics.com> | 2007-01-15 14:20:21 +0000 |
---|---|---|
committer | Keith Whitwell <keith@tungstengraphics.com> | 2007-01-15 14:20:21 +0000 |
commit | 50f76b9d9b4b17940798b44233b9b5af2f932117 (patch) | |
tree | 0544e4703dcaca4fe38c9935907ddc1f5791a026 | |
parent | 82152a2a8e1afeb61710318e769b1379be6c02c6 (diff) |
Correctly initialize current attribute sizes.
Some legacy attributes (eg color) have an initial value other than {0,0,0,1}
which means that their initial size != 1 either.
-rw-r--r-- | src/mesa/vbo/vbo_context.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index 165e32da8a..65998e7ff7 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -47,6 +47,14 @@ extern void _tnl_draw_prims( GLcontext *ctx, #define NR_GENERIC_ATTRIBS 16 #define NR_MAT_ATTRIBS 12 +static GLuint check_size( const GLfloat *attr ) +{ + if (attr[3] != 1.0) return 4; + if (attr[2] != 0.0) return 3; + if (attr[1] != 0.0) return 2; + return 1; +} + static void init_legacy_currval(GLcontext *ctx) { struct vbo_context *vbo = vbo_context(ctx); @@ -63,7 +71,7 @@ static void init_legacy_currval(GLcontext *ctx) /* Size will have to be determined at runtime: */ - cl->Size = 1; + cl->Size = check_size(ctx->Current.Attrib[i]); cl->Stride = 0; cl->StrideB = 0; cl->Enabled = 1; @@ -88,7 +96,6 @@ static void init_generic_currval(GLcontext *ctx) /* This will have to be determined at runtime: */ cl->Size = 1; - cl->Type = GL_FLOAT; cl->Ptr = (const void *)ctx->Current.Attrib[VERT_ATTRIB_GENERIC0 + i]; cl->Stride = 0; |