在循环中使用glut时,freeglut错误“在未首先调用'glutInit'的情况下调用函数”

2024-06-28 20:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的程序中打开和关闭好几次窗口。我想到了这个python代码:

#!/usr/bin/python
from OpenGL.GLUT import *
from OpenGL.GLU import *
from OpenGL.GL import *

#parameters for viewer
name = 'Viewer'
width, height = 500, 500
spheresize = 0.3

def display():
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
    glLoadIdentity()
    gluLookAt(0,0,10,0,0,0,0,1,0)
    glPushMatrix()           
    color = [1.0,0.0,0.0,1.0]
    glMaterialfv(GL_FRONT,GL_DIFFUSE,color)    
    glTranslatef(0.0,0.0,1.0)   
    glutSolidSphere(spheresize,20,20)  
    glPopMatrix()
    glutSwapBuffers()
    return                      

def closing():
   glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS)         glutLeaveMainLoop()
   return                 

#---------------BEGIN PROGRAM----------------
while 1:
   glutInit()
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
   glutInitWindowSize(width,height)
   glutCreateWindow(name)
   glClearColor(0.,1.0,0.,1.)
   glShadeModel(GL_SMOOTH)
   glEnable(GL_CULL_FACE)
   glEnable(GL_DEPTH_TEST)  
   glEnable(GL_LIGHTING)
   glEnable(GL_LIGHT0)

   glMatrixMode(GL_PROJECTION)
   gluPerspective(40.,1.,1.,40.)
   glMatrixMode(GL_MODELVIEW)
   glPushMatrix()

   glutDisplayFunc(display)
   glutCloseFunc(closing)

   glutMainLoop()

   print "\n\nMAIN MENUE:"
   print "p - print"
   print "q - quit"
   option = raw_input()

   if option == "q":
      raise SystemExit

   elif option == "p":
      print ("Hello World!")

当我尝试运行这个窗口时,窗口按我的预期关闭,但是它在使用选项'p'和之后崩溃 freeglut错误:调用函数glutCreateWindow时未首先调用“glutInit”。

在我发现其他一些关于类似问题的文章后,我认为这可能是我的库链接问题,所以我尝试在另一台计算机上的干净python环境中运行它。它给出了同样的错误。在

有人知道我可能犯了什么错误吗?在


Tags: namefromimportdef错误widthopengloption