2012-04-28 2 views
0

Я установил PyOpenGL от here для 64-разрядной версии 3.x Python и Windows 7. Я могу написать и выполнить программу, которая использует PyOpenGL glutMouseFunc для прослушивания щелчков кнопок мыши:Как использовать FreeGLUT glutMouseWheelFunc в программе PyOpenGL?

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

# Imagine the typical glut init functions here ... 
glutMouseFunc(mouse) 

Теперь, я хочу прочитать колесо прокрутки мыши. Я сделал это раньше в C++, используя FreeGLUT, который предоставляет glutMouseWheelFunc. Я проверил, и я вижу freeglut32.vc9.dll и freeglut64.vc9.dll в C:\Program Files\Python32\Lib\site-packages\OpenGL\DLLS.

Я изменил вышеприведенный код:

from OpenGL.GLUT import * 
from OpenGL.GLUT.freeglut import * 
from OpenGL.GL import * 

# Imagine the typical glut init functions here ... 
glutMouseFunc(mouse) 
glutMouseWheelFunc(mouseWheel) 

Это терпит неудачу с этой ошибкой:

File "c:\Program Files\Python32\lib\site-packages\OpenGL\GLUT\special.py", line 139, in __call__ 
    self.wrappedOperation(cCallback, *args) 
    File "c:\Program Files\Python32\lib\site-packages\OpenGL\GLUT\special.py", line 107, in failFunction 
    typeName, 'glut%sFunc'%(typeName), 
OpenGL.error.NullFunctionError: Undefined GLUT callback function MouseWheel, check for bool(glutMouseWheelFunc) before calling 

Итак, как я использую FreeGLUT звонки в PyOpenGL? Что я делаю неправильно?

ответ

0

PyOpenGL загружает DLL GLUT по умолчанию. Чтобы вместо этого использовать freeglut, переименуйте или удалите файл glut64.vc9.dll в каталоге OpenGL/DLL и убедитесь, что такого файла не существует в другом месте пути поиска DLL Windows. Работает на меня.