pyglet.graphics.allocation
顶点数组和缓冲区的内存分配算法。
区域分配器用于在顶点域的多个缓冲区内分配顶点索引。(“缓冲区”指的是由 pyglet.graphics.vertexbuffer
。
分配器有时会从缓冲区请求更多空间。目前的政策是,当没有足够的空间来完成分配时,将缓冲区大小增加一倍。缓冲区的大小永远不会调整得更小。
分配器只维护对空闲空间的引用;调用方负责维护分配的区域。
- exception AllocatorMemoryException(requested_capacity)
缓冲区不够大,无法完成分配。
提出者 Allocator 方法当操作因缓冲区空间不足而失败时。缓冲区应至少增加到REQUESTED_CAPTABLE,然后重试操作(保证第二次通过)。
- class Allocator(capacity)
缓冲区空间分配的实现。
- alloc(size)
分配缓冲区中的内存。
加薪 AllocatorMemoryException 如果无法完成分配。
- 参数:
- size集成
要分配的区域大小。
- 返回类型:
- 返回:
分配区域的起始索引。
- dealloc(start, size)
释放缓冲区的一个区域。
- 参数:
- start集成
区域的起始索引。
- size集成
区域的大小。
- get_allocated_regions()
获取(聚合)已分配区域的列表。
这种方法的结果是
(starts, sizes)
,在哪里starts
是各地区和地区的起始指数列表sizes
它们相应的长度。
- realloc(start, size, new_size)
重新分配缓冲区的一个区域。
这比分开更有效率 dealloc 和 alloc 调用,因为该区域通常可以就地调整大小。
加薪 AllocatorMemoryException 如果无法完成分配。
- 参数:
- start集成
该区域的当前起始索引。
- size集成
区域的当前大小。
- new_size集成
新的区域大小。
- set_capacity(size)
调整最大缓冲区大小。
能力是不能降低的。
- 参数:
- size集成
缓冲区的新最大大小。
- capacity
- sizes
- starts