chiark / gitweb /
Fix for mixed view mode.
authorDaid <daid303@gmail.com>
Fri, 7 Sep 2012 15:42:40 +0000 (17:42 +0200)
committerDaid <daid303@gmail.com>
Fri, 7 Sep 2012 15:42:40 +0000 (17:42 +0200)
Cura/gui/preview3d.py

index ec6dce20b2679d7a1c309ce78e8319868603f52a..97f8a3f22daf7dd78e0feea1e46569fbb2fd4815 100644 (file)
@@ -510,6 +510,27 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                        self.gcodeDisplayListMade += 1\r
                        self.Refresh()\r
                \r
+               glPushMatrix()\r
+               glTranslate(self.parent.machineCenter.x, self.parent.machineCenter.y, 0)\r
+               for obj in self.parent.objectList:\r
+                       if obj.mesh == None:\r
+                               continue\r
+                       if obj.displayList == None:\r
+                               obj.displayList = glGenLists(1);\r
+                       if obj.dirty:\r
+                               obj.dirty = False\r
+                               glNewList(obj.displayList, GL_COMPILE)\r
+                               opengl.DrawMesh(obj.mesh)\r
+                               glEndList()\r
+                       \r
+                       if self.viewMode == "Mixed":\r
+                               glDisable(GL_BLEND)\r
+                               glColor3f(0.0,0.0,0.0)\r
+                               self.drawModel(obj)\r
+                               glColor3f(1.0,1.0,1.0)\r
+                               glClear(GL_DEPTH_BUFFER_BIT)\r
+               glPopMatrix()\r
+               \r
                if self.parent.gcode != None and (self.viewMode == "GCode" or self.viewMode == "Mixed"):\r
                        glEnable(GL_COLOR_MATERIAL)\r
                        glEnable(GL_LIGHTING)\r
@@ -539,13 +560,6 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                for obj in self.parent.objectList:\r
                        if obj.mesh == None:\r
                                continue\r
-                       if obj.displayList == None:\r
-                               obj.displayList = glGenLists(1);\r
-                       if obj.dirty:\r
-                               obj.dirty = False\r
-                               glNewList(obj.displayList, GL_COMPILE)\r
-                               opengl.DrawMesh(obj.mesh)\r
-                               glEndList()\r
                        \r
                        if self.viewMode == "Transparent" or self.viewMode == "Mixed":\r
                                glLightfv(GL_LIGHT0, GL_DIFFUSE, map(lambda x: x / 2, self.objColor[self.parent.objectList.index(obj)]))\r
@@ -563,6 +577,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                                glBlendFunc(GL_ONE, GL_ONE)\r
                                glEnable(GL_LIGHTING)\r
                                self.drawModel(obj)\r
+                               glEnable(GL_DEPTH_TEST)\r
                        elif self.viewMode == "X-Ray":\r
                                glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)\r
                                glDisable(GL_LIGHTING)\r
@@ -606,7 +621,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                                glDisable(GL_STENCIL_TEST)\r
                                glEnable(GL_DEPTH_TEST)\r
                                \r
-                               #Fix the depth buffer for the outline drawing.\r
+                               #Fix the depth buffer\r
                                glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)\r
                                self.drawModel(obj)\r
                                glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)\r