1

我正在尝试遵循与此处问题作者相同的教程 不幸的是,当我尝试在该页面底部运行示例代码时,我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\Matt\workspace\pygletTest\main.py", line 9, in <module>
    from gletools import ShaderProgram, FragmentShader, VertexShader
  File "build\bdist.win32\egg\gletools\__init__.py", line 9, in <module>
    # See the README file for information on usage and redistribution.
  File "build\bdist.win32\egg\gletools\texture.py", line 454, in <module>
  File "build\bdist.win32\egg\gletools\texture.py", line 455, in ArrayTexture
NameError: name 'GL_TEXTURE_2D_ARRAY' is not defined

我在 Windows Vista 上使用 Python 2.6 和 Eclipse。关于如何解决这个问题的任何想法?

4

1 回答 1

1

您可能使用的 pyglet 版本与编写 gletools 的人不同。不幸的是,他对此有点不具体。与 OpenGL 常量的绑定是错误的。

转到 pyglet\gl 文件夹,例如 C:\Python\Lib\site-packages\pyglet\gl 并找到 glext_nv.py。该文件包含所有 OpenGL 常量的映射。搜索 GL_TEXTURE_2D_ARRAY(可能命名为 GL_TEXTURE_2D_ARRAY_EXT 或其他名称)。在我的系统上,它是

GL_TEXTURE_2D_ARRAY_EXT = 35866     # GL/glext.h:3183

例如编辑 texture.py 以使用定义后的整数而不是关键字本身。例如

#target = GL_TEXTURE_2D_ARRAY
target = 35866

或者,您可以更新绑定的名称,但由于某种原因,这对我不起作用。您可能需要进行一些类似的更改。

于 2013-03-08T10:38:06.087 回答