pyglet.image.buffer

GL框架缓冲区抽象。

此模块提供用于处理Frame buffers和Renderbuffers及其附件的类。附件可以是pyglet Texture对象,可以轻松访问其数据、保存到磁盘等。如果您以后不需要访问其数据,则可以使用Renderbuffer。例如::

# Create two objects to use as attachments for our Framebuffer.
color_buffer = pyglet.image.Texture.create(width, height, min_filter=GL_NEAREST, mag_filter=GL_NEAREST)
depth_buffer = pyglet.image.buffer.Renderbuffer(width, height, GL_DEPTH_COMPONENT)

# Create a framebuffer object, and attach the two buffers:
framebuffer = pyglet.image.Framebuffer()
framebuffer.attach_texture(color_buffer, attachment=GL_COLOR_ATTACHMENT0)
framebuffer.attach_renderbuffer(depth_buffer, attachment=GL_DEPTH_ATTACHMENT)

# Bind the Framebuffer, which sets it as the active render target:
framebuffer.bind()

有关有效附件类型和目标的更多信息,请参阅GL文档。

class Framebuffer

GL框架缓冲区对象。

Added in version 2.0.

__init__(target: int = 36160) None

创建框架缓冲器实例。

attach_renderbuffer(
renderbuffer: Renderbuffer,
target: int = 36160,
attachment: int = 36064,
) None

将渲染缓冲区附加到框架缓冲区。

参数:
  • renderbuffer (Renderbuffer) -- 指定要附加到由Attach命名的帧缓冲区附着点的渲染缓冲区。

  • target (int) -- 指定帧缓冲区目标。目标必须是GL_DRAW_FRAMEBUFFER、GL_READ_FRAMEBUFFER或GL_FRAMEBUFFER。GL_FRAMEBUFFER等同于GL_DRAW_FRAMEBUFFER。

  • attachment (int) -- 指定帧缓冲区的附着点。附件必须是GL_COLOR_ATTACHMENTI、GL_Depth_ATTACHATURE、GL_STEMSEL_ATTACHATURE或GL_Depth_STEMWLE_ATTACH。

返回类型:

None

attach_texture(
texture: Texture,
target: int = 36160,
attachment: int = 36064,
) None

将纹理附加到框架缓冲区。

参数:
  • texture (Texture) -- 指定要附加到由Attach命名的帧缓冲区附着点的纹理对象。

  • target (int) -- 指定帧缓冲区目标。目标必须是GL_DRAW_FRAMEBUFFER、GL_READ_FRAMEBUFFER或GL_FRAMEBUFFER。GL_FRAMEBUFFER等同于GL_DRAW_FRAMEBUFFER。

  • attachment (int) -- 指定帧缓冲区的附着点。附件必须是GL_COLOR_ATTACHMENTI、GL_Depth_ATTACHATURE、GL_STEMSEL_ATTACHATURE或GL_Depth_STEMWLE_ATTACH。

返回类型:

None

attach_texture_layer(
texture: Texture,
layer: int,
level: int,
target: int = 36160,
attachment: int = 36064,
) None

将纹理层附加到框架缓冲区。

参数:
  • texture (Texture) -- 指定要附加到由Attach命名的帧缓冲区附着点的纹理对象。

  • layer (int) -- 指定要附加的纹理层。

  • level (int) -- 指定要附加的纹理的mipmap级别。

  • target (int) -- 指定帧缓冲区目标。目标必须是GL_DRAW_FRAMEBUFFER、GL_READ_FRAMEBUFFER或GL_FRAMEBUFFER。GL_FRAMEBUFFER等同于GL_DRAW_FRAMEBUFFER。

  • attachment (int) -- 指定帧缓冲区的附着点。附件必须是GL_COLOR_ATTACHMENTI、GL_Depth_ATTACHATURE、GL_STEMSEL_ATTACHATURE或GL_Depth_STEMWLE_ATTACH。

返回类型:

None

bind() None

绑定帧缓冲区。

这将激活它作为当前绘制目标。

返回类型:

None

clear() None

清除附件。

返回类型:

None

delete() None

显式删除帧缓冲区。

返回类型:

None

static get_status() str

以字符串形式获取当前帧缓冲区状态。

如果 Framebuffer.is_completeFalse ,此方法可用于了解更多信息。它将返回一个包含OpenGL报告状态的字符串。

返回类型:

str

unbind() None

解除帧缓冲区的绑定。

应调用Unbind以防止进一步渲染到帧缓冲区,或者如果您希望访问其纹理缓存中的数据。

返回类型:

None

property height: int

最高附着物的高度。

property id: int

Framebuffer id。

property is_complete: bool

如果帧缓冲区为‘Complete’,则为True,否则为False。

property width: int

最宽附件的宽度。

class Renderbuffer

GL渲染缓冲区对象。

__init__(
width: int,
height: int,
internal_format: int,
samples: int = 1,
) None

创建RenderBuffer实例。

bind() None
返回类型:

None

delete() None
返回类型:

None

static unbind() None
返回类型:

None

property height: int
property id: int
property width: int
get_max_color_attachments() int

获得最大允许的框架缓冲区颜色附件。

返回类型:

int