缓冲层#
- class arcade.gl.Buffer(ctx: Context, data: BufferProtocol | None = None, reserve: int = 0, usage: str = 'static')[源代码]#
基类:
OpenGL缓冲区对象。缓冲区存储字节数据并将其上载到图形内存,以便着色器程序可以处理数据。它们用于存储顶点数据、元素数据(顶点索引)、均匀块数据等。
这个
data
参数可以是实现 Buffer Protocol 。这包括
bytes
,bytearray
,array.array
,以及更多。对于非内置类型,您可能需要使用类型化解决方法。看见 将原始字节写入GL缓冲区和纹理 以获取更多信息。警告
应使用以下命令创建缓冲区对象
arcade.gl.Context.buffer()
- 参数:
ctx -- 此缓冲区所属的上下文
data -- 此缓冲区应包含的数据。它可以是一种
bytes
实例或任何支持缓冲区协议的对象。reserve -- 创建特定字节大小的缓冲区
usage -- 此缓冲区的命中率为
static
或dynamic
(基本上可以忽略)
- size#
缓冲区的字节大小。
- 类型:
集成
- ctx#
此资源所属的上下文。
- glo#
OpenGL资源ID
- 类型:
gl.GLuint
- read(size: int = -1, offset: int = 0) bytes [源代码]#
从缓冲区读取数据。
- 参数:
size -- 要读取的字节数。表示整个缓冲器(默认)
offset -- 字节读取偏移量
- write(data: Buffer, offset: int = 0)[源代码]#
将字节数据从缓冲区协议对象写入缓冲区。
这个
data
值可以是实现 Buffer Protocol 。这包括
bytes
,bytearray
,array.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 缓冲区大小将增加一倍