Ошибка нулевой функции PyOpenGL при использовании Linux в виртуальной среде [дубликат] ⇐ Linux
-
Anonymous
Ошибка нулевой функции PyOpenGL при использовании Linux в виртуальной среде [дубликат]
Я пытаюсь заставить модули PyOpenGL и PyOpenGL_accelerate работать с моей (очень простой) тестовой программой pygame. Все, что я пытаюсь здесь сделать, это нарисовать трехмерное изображение с помощью PyOpenGL.
Я запускаю эту программу на Arch Linux в виртуальной среде Python, и внутри этой виртуальной среды перед запуском программы я сделал следующее:
$ pip install PyOpenGL PyOpenGL_accelerate Эти два модуля устанавливаются успешно, а строки: 'from OpenGL...' работают нормально.
Проблема возникает, когда я пытаюсь использовать функцию gluPerspective. Если я запущу программу, я получу эту ошибку:
'OpenGL.error.NullFunctionError: попытка вызвать неопределенную функцию gluPerspective, перед вызовом проверьте наличие bool(gluPerspective)' Мой программный код:
импортировать pygame из импорта pygame.locals * из импорта OpenGL.GL * из импорта OpenGL.GLU * из импорта OpenGL.GLUT * вершины = ( (1,-1,-1), (1,1,-1), (-1,1,-1), (-1,-1,-1), (1,-1,1), (1,1,1), (-1,-1,1), (-1,1,1), ) края = ( (0,1), (0,3), (0,4), (2,1), (2,3), (2,7), (6,3), (6,4), (6,7), (5,1), (5,4), (5,7), ) защита Draw_Cube(): глБегин (GL_LINES) для края в краях: для вершины в ребре: glVertex3fv(вершины[вершина]) глКонец() защита основной(): pygame.init() дисплей = (800 600) pygame.display.set_mode(display,DOUBLEBUF|OPENGL) gluPerspective(45.0,(display[0]/display[1]),1,50.0) glTranslatef(0.0,0.0,-5.0) глРотатеф(20,0,0,0) пока правда: для события в pygame.event.get(): если event.type == pygame.QUIT: pygame.quit() покидать() glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) Draw_Cube() pygame.display.flip() pygame.time.wait(10) основной() Я заметил, что если я закомментирую строку gluPerspective, программа не выйдет из строя, так что, по крайней мере, импорт OpenGL.GL работает.
Прочитав о других людях, сталкивавшихся с этой проблемой, я пришел к выводу, что, возможно, отсутствовал код, принадлежащий модулю freeglut. Кажется, нет никакого способа установить freeglut через pip внутри виртуальной среды, поэтому я установил:
sudo pacman -S python-opengl Который устанавливает opengl с freeglut в качестве зависимости. Но я получаю ту же ошибку.
Я также пробовал клонировать репозиторий git вместо использования pip, но с тем же результатом (хотя я не на 100% уверен, что правильно понимаю часть клонирования)
Я пробовал устанавливать и запускать что-то вне виртуальной среды, но это не имеет значения.
Я пытаюсь заставить модули PyOpenGL и PyOpenGL_accelerate работать с моей (очень простой) тестовой программой pygame. Все, что я пытаюсь здесь сделать, это нарисовать трехмерное изображение с помощью PyOpenGL.
Я запускаю эту программу на Arch Linux в виртуальной среде Python, и внутри этой виртуальной среды перед запуском программы я сделал следующее:
$ pip install PyOpenGL PyOpenGL_accelerate Эти два модуля устанавливаются успешно, а строки: 'from OpenGL...' работают нормально.
Проблема возникает, когда я пытаюсь использовать функцию gluPerspective. Если я запущу программу, я получу эту ошибку:
'OpenGL.error.NullFunctionError: попытка вызвать неопределенную функцию gluPerspective, перед вызовом проверьте наличие bool(gluPerspective)' Мой программный код:
импортировать pygame из импорта pygame.locals * из импорта OpenGL.GL * из импорта OpenGL.GLU * из импорта OpenGL.GLUT * вершины = ( (1,-1,-1), (1,1,-1), (-1,1,-1), (-1,-1,-1), (1,-1,1), (1,1,1), (-1,-1,1), (-1,1,1), ) края = ( (0,1), (0,3), (0,4), (2,1), (2,3), (2,7), (6,3), (6,4), (6,7), (5,1), (5,4), (5,7), ) защита Draw_Cube(): глБегин (GL_LINES) для края в краях: для вершины в ребре: glVertex3fv(вершины[вершина]) глКонец() защита основной(): pygame.init() дисплей = (800 600) pygame.display.set_mode(display,DOUBLEBUF|OPENGL) gluPerspective(45.0,(display[0]/display[1]),1,50.0) glTranslatef(0.0,0.0,-5.0) глРотатеф(20,0,0,0) пока правда: для события в pygame.event.get(): если event.type == pygame.QUIT: pygame.quit() покидать() glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) Draw_Cube() pygame.display.flip() pygame.time.wait(10) основной() Я заметил, что если я закомментирую строку gluPerspective, программа не выйдет из строя, так что, по крайней мере, импорт OpenGL.GL работает.
Прочитав о других людях, сталкивавшихся с этой проблемой, я пришел к выводу, что, возможно, отсутствовал код, принадлежащий модулю freeglut. Кажется, нет никакого способа установить freeglut через pip внутри виртуальной среды, поэтому я установил:
sudo pacman -S python-opengl Который устанавливает opengl с freeglut в качестве зависимости. Но я получаю ту же ошибку.
Я также пробовал клонировать репозиторий git вместо использования pip, но с тем же результатом (хотя я не на 100% уверен, что правильно понимаю часть клонирования)
Я пробовал устанавливать и запускать что-то вне виртуальной среды, но это не имеет значения.
Мобильная версия