From 1e5ceceea00c4fef0aaf245f62891d55e83678c9 Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Thu, 21 Dec 2006 00:37:27 +0000 Subject: [PATCH] Correctly balanced a pushmatrix/popmatrix in the snapshot case --- docs/ToDo.txt | 30 +++++++++++++++++++++++++++++- src/meshlab/glarea.cpp | 34 ++++++++++++++-------------------- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/docs/ToDo.txt b/docs/ToDo.txt index 4a2e1e665..1a28ff991 100644 --- a/docs/ToDo.txt +++ b/docs/ToDo.txt @@ -1,6 +1,34 @@ +20/12/06 +tolto bug snapshot +tolto bug obj su facce quadrate + +16/12/06 +aggiunta prima ver dialoghi istantanei. + +11/12/06 +x tolto colorize topologically coherent +x corrected onscreen help + +6/12/06 +x Hole Closing non si pianta + +x Non manifold vertex coloring. + +30/11/06 +x bug saving 3ds +x split meshio baseio +x bug reorient + +24/11/06 +x stat con savedNum e version checking + +22/11/06 +x Patched date dei plugins con al data corrente di compilazione +o Nomi dei file relativi ai dialog +o Rendering dello schermo durante il processing... +o textured/env background 8/11/06 -o Mismatch iomask (dati caricati da file) e currentDataMask (dati correntemente abilitati) +o Mismatch iomask (dati caricati da file) e currentDataMask (dati correntemente abilitati) ?? o Remove duplicate faces o Global check of logging printing (many filters hasn't any) o date dei plugins da cvs? diff --git a/src/meshlab/glarea.cpp b/src/meshlab/glarea.cpp index 293977628..d12e2a25f 100644 --- a/src/meshlab/glarea.cpp +++ b/src/meshlab/glarea.cpp @@ -24,6 +24,9 @@ History $Log$ +Revision 1.110 2006/12/21 00:37:27 cignoni +Correctly balanced a pushmatrix/popmatrix in the snapshot case + Revision 1.109 2006/12/12 00:03:19 cignoni Accidentally deleted a quotation mark just before the commit... @@ -152,6 +155,8 @@ QSize GLArea::sizeHint() const {return QSize(400,300);} void GLArea::initializeGL() { glShadeModel(GL_SMOOTH); + glPixelStorei(GL_PACK_ROW_LENGTH, 0); + glPixelStorei(GL_PACK_ALIGNMENT, 1); glEnable(GL_DEPTH_TEST); glEnable(GL_NORMALIZE); static float diffuseColor[]={1.0,1.0,1.0,1.0}; @@ -322,7 +327,6 @@ void GLArea::paintGL() glPopAttrib(); } glPopMatrix(); - assert(!glGetError()); // ============================================= @@ -347,7 +351,6 @@ void GLArea::paintGL() } // Set proper colorMode - //glDisable(GL_COLOR_MATERIAL); if(rm.colorMode != GLW::CMNone) { glEnable(GL_COLOR_MATERIAL); @@ -366,9 +369,8 @@ void GLArea::paintGL() mm->Render(rm.drawMode,rm.colorMode,rm.textureMode); - if(iEdit){ - iEdit->Decorate(currentEditor,*mm,this); - } + if(iEdit) iEdit->Decorate(currentEditor,*mm,this); + if(iRenderer) { glPopAttrib(); @@ -376,8 +378,7 @@ void GLArea::paintGL() } // Draw the selection - if(rm.selectedFaces) - mm->RenderSelectedFaces(); + if(rm.selectedFaces) mm->RenderSelectedFaces(); if(iDecoratorsList){ pair p; @@ -385,21 +386,19 @@ void GLArea::paintGL() } } ///end if busy - assert(!glGetError()); - // ...and take a snapshot if (takeSnapTile) { glPushAttrib(GL_ENABLE_BIT); - glPixelStorei(GL_PACK_ROW_LENGTH, 0); - glPixelStorei(GL_PACK_ALIGNMENT, 1); tileBuffer=grabFrameBuffer(true); + glMatrixMode(GL_PROJECTION); glPopMatrix(); + glMatrixMode(GL_MODELVIEW); pasteTile(); update(); glPopAttrib(); } - glPopMatrix(); // now we are back in pre-trackball space + glPopMatrix(); // now we are back in pre-trackball space if(hasToPick) { // Double click move picked point to center Point3f pp; @@ -452,15 +451,9 @@ void GLArea::paintGL() log.glDraw(this,currLogLevel,3,qFont.pointSizeF()+(curSiz.height()/225.f),qFont); } - // Second the MESH INFO (numVert,NumFaces,....) - displayMeshInfo(); - // Third the ENV INFO (Fps,ClippingPlanes,....) - //int currentTime=time.elapsed(); - //deltaTime=currentTime-lastTime; - //deltaTime=time.elapsed(); - updateFps(time.elapsed()); - + displayMeshInfo(); // Second the MESH INFO (numVert,NumFaces,....) + updateFps(time.elapsed()); // Third the ENV INFO (Fps,ClippingPlanes,....) displayEnvInfo(); } @@ -473,6 +466,7 @@ void GLArea::paintGL() glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); + assert(!glGetError()); } void GLArea::displayMeshInfo()