Расширения OpenGL должны быть предоставлены самой привязкой, PyOpenGL не поддерживает новые расширения «цепной загрузки»;хотя это было возможно реализовать, это просто не стоит усилий.
Может быть, вы просто неправильно обращались к расширению.Документация PyOpenGL объясняет, что есть несколько способов сделать это
Расширения и условная функциональность PyOpenGL поддерживает большинство расширений OpenGL.Расширения доступны как «нормальные» указатели на функции путем импорта имени созданного пакета для расширения, например:
from OpenGL.GL.ARB.vertex_buffer_object import * buffer = glGenBuffersARB(1)
, нет необходимости вызывать функции инициализации или тому подобное для модуля расширения.Вы можете, если хотите, вызвать функцию «init» для расширения, чтобы получить логическое значение, указывающее, поддерживает ли локальный компьютер данное расширение, например, так:
if glInitVertexBufferObjectARB():
...
Однако обычно это проще проверитьдля логической истинности точек входа, которые вы хотите использовать:
if (glGenBuffersARB):
buffers = glGenBuffersARB( 1 )
Часто существует множество точек входа, которые реализуют один и тот же API, для которого вы хотели бы использовать любую доступную реализацию (вероятно, прикакое-то предпочтение по порядку).Модуль OpenGL.extensions предоставляет простой механизм для поддержки этого:
from OpenGL.extensions import alternate
glCreateProgram = alternate( 'glCreateProgram', glCreateProgram, glCreateProgramObjectARB)
glCreateProgram = alternate( glCreateProgram, glCreateProgramObjectARB)
Если первый элемент является строкой, он будет использоваться в качестве имени альтернативного объекта, в противном случае имя берется из первого аргумента..