缓冲层#

class arcade.gl.Buffer(ctx: Context, data: BufferProtocol | None = None, reserve: int = 0, usage: str = 'static')[源代码]#

基类:

OpenGL缓冲区对象。缓冲区存储字节数据并将其上载到图形内存,以便着色器程序可以处理数据。它们用于存储顶点数据、元素数据(顶点索引)、均匀块数据等。

这个 data 参数可以是实现 Buffer Protocol

这包括 bytesbytearrayarray.array ,以及更多。对于非内置类型,您可能需要使用类型化解决方法。看见 将原始字节写入GL缓冲区和纹理 以获取更多信息。

警告

应使用以下命令创建缓冲区对象 arcade.gl.Context.buffer()

参数:
  • ctx -- 此缓冲区所属的上下文

  • data -- 此缓冲区应包含的数据。它可以是一种 bytes 实例或任何支持缓冲区协议的对象。

  • reserve -- 创建特定字节大小的缓冲区

  • usage -- 此缓冲区的命中率为 staticdynamic (基本上可以忽略)

size#

缓冲区的字节大小。

类型:

集成

ctx#

此资源所属的上下文。

类型:

arcade.gl.Context

glo#

OpenGL资源ID

类型:

gl.GLuint

delete()[源代码]#

销毁底层OpenGL资源。除非你清楚地知道自己在做什么,否则不要使用这个。

static delete_glo(ctx: Context, glo: gl.GLuint)[源代码]#

释放/删除打开的GL缓冲区。当对对象进行垃圾回收时,会自动调用此方法。

read(size: int = -1, offset: int = 0) bytes[源代码]#

从缓冲区读取数据。

参数:
  • size -- 要读取的字节数。表示整个缓冲器(默认)

  • offset -- 字节读取偏移量

write(data: Buffer, offset: int = 0)[源代码]#

将字节数据从缓冲区协议对象写入缓冲区。

这个 data 值可以是实现 Buffer Protocol

这包括 bytesbytearrayarray.array ,以及更多。对于非内置类型,您可能需要使用类型化解决方法。看见 将原始字节写入GL缓冲区和纹理 以获取更多信息。

如果提供的数据大于缓冲区,它将被截断以适应。如果提供的数据小于缓冲区,则剩余的字节将保持不变。

参数:
  • data -- 要写入的字节数据。这可以是字节或任何支持缓冲区协议的对象。

  • offset -- 字节偏移量

copy_from_buffer(source: Buffer, size=-1, offset=0, source_offset=0)[源代码]#

将数据从另一个缓冲区复制到此缓冲区

参数:
  • source -- 要从中进行复制的缓冲区

  • size -- 要复制的字节数

  • offset -- 将数据写入此缓冲区的字节偏移量

  • source_offset -- 要从源缓冲区读取的字节偏移量

orphan(size: int = -1, double: bool = False)[源代码]#

重新分配整个缓冲内存。这可用于调整缓冲区大小或重新指定(孤立缓冲区以避免阻塞)。

如果当前缓冲区正忙于渲染操作,则完成后将由OpenGL释放。

参数:
  • size -- 新的缓冲区大小。将保持当前大小。

  • double -- 与一起传入 True 缓冲区大小将增加一倍

bind_to_uniform_block(binding: int = 0, offset: int = 0, size: int = -1)[源代码]#

将此缓冲区绑定到统一的块位置。在大多数情况下,仅提供绑定位置就足够了。

参数:
  • binding -- 绑定位置

  • offset -- 字节偏移量

  • size -- 要绑定的缓冲区的大小。

bind_to_storage_buffer(*, binding=0, offset=0, size=-1)[源代码]#

将该缓冲区绑定为着色器存储缓冲区。

参数:
  • binding -- 绑定位置

  • offset -- 缓冲区中的字节偏移量

  • size -- 以字节为单位的大小。默认情况下,将映射整个缓冲区。