Fix for size of VBO index type when drawing multires in sculpt mode.
The VBO index type can be either ushort or uint depending on the grid size. The comparison was checking how many quads are in the array, but this was incorrect; the size of the index elements should depend on the maximum value they reference, i.e. the maximum coord/normal element.
This commit is contained in:
@@ -1572,7 +1572,7 @@ static GLuint gpu_get_grid_buffer(int gridsize, GLenum *index_type, unsigned *to
|
||||
|
||||
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffer);
|
||||
|
||||
if(*totquad < USHRT_MAX) {
|
||||
if(gridsize * gridsize < USHRT_MAX) {
|
||||
*index_type = GL_UNSIGNED_SHORT;
|
||||
FILL_QUAD_BUFFER(unsigned short, *totquad, buffer);
|
||||
}
|
||||
@@ -1617,7 +1617,7 @@ GPU_Buffers *GPU_build_grid_buffers(int *grid_indices, int totgrid,
|
||||
|
||||
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, buffers->index_buf);
|
||||
|
||||
if(totquad < USHRT_MAX) {
|
||||
if(totgrid * gridsize * gridsize < USHRT_MAX) {
|
||||
buffers->index_type = GL_UNSIGNED_SHORT;
|
||||
FILL_QUAD_BUFFER(unsigned short, totquad, buffers->index_buf);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user