NullFunctionError: попытка вызова неопределенной альтернативной функции (glGenFramebuffers, glGenFramebuffersEXT)

В настоящее время я работаю с рендерингом 3D-объектов. В этом случае при работе с частью буфера кадра я получаю некоторую ошибку.

self.fbo = glGenFramebuffers(1)

всякий раз, когда интерпретатор попадает в эту строку, он показывает следующую ошибку

**File "C:\Python27\lib\site-packages\OpenGL\latebind.py", line 44, in __call__
    self._finalCall = self.finalise()
  File "C:\Python27\lib\site-packages\OpenGL\extensions.py", line 189, in finalise
    self.__name__,
NullFunctionError: Attempt to call an undefined alternate function (glGenFramebuffers, glGenFramebuffersEXT), check for bool(glGenFramebuffers) before calling**

Я использую python 2.7.3 и pyOpenGL 3.0.2. Я не смог найти ответа на эту ошибку.


person satha    schedule 04.11.2015    source источник


Ответы (1)


Если bool(glGenFramebuffers) возвращает False, ошибка, вероятно, означает, что ваш компьютер не имеет доступа к OpenGL >= 2.1, поэтому объекты Framebufffer не будут работать. Проверьте версию, поддерживаемую OpenGL, с помощью средства просмотра GPU Caps Viewer для Windows. Для Linux см. здесь: https://askubuntu.com/questions/47062/what-is-terminal-command-that-can-show-opengl-version

Если у вас есть хотя бы 2.1, то, возможно, библиотека, которую вы используете для создания контекста (pySDL, Glut, pySFML и т. д.), не создает совместимую. Исправление, которое зависит от библиотеки и, вероятно, уже имеет ответ.

Если bool(glGenFramebuffers) возвращает True, проблема может быть где-то еще в начале кода.

Кроме того, помните, что контекст должен быть создан и актуален, прежде чем пытаться создавать или использовать шейдеры, фреймбуферы и т. д.

person bio_c    schedule 21.12.2015