я понял, что, когда я запускаю этот код треугольник появляется вращающимся в реальное времяПочему мой glutDisplayFunc не обновляется в режиме реального времени?
def main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
glutInitWindowSize(600,400)
glutCreateWindow("Seismic")
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glMatrixMode(GL_MODELVIEW)
glClearColor(0,0,0,0)
glPushMatrix()
gluPerspective(45, (600/400), 0, 15)
glTranslatef(0,-0.2,-1.5)
k = 0
while k<10000:
glRotatef(0.1, 0, 1, 0)
k +=1
print k
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glBegin(GL_TRIANGLES)
glColor3f(1,0,0,0)
glVertex3f(0,0,0)
glColor3f(0,1,0,0)
glVertex3f(0,0.5,0)
glColor3f(0,0,1,0)
glVertex3f(0.5,0.5,0)
glEnd()
glutSwapBuffers()
#time.sleep(1)
glutMainLoop()
return
if __name__ == '__main__': main()
Но, с другой стороны, когда я использую glutDisplayFunc у придется ждать, чтобы закончить цикл, чтобы получить треугольник.
def triangulo():
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glBegin(GL_TRIANGLES)
glColor3f(1,0,0,0)
glVertex3f(0,0,0)
glColor3f(0,1,0,0)
glVertex3f(0,0.5,0)
glColor3f(0,0,1,0)
glVertex3f(0.5,0.5,0)
glEnd()
glutSwapBuffers()
def main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
glutInitWindowSize(600,400)
glutCreateWindow("Seismic")
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glMatrixMode(GL_MODELVIEW)
glClearColor(0,0,0,0)
glPushMatrix()
gluPerspective(45, (600/400), 0, 15) #3D effect
glTranslatef(0,-0.2,-1.5) # Ocurre el pocicionamiento
k = 0
while k<10000:
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glRotatef(0.1, 0, 1, 0) #vector de rotacion (degrees,(eje-vector))
glutDisplayFunc(triangulo)
k +=1
print k
#time.sleep(1)
glutMainLoop()
return
if __name__ == '__main__': main()
Я хотел бы знать, как получить вращающийся треугольник в реальное время, когда glutDisplayFunc используются.
Мне становится ясно. Он работает нормально. Спасибо!!! – Jaxbal