运行时选项

Pyglet提供了一种通过选项更改运行时行为的方法。这些选项提供了修改特定模块、特定操作系统的行为或添加更多调试信息的方法。选项可以指定为键,也可以指定为属性 pyglet.options 玻璃实例。

要更改选项的缺省设置,必须导入 pyglet 在任何分包之前。

例如::

import pyglet
pyglet.options['debug_gl'] = False
pyglet.options.debug_media = True

默认选项也可以从操作系统环境中重写。 每个选项键的相应环境变量的开头是 PYGLET_ 。例如,在Bash中,您可以设置 debug_gl 选项包括::

PYGLET_DEBUG_GL=True; export PYGLET_DEBUG_GL

对于需要值的元组的选项,请用逗号分隔每个值。

class Options

全球小狗选项的数据类。

audio: Sequence[str] = ('xaudio2', 'directsound', 'openal', 'pulse', 'silent')

A Sequence 有效音频模块名称的。它们将从头到尾进行尝试,直到加载驱动程序或没有剩余条目。看见 选择音频驱动程序 以获取更多信息。

有效的驱动程序名称为:

  • 'xaudio2' ,Windows Xaudio2音频模块(仅限Windows)

  • 'directsound' ,Windows DirectSound音频模块(仅限Windows)

  • 'pulse' vt.的. PulseAudio 模块

    (仅限Linux,否则几乎无处不在。功能有限;使用 'openal' 了解更多信息。)

  • 'openal' vt.的. OpenAL 音频模块(可能需要在Windows和Linux上安装库)

  • 'silent' ,无音频

com_mta: bool = False

如果 True ,这将强制执行Windows应用程序的COM多线程公寓模式。默认情况下,出于兼容性原因,pyglet选择采用单线程公寓(STA)。许多其他与Python一起使用的第三方库显式设置了STA。然而,Windows推荐MTA及其许多API,例如Windows Media Foundation(WMF)。

看见:

https://learn.microsoft.com/en-us/windows/win32/cossdk/com--threading-models

Added in version 2.0.5.

debug_font: bool = False

如果 True ,将打印更多详细信息时 Font 已加载。

debug_gl: bool = True

如果 True ,随后使用检查对OpenGL函数的所有调用是否存在错误 glGetError 。这将严重影响性能,但会在故障点提供有用的异常。默认情况下,在以下情况下启用此选项 __debug__ 已启用(即,如果Python没有使用-O选项运行)。 当pyglet被“冻结”时(例如在pyinstaller或nuitka中),默认情况下将禁用它。

debug_gl_shaders: bool = False

如果 True ,打印着色器编译信息,例如着色器的创建和删除。还包括有关着色器ID、属性和制服的信息。

debug_gl_trace: bool = False

如果 True ,将打印正在执行的GL调用的名称。例如, glBlendFunc

debug_gl_trace_args: bool = False

如果 True ,除了打印GL调用的名称外,它还将打印传递到这些调用中的参数。例如, glBlendFunc(770, 771)

备注

需要 debug_gl_trace 要启用。

debug_graphics_batch: bool = False

如果 True ,打印正在绘制的批次信息,包括 Group ' s、VertexDomains和 Texture 信息.这对于了解有多少个集团正在合并很有用。

debug_input: bool = False

如果 True ,在控制器、平板电脑等输入设备上打印信息。

debug_lib: bool = False

如果 True ,打印加载的每个动态库的路径。

debug_media: bool = False

如果 True ,打印音频编解码器和驱动程序的更详细的媒体信息。会非常冗长。

debug_texture: bool = False

如果 True ,打印信息 Texture 分配和删除时的大小(以字节为单位)。

debug_win32: bool = False

如果 True ,打印与Windows库调用相关的错误消息。通常从 Kernel32.GetLastError .此信息输出到名为 debug_win32.log

debug_x11: bool = False

如果 True ,打印与Linux X11调用相关的信息。这可能有助于缩小驱动程序或操作系统问题。

dw_legacy_naming: bool = False

如果 True ,将为默认Windows字体渲染器启用传统命名支持 (DirectWrite ).尝试通过传递的名称解析字体,以最佳地匹配传统RBIZ命名。

看见:

https://learn.microsoft.com/en-us/windows/win32/directwrite/font-selection#rbiz-font-family-model

例如,这允许指定 "Arial Narrow" 而不是 "Arial" 使用一个 "condensed" 拉伸或 "Arial Black" 而不是 "Arial" 重量为 black .这可能会增强选定字体的跨平台命名兼容性,因为旧字体渲染器采用此命名方案。

首先分析字符串以寻找任何已知的样式名称,并搜索所有字体集合以寻找匹配的RBIZ名称。如果没有找到完美匹配,它将选择次佳匹配。

备注

由于风格差异很大,某些字体的功能有限,无法保证第二接近的匹配恰好是用户想要的。

备注

这个 debug_font 选项可以提供有关正在选择的设置的信息。

Added in version 2.0.3.

headless: bool = False

