Окно перенасыщения PyOpenGL

Итак, я недавно начал использовать модуль PyOpenGL GLUT и не могу найти по нему простых руководств (ссылки на любые будут оценены), и я просто хочу создать окно перенасыщения, используя glutCreateWindow('window'), но как только всплывает окно, оно исчезает. Я пробовал использовать glutMainLoop() в моей основной функции, но это просто выдает ошибку.

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

glutInit()

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

if __name__=='__main__':main()

1 ответ

Решение

Вы должны установить glutDisplayFuncПерезвоните. Основной цикл перенасыщения вызывает обратный вызов дисплея.

Минимальный пример:

      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 отмечает текущее окно как повторно отображаемое и, следовательно, вызывает непрерывное перерисовку отображения, что необходимо для анимации.

Другие вопросы по тегам