pyglet.graphics.vertexbuffer

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

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

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

class AbstractBuffer

字节数据的抽象缓冲区。

变量:
size集成

缓冲区大小,以字节为单位

ptr集成

缓冲区的内存偏移量,由 glVertexPointer 函数族

usage集成

OpenGL缓冲区使用情况,例如 GL_DYNAMIC_DRAW

bind(target=34962)

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

delete()

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

map()

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

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

参数:
invalidate布尔尔

如果为True,则映射块的初始内容不必反映缓冲区的实际内容。

返回类型:

POINTER(ctypes.c_ubyte)

返回:

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

resize(size)

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

参数:
size集成

缓冲区的新大小,以字节为单位

set_data(data)

设置缓冲区的全部内容。

参数:
dataInt或ctype指针序列

要设置的字节数组。

set_data_region(data, start, length)

设置部分缓冲区内容。

参数:
dataInt或ctype指针序列

要设置的数据的字节数组

start集成

开始替换数据的偏移量

length集成

要替换的区域长度

unbind()

重置缓冲区的OpenGL目标。

unmap()

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

ptr = 0
size = 0
class AttributeBufferObject(size, attribute, usage=35048)

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

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

get_region(start, count)
invalidate()
invalidate_region(start, count)
resize(size)

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

参数:
size集成

缓冲区的新大小,以字节为单位

set_region(start, count, data)
sub_data()

如果任何数据已更改或无效,则更新缓冲区。允许一次提交多个更改,而不必为每个更改调用glBufferSubData。

class BufferObject(size, usage=35048)

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

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

此类不实现 AbstractMappable ,因此没有 get_region() 方法。看见 MappableVertexBufferObject 对于确实实现了 get_region()

bind(target=34962)

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

bind_to_index_buffer()

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

delete()

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

invalidate()
map()

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

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

参数:
invalidate布尔尔

如果为True,则映射块的初始内容不必反映缓冲区的实际内容。

返回类型:

POINTER(ctypes.c_ubyte)

返回:

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

map_range(start, size, ptr_type)
resize(size)

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

参数:
size集成

缓冲区的新大小,以字节为单位

set_data(data)

设置缓冲区的全部内容。

参数:
dataInt或ctype指针序列

要设置的字节数组。

set_data_region(data, start, length)

设置部分缓冲区内容。

参数:
dataInt或ctype指针序列

要设置的数据的字节数组

start集成

开始替换数据的偏移量

length集成

要替换的区域长度

unbind()

重置缓冲区的OpenGL目标。

unmap()

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