pyglet.graphics.vertexbuffer

OpenGL缓冲区对象的字节抽象。

使用 create_buffer 若要创建缓冲区对象,请执行以下操作。

可以选择将缓冲区创建为“可映射的”(合并 AbstractMappable 混合)。在这种情况下,缓冲区提供一个 get_region 方法,该方法为更新缓冲区内的部分数据提供了最有效的路径。

class AbstractBuffer

字节数据的抽象缓冲区。

类变量:
  • size (int) -- Size of buffer, in bytes

  • ptr (int) -- Memory offset of the buffer, as used by the glVertexPointer family of functions

abstract bind(target: int = 34962) None

将此缓冲区绑定到OpenGL目标。

返回类型:

None

abstract delete() None

删除此缓冲区,从而减少系统资源使用。

返回类型:

None

abstract map() CTypesPointer[ctypes.c_ubyte]

将整个缓冲区映射到系统内存。

随后必须使用取消映射区域 unmap 在对缓冲区执行任何其他操作之前。

返回:

指向内存中的映射块的指针

resize(size: int) None

将缓冲区大小调整为新大小。

参数:

size (int) -- 缓冲区的新大小,以字节为单位

返回类型:

None

abstract set_data(data: Sequence[int] | _Pointer) None

设置缓冲区的全部内容。

参数:

data (Sequence[int] | _Pointer) -- 要设置的字节数组。

返回类型:

None

abstract set_data_region(
data: Sequence[int] | _Pointer,
start: int,
length: int,
) None

设置部分缓冲区内容。

参数:
  • data (Sequence[int] | _Pointer) -- 要设置的数据的字节数组

  • start (int) -- 开始替换数据的偏移量

  • length (int) -- 要替换的区域长度

返回类型:

None

abstract unbind() None

重置缓冲区的OpenGL目标。

返回类型:

None

abstract unmap() None

取消映射以前映射的内存块。

返回类型:

None

ptr: int = 0
size: int = 0
class AttributeBufferObject

具有系统内存备份存储的缓冲区。

通过以下方式更新数据 set_dataset_data_region 将保存在本地内存中,直到 buffer_data 被称为。这样做的优点是需要更少的OpenGL调用,这可以以牺牲系统内存为代价来提高性能。

__init__(
size: int,
attribute: Attribute,
usage: int = 35048,
) None

使用给定的大小和绘制用途初始化Buffer对象。

get_region(
start: int,
count: int,
) Array[Type[_SimpleCData]]
返回类型:

Array[Type[_SimpleCData]]

invalidate() None
返回类型:

None

invalidate_region(start: int, count: int) None
返回类型:

None

resize(size: int) None

将缓冲区大小调整为新大小。

参数:

size (int) -- 缓冲区的新大小,以字节为单位

返回类型:

None

set_region(
start: int,
count: int,
data: Sequence[float],
) None
返回类型:

None

sub_data() None

如果任何数据已更改或无效,则更新缓冲区。

允许一次提交多个更改,而不必为每次更改调用glBufferSubData。

返回类型:

None

attribute_count: int
attribute_ctype: Type[_SimpleCData]
attribute_stride: int
data: Type[_SimpleCData]
data_ptr: int
class BufferObject

OpenGL缓冲区对象的轻量级表示形式。

缓冲区中的数据不会复制到任何系统内存中(除非它是由视频驱动程序复制的)。虽然这可以提高内存使用率并可能提高性能,但对缓冲区的更新相对较慢。缓冲区的目标是 GL_ARRAY_BUFFER 在内部,以避免在更改缓冲区内容时意外覆盖其他状态。可以在绑定缓冲区时设置预期的目标。

__init__(size: int, usage: int = 35048) None

使用给定的大小和绘制用途初始化Buffer对象。

bind(target: int = 34962) None

将此缓冲区绑定到OpenGL目标。

返回类型:

None

bind_to_index_buffer() None

将此缓冲区绑定为活动顶点数组上的索引缓冲区。

返回类型:

None

delete() None

删除此缓冲区,从而减少系统资源使用。

返回类型:

None

invalidate() None
返回类型:

None

map() CTypesPointer[ctypes.c_byte]

将整个缓冲区映射到系统内存。

随后必须使用取消映射区域 unmap 在对缓冲区执行任何其他操作之前。

返回:

指向内存中的映射块的指针

map_range(
start: int,
size: int,
ptr_type: type[_Pointer],
) _Pointer
返回类型:

_Pointer

resize(size: int) None

将缓冲区大小调整为新大小。

参数:

size (int) -- 缓冲区的新大小,以字节为单位

返回类型:

None

set_data(data: Sequence[int] | _Pointer) None

设置缓冲区的全部内容。

参数:

data (Sequence[int] | _Pointer) -- 要设置的字节数组。

返回类型:

None

set_data_region(
data: Sequence[int] | _Pointer,
start: int,
length: int,
) None

设置部分缓冲区内容。

参数:
  • data (Sequence[int] | _Pointer) -- 要设置的数据的字节数组

  • start (int) -- 开始替换数据的偏移量

  • length (int) -- 要替换的区域长度

返回类型:

None

unbind() None

重置缓冲区的OpenGL目标。

返回类型:

None

unmap() None

取消映射以前映射的内存块。

返回类型:

None

id: int
usage: int