fix an attr/src mix-up when setting-up/binding vertex arrays

This fixes problems with incorrect material coefficients when glMaterial
is called per-vertex.
This commit is contained in:
Brian Paul 2008-05-16 15:34:22 -06:00
parent 5f6a726d9f
commit ffbd455a36
2 changed files with 7 additions and 5 deletions

View File

@ -198,7 +198,7 @@ static void vbo_exec_bind_arrays( GLcontext *ctx )
arrays[attr].BufferObj = exec->vtx.bufferobj;
arrays[attr]._MaxElement = count; /* ??? */
data += exec->vtx.attrsz[attr] * sizeof(GLfloat);
data += exec->vtx.attrsz[src] * sizeof(GLfloat);
}
}
}

View File

@ -131,10 +131,12 @@ static void vbo_bind_vertex_list( GLcontext *ctx,
break;
}
for (attr = 0; attr < VBO_ATTRIB_MAX; attr++) {
if (node->attrsz[attr]) {
for (attr = 0; attr < VERT_ATTRIB_MAX; attr++) {
GLuint src = map[attr];
if (node->attrsz[src]) {
arrays[attr].Ptr = (const GLubyte *)data;
arrays[attr].Size = node->attrsz[attr];
arrays[attr].Size = node->attrsz[src];
arrays[attr].StrideB = node->vertex_size * sizeof(GLfloat);
arrays[attr].Stride = node->vertex_size * sizeof(GLfloat);
arrays[attr].Type = GL_FLOAT;
@ -144,7 +146,7 @@ static void vbo_bind_vertex_list( GLcontext *ctx,
assert(arrays[attr].BufferObj->Name);
data += node->attrsz[attr] * sizeof(GLfloat);
data += node->attrsz[src] * sizeof(GLfloat);
}
}
}