| struct vbo_context *vbo = vbo_context(ctx); | struct vbo_context *vbo = vbo_context(ctx); | ||||
| struct vbo_save_context *save = &vbo->save; | struct vbo_save_context *save = &vbo->save; | ||||
| struct gl_client_array *arrays = save->arrays; | struct gl_client_array *arrays = save->arrays; | ||||
| GLuint data = node->buffer_offset; | |||||
| GLuint buffer_offset = node->buffer_offset; | |||||
| const GLuint *map; | const GLuint *map; | ||||
| GLuint attr; | GLuint attr; | ||||
| GLubyte node_attrsz[VBO_ATTRIB_MAX]; /* copy of node->attrsz[] */ | GLubyte node_attrsz[VBO_ATTRIB_MAX]; /* copy of node->attrsz[] */ | ||||
| /* override the default array set above */ | /* override the default array set above */ | ||||
| save->inputs[attr] = &arrays[attr]; | save->inputs[attr] = &arrays[attr]; | ||||
| arrays[attr].Ptr = (const GLubyte *) data; | |||||
| arrays[attr].Ptr = (const GLubyte *) NULL + buffer_offset; | |||||
| arrays[attr].Size = node->attrsz[src]; | arrays[attr].Size = node->attrsz[src]; | ||||
| arrays[attr].StrideB = node->vertex_size * sizeof(GLfloat); | arrays[attr].StrideB = node->vertex_size * sizeof(GLfloat); | ||||
| arrays[attr].Stride = node->vertex_size * sizeof(GLfloat); | arrays[attr].Stride = node->vertex_size * sizeof(GLfloat); | ||||
| assert(arrays[attr].BufferObj->Name); | assert(arrays[attr].BufferObj->Name); | ||||
| data += node->attrsz[src] * sizeof(GLfloat); | |||||
| buffer_offset += node->attrsz[src] * sizeof(GLfloat); | |||||
| varying_inputs |= 1<<attr; | varying_inputs |= 1<<attr; | ||||
| } | } | ||||
| } | } |