получение ошибок при использовании OpenGL с python на macos - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь поиграться с OpenGl и python на macos.И когда я запускаю код из учебного пособия, я получаю ошибки:

GLUT Предупреждение. Ниже приводится новая проверка для GLUT 3.0;обнови свой код.

GLUT Fatal Error: для окна 1 требуется повторное отображение, но нет обратного вызова дисплея.

Код, который я пытаюсь запустить:

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

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) 
glutInitWindowSize(300, 300)
glutInitWindowPosition(50, 50)
glutInit(sys.argv)
glutCreateWindow(b"Happy New Year!")
glutMainLoop()

Естьуже был задан вопрос об этой проблеме в Stack Overflow , но четкого ответа на этот вопрос не было дано.Насколько я понимаю, я должен добавить

glutDisplayFunc(glutCreateWindow) прямо перед

glutMainLoop()

Но если я это сделаю, я получу еще одну ошибку:

TypeError: эта функция принимает как минимум 1 аргумент (задано 0)

Что не так?

1 Ответ

0 голосов
/ 02 декабря 2018

glutMainLoop запускает цикл обработки событий.При этом вызывается функция обратного вызова, установленная glutDisplayFunc.Вы должны реализовать и установить эту функцию:

например,

def display:
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

    # do the drawing
    # .....

    glutSwapBuffers()
    glutPostRedisplay()

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) 
glutInitWindowSize(300, 300)
glutInitWindowPosition(50, 50)
glutInit(sys.argv)
glutCreateWindow(b"Happy New Year!")

glutDisplayFunc(display)
glutMainLoop()

Примечание, glutPostRedisplay помечает текущее окно как нуждающееся в повторном отображении, это вызывает окнобыть переизданным непрерывно.glutSwapBuffers меняет местами буферы текущего окна, это означает, что он делает рисунок "видимым" в области просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...