CTYPE包装器生成

Pyglet中的以下模块全部(或大部分)由一个或多个C头文件生成:

  • pyglet.gl.gl

  • pyglet.gl.gl_compat

  • pyglet.gl.agl

  • pyglet.gl.glext_abi

  • pyglet.gl.glext_nv

  • pyglet.gl.glx

  • pyglet.gl.glxext_abi

  • pyglet.gl.glxext_nv

  • pyglet.gl.wgl

  • pyglet.gl.wglext_abi

  • pyglet.gl.wglext_nv

  • pyglet.window.xlib.xlib

  • pyglet.window.xlib.xinerama

包装框架在 tools/wraptypes ,以及特定于pyglet的批处理脚本 tools/genwrappers.py (生成xlib包装器)和 tools/gengl.py (生成总帐包装)。

生成总账包装(新版本)

新的 gengl.py 脚本仅生成以下模块:

  • gl.py :OpenGL 4.6核心配置文件枚举和函数。不包括所有不推荐使用的枚举和函数。

  • gl_compat.py :OpenGL 4.6与所有枚举和函数的兼容性配置文件一直追溯到OpenGL 1.0。

运行脚本:

#从Khronos GitHub获取最新的gl.xml,并生成新的模块python Tools/gengl.py python Tools/gengl.py--源url

#阅读本地gl.xml版本的python工具/gengl.py--源本地

老的 gengl.py 脚本还处理了AGL、WGL和GLX。由于历史原因,下面的部分仍然存在,旧脚本仍然存在于工具目录中。

正在生成总账包装(旧版本)

当更新包装类型、更新头文件(例如,操作系统的新版本)或更新GL扩展名时,需要遵循此过程。每个文件只能在特定的平台上生成。

开始之前,请删除该文件 tools/.gengl.cache 如果它存在的话。这只是缓存头文件,这样就不需要重复下载它们(但如果您正在阅读本文,您可能更喜欢使用最新的未缓存副本)。

在Linux上,生成 pyglet.gl.glpyglet.gl.glext_abipyglet.gl.glext_nv (完整的用户可见总账包):

python tools/gengl.py gl glext_abi glext_nv

的头文件 pyglet.gl.gl 位于 /usr/include/GL 。确保您的Linux发行版具有这些文件的最新版本(遗憾的是,它们似乎不能在发行版或操作系统之外访问)。

的头文件 pyglet.glext_abipyglet.glext_nv 分别从http://www.opengl.org和http://developer.nvidia.com,下载。

在Linux上,生成 pyglet.gl.glxpyglet.gl.glxext_abipyglet.gl.glxext_nv **

python tools/gengl.py glx glxext_abi glxext_nv

的头文件 pyglet.gl.glx vt.在.中 /usr/include/GL ,并且预计将依赖于来自 /usr/include/X11glext_abiglext_nv 头文件可从上述网站下载。

在OS X上,生成 pyglet.gl.agl **

python tools/gengl.py agl

边等边看电影--它几乎使用了系统上的每个头文件。中会出现一个语法错误 PictUtils.h 第67行,这并不重要。

在Windows XP上,生成 pyglet.gl.wglpyglet.gl.wglext_abipyglet.gl.wglext_nv **

python tools/gengl.py wgl wglext_abi wglext_nv

您不需要在Windows上安装开发环境。 pyglet.gl.wgl 从以下位置生成 tools/wgl.h ,这是一个手工编码的头文件,包含WGL及其依赖项的原型和常量。在真实的开发环境中,您会发现它们主要位于 WinGDI.h ,但包装类型还不够复杂,不足以解析Windows系统头(有关需要实现的内容,请参见下文)。这个头文件不太可能需要更改(除了错误修复)。

的标头 pyglet.gl.wglext_abipyglet.gl.wglext_nv 是从GL和GLX相同的网站下载的。

生成的总帐包装

每个生成的文件都包含一对标记 # BEGIN GENERATED CONTENT# END GENERATED CONTENT 它们在替换文件时被搜索。如果其中一个标记丢失或损坏,则不会修改该文件。这允许围绕生成的内容自定义内容。仅限 glx.py 利用这一点来包括一些默认情况下不生成的其他枚举数。

如果生成过程被中断(要么您对它感到厌烦,要么它崩溃),它将留下一个部分完整的文件,其中将不包括这两个标记。恢复文件或以其他方式重新插入标记取决于您。

生成Xlib包装器

在安装了Sinerama扩展的Linux上(不必使用,只需可用),运行::

python tools/genwrappers.py

这会产生 pyglet.window.xlib.xlibpyglet.window.xlib.xinerama

请注意,此过程以及生成的模块依赖于 pyglet.gl.glx 。因此,您应该始终运行此命令 after 上面的GL世代。