<p>OpenGL扩展必须由绑定本身提供,PyOpenGL不支持“链加载”新的扩展;虽然可以实现这样的扩展,但是这样做是不值得的。在</p>
<p>也许你只是没有正确地接入分机。opengl解释了opengl的几种方法</p>
<p><a href="http://pyopengl.sourceforge.net/documentation/opengl_diffs.html" rel="nofollow">http://pyopengl.sourceforge.net/documentation/opengl_diffs.html</a></p>
<blockquote>
<p>Extensions and Conditional
Functionality PyOpenGL has support for
most OpenGL extensions. Extensions
are available as "normal" function
pointers by importing the constructed
package name for the extension, for
instance:</p>
<pre><code>from OpenGL.GL.ARB.vertex_buffer_object import * buffer = glGenBuffersARB(1)
</code></pre>
<p>there is no need to call
initialization functions or the like
for the extension module. You can, if
you like, call the "init" function for
the extension to retrieve a boolean
indicating whether the local machine
supports a given extension, like so:</p>
<pre><code>if glInitVertexBufferObjectARB():
...
</code></pre>
<p>However, it is normally clearer to
test for the boolean truth of the
entry points you wish to use:</p>
<pre><code>if (glGenBuffersARB):
buffers = glGenBuffersARB( 1 )
</code></pre>
<p>There are often a
number of entry points which implement
the same API, for which you would like
to use whichever implementation is
available (likely with some preference
in order). The OpenGL.extensions
module provides an easy mechanism to
support this:</p>
<pre><code>from OpenGL.extensions import alternate
glCreateProgram = alternate( 'glCreateProgram', glCreateProgram, glCreateProgramObjectARB)
glCreateProgram = alternate( glCreateProgram, glCreateProgramObjectARB)
</code></pre>
<p>If the first
element is a string it will be used as
the name of the alternate object,
otherwise the name is taken from the
first argument.</p>
</blockquote>