Ok, this is really driving me insane. Look at these two functions:
#if 0
//DRIVER BUG??
void DrawArrays(void)
{
int i;
for(i = 0; i < world_apd.num_shaders; i++)
re->DrawIndexedArrayRange(world_v_buffer, world_i_buffer, index_refs[i], num_shader_indices[i]);
}
#else
void DrawArrays(void)
{
vertex_t *verts;
int *indices;
int i, j;
indices = re->MapGeometryArray(GT_INDEX_ARRAY, world_i_buffer, GL_READ_WRITE_ARB);
glBegin(GL_TRIANGLES);
for(j = 0; j < world_apd.num_shaders; j++)
{
for(i = index_refs[j]; i < index_refs[j] + num_shader_indices[j]; i++)
{
glArrayElement(indices[i]);
}
}
glEnd();
re->UnmapGeometryArray(GT_INDEX_ARRAY, world_i_buffer);
}
#endif
If I update the vertex buffer object and then call the first function, the GL draws some weird polygons as if I didn’t specify the vertices right… However, this isn’t the case, since the second one functions properly all the time. I’m not unbinding the VBOs, the alignment is right, there’s no difference between Map()'ing and BufferData()'ing the vertex buffer object, it just seems like a driver bug (81.95, GF6600GT, Athlon64) to me…
Any ideas?
Regards,
-phil.