首页 > 解决方案 > PyOpenGL 过剩窗口

问题描述

所以我最近开始使用 PyOpenGL 的 GLUT 模块并且找不到任何简单的教程(链接到任何将不胜感激),我只想使用 创建一个 glut 窗口glutCreateWindow('window'),但是一旦窗口弹出它就会消失。我尝试glutMainLoop()在我的主要功能中使用,但它只是给出了一个错误。

from OpenGL.GLU import *
from OpenGL.GL import *

glutInit()

def main():
    glutCreateWindow('window')
    glutMainLoop()

if __name__=='__main__':main()

标签: pyopenglfreeglutglutcreatewindow

解决方案


您必须设置glutDisplayFunc回调。glut 主循环调用显示回调。

最小的例子:

from OpenGL.GLUT import *
from OpenGL.GLU import *
from OpenGL.GL import *

glutInit()

def display():
    glClearColor(1, 0, 0, 0) # red
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

    # your rendering goes here
    # [...]

    glutSwapBuffers()
    glutPostRedisplay()

def main():
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA)
    glutCreateWindow('window')
    glutDisplayFunc(display)
    glutMainLoop()

if __name__=='__main__':
    main()

glutInitDisplayMode 设置初始显示模式。glutSwapBuffers交换当前窗口蚂蚁的缓冲区,从而更新显示。glutPostRedisplay将当前窗口标记为重新显示,因此会导致显示不断重绘,这对于动画来说是必需的。

另请参阅立即模式和旧版 OpenGL


推荐阅读