Generate 1 GCode layer per draw cycle, this keeps the UI responsive during the generation of display lists with huge GCode files.
This commit is contained in:
parent
58b4a48162
commit
8a495554d8
2 changed files with 17 additions and 12 deletions
|
@ -294,13 +294,6 @@ def DrawGCodeLayer(layer):
|
|||
prevNormal = normal
|
||||
prevVv1 = vv1
|
||||
prevVv3 = vv3
|
||||
|
||||
#for v in path.list:
|
||||
# glBegin(GL_TRIANGLE_FAN)
|
||||
# glVertex3f(v.x, v.y, v.z - 0.001)
|
||||
# for i in xrange(0, 16+1):
|
||||
# glVertex3f(v.x + math.cos(math.pi*2/16*i) * lineWidth, v.y + math.sin(math.pi*2/16*i) * lineWidth, v.z - 0.01)
|
||||
# glEnd()
|
||||
else:
|
||||
glBegin(GL_LINE_STRIP)
|
||||
for v in path.list:
|
||||
|
|
|
@ -372,6 +372,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
|||
self.offsetY = 0
|
||||
self.view3D = True
|
||||
self.gcodeDisplayList = None
|
||||
self.gcodeDisplayListMade = None
|
||||
self.gcodeDisplayListCount = 0
|
||||
self.objColor = [[1.0, 0.8, 0.6, 1.0], [0.2, 1.0, 0.1, 1.0], [1.0, 0.2, 0.1, 1.0], [0.1, 0.2, 1.0, 1.0]]
|
||||
|
||||
|
@ -446,13 +447,23 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
|||
self.gcodeDisplayList = glGenLists(len(self.parent.gcode.layerList));
|
||||
self.gcodeDisplayListCount = len(self.parent.gcode.layerList)
|
||||
self.parent.gcodeDirty = False
|
||||
self.gcodeDisplayListMade = []
|
||||
for idx in xrange(0, len(self.parent.gcode.layerList)):
|
||||
self.gcodeDisplayListMade.append(False)
|
||||
|
||||
if self.gcodeDisplayListMade != None:
|
||||
curLayerNum = 0
|
||||
for layer in self.parent.gcode.layerList:
|
||||
if not self.gcodeDisplayListMade[curLayerNum]:
|
||||
glNewList(self.gcodeDisplayList + curLayerNum, GL_COMPILE)
|
||||
opengl.DrawGCodeLayer(layer)
|
||||
glEndList()
|
||||
self.gcodeDisplayListMade[curLayerNum] = True
|
||||
self.Refresh()
|
||||
break
|
||||
curLayerNum += 1
|
||||
if curLayerNum == len(self.parent.gcode.layerList):
|
||||
self.gcodeDisplayListMade = None
|
||||
|
||||
if self.parent.gcode != None and (self.viewMode == "GCode" or self.viewMode == "Mixed"):
|
||||
glEnable(GL_COLOR_MATERIAL)
|
||||
|
@ -467,6 +478,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
|||
c = 0.1
|
||||
glLightfv(GL_LIGHT0, GL_DIFFUSE, [0,0,0,0])
|
||||
glLightfv(GL_LIGHT0, GL_AMBIENT, [c,c,c,c])
|
||||
if self.gcodeDisplayListMade == None or self.gcodeDisplayListMade[i]:
|
||||
glCallList(self.gcodeDisplayList + i)
|
||||
glDisable(GL_LIGHTING)
|
||||
glDisable(GL_COLOR_MATERIAL)
|
||||
|
|
Loading…
Reference in a new issue