pyglet.graphics.allocation

顶点数组和缓冲区的内存分配算法。

区域分配器用于在顶点域的多个缓冲区内分配顶点索引。(“缓冲区”指的是由 pyglet.graphics.vertexbuffer

分配器有时会从缓冲区请求更多空间。目前的政策是,当没有足够的空间来完成分配时,将缓冲区大小增加一倍。缓冲区的大小永远不会调整得更小。

分配器只维护对空闲空间的引用;调用方负责维护分配的区域。

exception AllocatorMemoryException(requested_capacity)

缓冲区不够大,无法完成分配。

提出者 Allocator 方法当操作因缓冲区空间不足而失败时。缓冲区应至少增加到REQUESTED_CAPTABLE,然后重试操作(保证第二次通过)。

class Allocator(capacity)

缓冲区空间分配的实现。

alloc(size)

分配缓冲区中的内存。

加薪 AllocatorMemoryException 如果无法完成分配。

参数:
size集成

要分配的区域大小。

返回类型:

int

返回:

分配区域的起始索引。

dealloc(start, size)

释放缓冲区的一个区域。

参数:
start集成

区域的起始索引。

size集成

区域的大小。

get_allocated_regions()

获取(聚合)已分配区域的列表。

这种方法的结果是 (starts, sizes) ,在哪里 starts 是各地区和地区的起始指数列表 sizes 它们相应的长度。

返回类型:

(list, list)

get_fragmentation()

返回不可扩展的可用空间的分数。

返回类型:

float

get_fragmented_free_size()

返回未使用的空间量,不包括最后一个空闲块。

返回类型:

int

get_free_size()

返回未使用的空间量。

返回类型:

int

get_usage()

返回当前分配的容量的一部分。

返回类型:

float

realloc(start, size, new_size)

重新分配缓冲区的一个区域。

这比分开更有效率 deallocalloc 调用,因为该区域通常可以就地调整大小。

加薪 AllocatorMemoryException 如果无法完成分配。

参数:
start集成

该区域的当前起始索引。

size集成

区域的当前大小。

new_size集成

新的区域大小。

set_capacity(size)

调整最大缓冲区大小。

能力是不能降低的。

参数:
size集成

缓冲区的新最大大小。

capacity
sizes
starts