【发布时间】:2014-07-15 07:17:35
【问题描述】:
我正在寻找我的代码的优化,它打印一个星球。实际上,我想旋转我的相机来看看我星球的不同部分,但它真的很慢而且很长。
这是我的 pyOpenGL 代码的一部分,用于打印我的不同对象:
def _DrawGLScene(self):
if not self.printed:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
# Camera movements
glTranslatef(0.0, 0.0, self.move_z)
glRotatef(self.rx, 1.0, 0.0, 0.0)
glRotatef(self.ry, 0.0, 1.0, 0.0)
glRotatef(self.rz, 0.0, 0.0, 1.0)
# Print objects
if not self.printed:
self.planet.draw()
self.printed = True
glutSwapBuffers()
self.planet.draw() 方法只绘制一个 Triangle 对象列表,其中定义了自己的draw_triangle 方法:
def draw_triangle(self):
glBegin(GL_POLYGON)
glColor3f(self.color_a[0], self.color_a[1], self.color_a[2])
glVertex3f(self.point_a[0], self.point_a[1], self.point_a[2])
glColor3f(self.color_b[0], self.color_b[1], self.color_b[2])
glVertex3f(self.point_b[0], self.point_b[1], self.point_b[2])
glColor3f(self.color_c[0], self.color_c[1], self.color_c[2])
glVertex3f(self.point_c[0], self.point_c[1], self.point_c[2])
glEnd()
return
当我旋转相机时,我必须重新绘制所有三角形,这对于 100,000 个三角形来说真的很慢。如何优化 OpenGL 的使用?
【问题讨论】: