pyglet.gl

OpenGL接口。

此包导入所有OpenGL和已注册的OpenGL扩展函数。函数具有与C语言对应函数相同的签名。

OpenGL的完整文档请参阅 OpenGL Reference Pages

这个 OpenGL Programming Guide 也被称为《红皮书》,是一本按主题组织的流行参考手册。它有数字版和纸质版。

以下子程序包已经导入到这个“巨型”程序包中(因此可以通过导入 pyglet.gl ):

pyglet.gl.gl

OpenGL

pyglet.gl.gl.glext_arb

Arb注册的OpenGL扩展函数

pyglet.gl.gl.gl_compat

已废弃的GL扩展功能。

这些子包也可用,但默认情况下不会导入到此命名空间:

pyglet.gl.glext_nv

NVIDIA OpenGL扩展功能

pyglet.gl.agl

AGL(Mac OS X OpenGL上下文函数)

pyglet.gl.glx

GLX(Linux OpenGL上下文函数)

pyglet.gl.glxext_arb

Arb寄存器GLX扩展函数

pyglet.gl.glxext_nv

NVIDIA GLX扩展功能

pyglet.gl.wgl

WGL(Windows OpenGL上下文函数)

pyglet.gl.wglext_arb

Arb注册的WGL扩展函数

pyglet.gl.wglext_nv

NVIDIA WGL扩展功能

提供这些信息模块是为了方便起见,并在下面进行了说明。

exception ConfigException
exception ContextException
current_context: Context | None = None

活动的OpenGL上下文。

您可以通过调用 Context.set_current ;请勿修改此全局设置。

Added in version 1.1.

class GLException
__init__(*args, **kwargs)
__new__(**kwargs)
class ObjectSpace

用于存储要删除的共享对象的容器。

__init__() None

初始化上下文对象空间。

class Config

显卡配置。

配置存储OpenGL属性的首选项,例如辅助缓冲区的数量、颜色和深度缓冲区的大小、双缓冲区、模版、多采样和超采样等。

不同的平台支持不同的属性集,因此使用字符串键和整型或布尔型的值来设置这些属性。

__init__(**kwargs: float) None

使用给定属性创建模板配置。

将属性指定为关键字参数,例如::

template = Config(double_buffer=True)
create_context(
share: Context | None,
) Context

创建满足此配置的GL上下文。

参数:

share (Context | None) -- 如果不是 None ,共享对象的上下文。

弃用:

使用 CanvasConfig.create_context

返回类型:

Context

get_gl_attributes() list[tuple[str, bool | int | str]]

返回在此配置上设置的属性列表。

属性作为二元组列表返回,其中包含名称和值。任何未设置的属性的值都将为 None

返回类型:

list[tuple[str, bool | int | str]]

is_complete() bool

确定此配置是否完整并且能够创建上下文。

直接创建的配置并不完整,它们只能用作从系统检索支持的配置的模板。例如, pyglet.window.Screen.get_matching_configs 返回完整的配置。

弃用:

使用 isinstance(config, CanvasConfig)

返回类型:

bool

abstract match(
canvas: Canvas,
) list[CanvasConfig]

返回给定画布的匹配完整配置的列表。

返回类型:

list[CanvasConfig]

accum_alpha_size: int

用于累加缓冲区中的Alpha分量的每像素位数。

accum_blue_size: int

用于累加缓冲区中蓝色分量的每像素位数。

accum_green_size: int

用于累加缓冲区中绿色分量的每像素位数。

accum_red_size: int

用于累加缓冲区中红色分量的每像素位数。

alpha_size: int

专用于Alpha分量的每个缓冲区的每样本位数。

aux_buffers: int

辅助颜色缓冲区的数量。

blue_size: int

专用于蓝色分量的每个缓冲区的每采样位数。

buffer_size: int

每个颜色缓冲区的每个样本的总位数。

debug: bool

收件箱模式。

depth_size: int

深度缓冲区中的每个样本位数。

double_buffer: bool

为每个颜色缓冲区指定是否存在后台缓冲区。

forward_compatible: bool

是否使用前向兼容模式。

green_size: int

专用于绿色分量的每个缓冲区的每采样位数。

major_version: int

GL主要版本。

minor_version: int

GL次要版本。

opengl_api: str

GL API,例如“gl”或“gles”。

red_size: int

专用于红色分量的每个缓冲区的每采样位数。

sample_buffers: int

多采样缓冲区的数量。

samples: int

每像素的采样数,如果没有多采样缓冲区,则为0。

stencil_size: int

模板缓冲区中的每个样本位数。

stereo: bool

指定是否存在单独的左侧和右侧缓冲区集。

class CanvasConfig

基类:Config

特定画布的OpenGL配置。

使用 Config.match 若要获取此类的实例,请执行以下操作。