如果 True ,不会创建可见的Windows,并且不需要运行的桌面环境。当在无头服务器或计算集群上运行pyglet时,此选项很有用。带有的GL驱动程序 EGL 此模式需要支持。

headless_device: int = 0

如果使用 headless 模式 (pyglet.options['headless'] = True ),此选项允许您设置使用哪个图形处理器。这仅在多图形处理器系统中有用。

osx_alt_loop: bool = False

如果 True ,这将为Mac NSX启用替代循环。这适用于所有ARM64架构的Mac。

由于与Objective C、Python和Mac ARM 64处理器的ctyles接口存在各种问题,标准事件循环最终开始崩溃,导致输入丢失或延迟。即使在基于英特尔的Mac上,也可以通过标准事件循环看到其他奇怪的行为,例如因事件随机崩溃。

Added in version 2.0.5.

search_local_libs: bool = True

如果 False ,pyglet不会尝试在脚本目录及其 lib 。这对于加载本地库而不是系统安装的版本很有用。

shader_bind_management: bool = True
如果 True ,这将支持对统一块绑定进行内部管理

ShaderProgram 的。

如果 False ,绑定不会由Pyglet管理。用户将负责通过GLSL布局(需要4.2)或手动通过 UniformBlock.set_binding

Added in version 2.0.16.

shadow_window: bool = True

默认情况下,在导入pyglet.gl时,pyglet会创建一个带有GL上下文的隐藏窗口。这允许在创建应用程序窗口之前加载资源,并允许在窗口之间共享GL对象,即使它们已经关闭。通过将此选项设置为FALSE,可以禁用阴影窗口的创建。

某些OpenGL驱动程序实现可能不支持共享OpenGL上下文,并且可能需要禁用阴影窗口(并且必须在创建使用它们的窗口之后加载所有资源)。仅建议高级开发人员使用。

Added in version 1.1.

vsync: bool | None = None

如果设置,则 pyglet.window.Window.vsync 属性被忽略,并且此选项将覆盖它(以强制打开或关闭vsync)。如果未设置或设置为None,则 pyglet.window.Window.vsync 属性的行为与文档中的行为相同。

win32_disable_shaping: bool = False

如果 True ,将禁用默认Windows字体渲染器的整形过程,以提高性能速度。如果您的字体简单、等距,或者不需要高级的OpenType功能,则此选项可能很有用。您可以尝试启用此功能,看看是否对字体的清晰度有任何影响。推进将由横梁宽度决定。

备注

整形是在给定完整字符串时确定使用哪些字符字形以及这些字形的具体放置的过程。

Added in version 2.0.

win32_disable_xinput: bool = False

如果 True ,这将禁用 XInput Windows中的控制器使用情况和回撤到 DirectInput . 对于调试或特殊用例可能有用。控制器只能由其中一种控制 XInputDirectInput ,而不是两者。

Added in version 2.0.

win32_gdi_font: bool = False

如果 True ,侏儒将退回到遗产中 GDIPlus 适用于Windows的字体渲染器。这可能会为旧字体提供更好的字体兼容性。遗留渲染器不支持整形、彩色字体、替换或其他OpenType功能。某些语言也可能存在问题。

由于缺乏这些功能,它可能会更高的性能。

Added in version 2.0.

xlib_fullscreen_override_redirect: bool = False

如果 True ,在创建全屏窗口时传递xlib.CWOverrideRedirect标志。此选项通常不再需要,并且被认为已过时。

xsync: bool = True

如果设置(默认设置),pyglet将尝试将双缓冲窗口的绘制与X11窗口管理器的边界更新同步。这改善了窗口在调整大小操作期间的外观。此选项仅影响支持Xsync扩展的X11服务器上的双缓冲窗口,该服务器具有实现_NET_WM_SYNC_REQUEST协议的窗口管理器。

Added in version 1.1.

options: Options = Options(audio=('xaudio2', 'directsound', 'openal', 'pulse', 'silent'), debug_font=False, debug_gl=True, debug_gl_trace=False, debug_gl_trace_args=False, debug_gl_shaders=False, debug_graphics_batch=False, debug_lib=False, debug_media=False, debug_texture=False, debug_trace=False, debug_trace_args=False, debug_trace_depth=1, debug_trace_flush=True, debug_win32=False, debug_input=False, debug_x11=False, shadow_window=True, vsync=None, xsync=True, xlib_fullscreen_override_redirect=False, search_local_libs=True, win32_gdi_font=False, headless=False, headless_device=0, win32_disable_shaping=False, dw_legacy_naming=False, win32_disable_xinput=False, com_mta=False, osx_alt_loop=False, shader_bind_management=True)

实例 Options 用于设置运行时选项。

环境设置

中的选项 pyglet.options 字典可以通过操作系统的环境变量设置缺省值。下表显示了每个选项使用的环境变量:

环境变量

pyglet.options 钥匙

类型

缺省值

PYGLET_AUDIO

audio

字符串列表

directsound,openal,alsa,silent

PYGLET_DEBUG_GL

debug_gl

布尔型

1 [1]