缓冲层#

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

基类:object

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

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

参数
  • ctx (Context) -- 此缓冲区所属的上下文

  • data (Any) -- 此缓冲区应包含的数据。它可以是字节,也可以是支持缓冲区协议的任何对象。

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

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

property size: int#

缓冲区的字节大小。

类型

集成

property ctx: Context#

此资源所属的上下文。

类型

arcade.gl.Context

property glo: ctypes.c_uint#

OpenGL资源ID

类型

gl.GLuint

delete()[源代码]#

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

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

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

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

从缓冲区读取数据。

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

  • offset (int) -- 字节读取偏移量

返回类型

bytes

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

将字节数据写入缓冲区。

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

  • offset (int) -- 字节偏移量

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

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

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

  • size (int) -- 要复制的字节数

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

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

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

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

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

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

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

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

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

参数
  • binding (int) -- 绑定位置

  • offset (int) -- 字节偏移量

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

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

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

参数
  • binding (int) -- 绑定位置

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

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