Added in version 1.2.

__init__(
canvas: Canvas,
base_config: Config,
) None

使用给定属性创建模板配置。

将属性指定为关键字参数,例如::

template = Config(double_buffer=True)
abstract compatible(canvas: Canvas) bool

确定与画布的兼容性。

返回类型:

bool

abstract create_context(
share: Context,
) Context

创建满足此配置的GL上下文。

参数:

share (Context) -- 如果不是 None ,用于共享对象的上下文。

返回类型:

Context

is_complete() bool

确定此配置是否完整并且能够创建上下文。

直接创建的配置并不完整,它们只能用作从系统检索支持的配置的模板。例如, pyglet.window.Screen.get_matching_configs 返回完整的配置。

弃用:

使用 isinstance(config, CanvasConfig)

返回类型:

bool

canvas: Canvas

此配置在其上有效的画布。

class Context

用于绘制的基本GL上下文。

使用 CanvasConfig.create_context 要创建上下文,请执行以下操作。

__init__(
config: CanvasConfig,
context_share: Context | None = None,
) None

初始化上下文。

这只能通过 CanvasConfig.create_context 方法。

参数:
  • config (CanvasConfig) -- 操作系统特定的配置。

  • context_share (Context | None) -- 用于共享对象的上下文。使用 None 禁用共享。

attach(canvas: Canvas) None
返回类型:

None

create_program(
*sources: tuple[str, str],
) ShaderProgram

从OpenGL GLSL源创建一个ShaderProgram。

这是一个很方便的方法,它接受(SOURCE_STRING,SHADER_TYPE)的一个或多个元组,并返回一个 ShaderProgram 举个例子。

source_string is OpenGL GLSL source code as a str, and shader_type is the OpenGL shader type, such as "vertex" or "fragment". See Shader for more information. :rtype: ShaderProgram

备注

此方法被缓存。在给定相同着色器来源的情况下,将返回相同的ShaderProgram实例。为了更好地控制ShaderProgram生命周期,建议手动创建着色器并链接ShaderProgram。

Added in version 2.0.10.

delete_buffer(buffer_id: int) None

安全地删除属于此上下文对象空间的缓冲区。

此方法的行为类似于 delete_texture ,但对于 glDeleteBuffers 而不是 glDeleteTextures

返回类型:

None

delete_framebuffer(fbo_id: int) None

安全删除属于此上下文的FrameBuffer对象。

此方法的行为类似于 delete_vao ,但对于 glDeleteFramebuffers 而不是 glDeleteVertexArrays

返回类型:

None

delete_renderbuffer(rbo_id: int) None

安全删除属于此上下文对象空间的渲染缓冲区。

此方法的行为类似于 delete_texture ,但对于 glDeleteRenderbuffers 而不是 glDeleteTextures

返回类型:

None

delete_shader(shader_id: int) None

安全删除属于此上下文对象空间的着色器。

此方法的行为类似于 delete_texture ,但对于 glDeleteShader 而不是 glDeleteTextures

返回类型:

None

delete_shader_program(program_id: int) None

安全删除属于此上下文对象空间的ShaderProgram。

此方法的行为类似于 delete_texture ,但对于 glDeleteProgram 而不是 glDeleteTextures

返回类型:

None

delete_texture(texture_id: int) None

安全地删除属于此上下文的对象空间的纹理。

此方法将通过以下方式立即删除纹理 glDeleteTextures 如果当前上下文的对象空间与此上下文的对象空间相同,并且从主线程调用它。

否则,纹理将仅标记为删除,并将其推迟,直到具有相同对象空间的任何上下文再次变为活动状态。

这使得从任何地方调用都是安全的,包括其他线程。

返回类型:

None

delete_vao(vao_id: int) None

安全删除属于此上下文的顶点数组对象。

如果此上下文不是当前上下文,或者此方法不是从主线程调用的,则其删除将被推迟,直到此上下文下一次被再次激活。

否则,该方法会立即通过 glDeleteVertexArrays

返回类型:

None

destroy() None

释放上下文。

上下文被销毁后将不可用。每个平台都有自己的约定,用于以正确的顺序释放上下文和依赖于它的缓冲区(S);这永远不应该被应用程序调用。

返回类型:

None

detach() None
返回类型:

None

get_info() GLInfo

vt.得到. GLInfo 在此背景下的例子。

返回类型:

GLInfo

set_current() None

使其成为活动上下文。

将上下文设置为当前还将删除任何已排队等待删除的GL对象。IE:在此上下文中创建,但在另一个上下文处于活动状态时被要求删除的任何对象。

返回类型:

None

config: CanvasConfig
context_share: Context | None
object_space: ObjectSpace

在共享GL对象的所有上下文之间共享的容器。