bugfix [#24704] UV editor: [x] modified does not update on change of modifiers

- VBO UV Edge display wasn't allocating a large enough array for drawing.
- VBO UV Edge drawing was using an edge flag with faces.
- notifier for modifiers updating the UV window.
This commit is contained in:
2010-11-15 08:03:20 +00:00
parent 6401058c22
commit 4661fb03a9
2 changed files with 8 additions and 3 deletions

View File

@@ -289,7 +289,7 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
GPU_uvedge_setup(dm);
if( !GPU_buffer_legacy(dm) ) {
for(i = 0; i < dm->numFaceData; i++, mf++) {
if(mf->flag&ME_LOOSEEDGE) {
if(!(mf->flag&ME_HIDE)) {
draw = 1;
}
else {

View File

@@ -1179,8 +1179,13 @@ void GPU_buffer_copy_uvedge(DerivedMesh *dm, float *varray, int *UNUSED(index),
GPUBuffer *GPU_buffer_uvedge( DerivedMesh *dm )
{
DEBUG_VBO("GPU_buffer_uvedge\n");
return GPU_buffer_setup( dm, dm->drawObject, sizeof(float)*2*(dm->drawObject->nelements/3)*2, GL_ARRAY_BUFFER_ARB, 0, GPU_buffer_copy_uvedge);
/* logic here:
* ...each face gets 3 'nelements'
* ...3 edges per triangle
* ...each edge has its own, non-shared coords.
* so each tri corner needs minimum of 4 floats, quads used less so here we can over allocate and assume all tris.
* */
return GPU_buffer_setup( dm, dm->drawObject, 4 * sizeof(float) * dm->drawObject->nelements, GL_ARRAY_BUFFER_ARB, 0, GPU_buffer_copy_uvedge);
}