pyglet.graphics.vertexdomain

管理单个顶点域中的相关顶点属性。

顶点“域”由一组属性描述组成,这些属性描述一起描述一个或多个顶点缓冲区的布局,这些缓冲区一起用于指定基元中的顶点。此外,域管理用于存储数据的缓冲区,并根据需要调整缓冲区大小以容纳新顶点。

可以选择性地对域进行索引,在这种情况下,它们还可以管理包含顶点索引的缓冲区。该缓冲区是单独增长的,与属性缓冲区没有大小关系。

应用程序可以在域中创建顶点(以及可选的索引 VertexDomain.create() 方法。这将返回一个 VertexList 表示创建的顶点列表。可以修改组内的顶点属性数据,并自动对底层缓冲区进行更改。

可以在一个步骤中高效地绘制整个域 VertexDomain.draw() 方法,假定所有顶点都包含相同OpenGL基元模式的基元。

class IndexedVertexDomain

管理一组索引顶点列表。

索引顶点域的构造通常使用 create_domain() 功能。

__init__(
program: ShaderProgram,
attribute_meta: dict[str, dict[str, Any]],
index_gl_type: int = 5125,
) None
create(
count: int,
index_count: int,
) IndexedVertexList

创建一个 IndexedVertexList 在这个领域。

参数:
  • count (int) -- 要创建的顶点数

  • index_count (int) -- 要创建的索引数

返回类型:

IndexedVertexList

draw(mode: int) None

绘制区域中的所有顶点。

域中的所有顶点将同时绘制。这是呈现基元的最有效方法。

参数:

mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

返回类型:

None

draw_subset(
mode: int,
vertex_list: IndexedVertexList,
) None

在域中绘制特定的IndexedVertex List。

这个 vertex_list 参数指定一个 IndexedVertexList 去画画。将只绘制该列表中的基元。

参数:
  • mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

  • vertex_list (IndexedVertexList) -- 要绘制的顶点列表。

返回类型:

None

get_index_region(start: int, count: int) Array[int]

从索引缓冲区的某个区域获取数据。

参数:
  • start (int) -- 要映射的区域的起点。

  • count (int) -- 要映射的索引数。

返回类型:

Array[int]

safe_index_alloc(count: int) int

分配索引,必要时调整缓冲区大小。

返回类型:

int

safe_index_realloc(start: int, count: int, new_count: int) int

重新分配索引,必要时调整缓冲区大小。

返回类型:

int

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

None

index_allocator: Allocator
index_buffer: BufferObject
index_c_type: Type[_SimpleCData]
index_element_size: int
index_gl_type: int
class IndexedVertexList

中的顶点列表。 IndexedVertexDomain 这些都被索引了。

使用 IndexedVertexDomain.create() 来构建这份名单。

__init__(
domain: IndexedVertexDomain,
start: int,
count: int,
index_start: int,
index_count: int,
) None
delete() None

删除此群。

返回类型:

None

migrate(
domain: IndexedVertexDomain | InstancedIndexedVertexDomain,
) None

将该组从其当前索引域中移动并添加到指定的域中。

域上的属性必须匹配。 (In实践,用于改变某些点的父状态)。

参数:

domain (IndexedVertexDomain | InstancedIndexedVertexDomain) -- 要将此顶点列表迁移到的索引域。

返回类型:

None

set_instance_source(
domain: IndexedVertexDomain | InstancedIndexedVertexDomain,
instance_attributes: Sequence[str],
) None
返回类型:

None

domain: IndexedVertexDomain | InstancedIndexedVertexDomain
index_count: int
index_start: int
indexed: bool = True
property indices

索引数据数组。

class InstancedIndexedVertexDomain

管理一组索引顶点列表。

索引顶点域的构造通常使用 create_domain() 功能。

__init__(
program: ShaderProgram,
attribute_meta: dict[str, dict[str, Any]],
index_gl_type: int = 5125,
) None
create(
count: int,
index_count: int,
) IndexedVertexList

创建一个 IndexedVertexList 在这个领域。

参数:
  • count (int) -- 要创建的顶点数

  • index_count (int) -- 要创建的索引数

返回类型:

IndexedVertexList

draw(mode: int) None

绘制区域中的所有顶点。

域中的所有顶点将同时绘制。这是呈现基元的最有效方法。

参数:

mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

返回类型:

None

draw_subset(
mode: int,
vertex_list: IndexedVertexList,
) None

在域中绘制特定的IndexedVertex List。

这个 vertex_list 参数指定一个 IndexedVertexList 去画画。将只绘制该列表中的基元。

参数:
  • mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

  • vertex_list (IndexedVertexList) -- 要绘制的顶点列表。

返回类型:

None

get_index_region(
start: int,
count: int,
) Array[int]

从索引缓冲区的某个区域获取数据。

参数:
  • start (int) -- 要映射的区域的起点。

  • count (int) -- 要映射的索引数。

返回类型:

Array[int]

safe_index_alloc(count: int) int

分配索引,必要时调整缓冲区大小。

返回类型:

int

返回:

已分配区域的开始索引。

safe_index_realloc(
start: int,
count: int,
new_count: int,
) int

重新分配索引,必要时调整缓冲区大小。

返回类型:

int

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

None

class InstancedVertexDomain
__init__(
program: ShaderProgram,
attribute_meta: dict[str, dict[str, Any]],
) None
draw(mode: int) None

绘制区域中的所有顶点。

域中的所有顶点将同时绘制。这是呈现基元的最有效方法。

参数:

mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

返回类型:

None

draw_subset(
mode: int,
vertex_list: VertexList,
) None

在域中绘制特定的顶点列表。

这个 vertex_list 参数指定一个 VertexList 去画画。将只绘制该列表中的基元。

参数:
  • mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

  • vertex_list (VertexList) -- 要绘制的顶点列表。

返回类型:

None

safe_alloc(count: int) int

分配顶点,如有必要可调整缓冲区大小。

返回类型:

int

safe_alloc_instance(count: int) int
返回类型:

int

safe_realloc(start: int, count: int, new_count: int) int

重新分配顶点,如有必要,调整缓冲区大小。

返回类型:

int

instance_allocator: Allocator
property is_empty: bool
class VertexDomain

管理一组顶点列表。

顶点域的构造通常使用 create_domain() 功能。

__init__(
program: ShaderProgram,
attribute_meta: dict[str, dict[str, Any]],
) None
create(
count: int,
index_count: int | None = None,
) VertexList

创建 VertexList 在这个领域。

参数:
  • count (int) -- 要创建的顶点数。

  • index_count (int | None) -- 忽略非索引顶点属性域

返回类型:

VertexList

draw(mode: int) None

绘制区域中的所有顶点。

域中的所有顶点将同时绘制。这是呈现基元的最有效方法。

参数:

mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

返回类型:

None

draw_subset(
mode: int,
vertex_list: VertexList,
) None

在域中绘制特定的顶点列表。

这个 vertex_list 参数指定一个 VertexList 去画画。将只绘制该列表中的基元。

参数:
  • mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

  • vertex_list (VertexList) -- 要绘制的顶点列表。

返回类型:

None

safe_alloc(count: int) int

分配顶点,如有必要可调整缓冲区大小。

返回类型:

int

safe_realloc(start: int, count: int, new_count: int) int

重新分配顶点,如有必要,调整缓冲区大小。

返回类型:

int

allocator: Allocator
attribute_meta: dict[str, dict[str, Any]]
attribute_names: dict[str, Attribute]
buffer_attributes: list[tuple[AttributeBufferObject, tuple[Attribute]]]
property is_empty: bool
program: ShaderProgram
vao: VertexArray
class VertexInstance
__init__(
vertex_list: VertexList | IndexedVertexList,
instance_id: int,
start: int,
) None
delete() None
返回类型:

None

property domain: InstancedVertexDomain | InstancedIndexedVertexDomain
id: int
start: int
class VertexList

中的顶点列表。 VertexDomain

使用 VertexDomain.create() 来构建这份名单。

__init__(
domain: VertexDomain,
start: int,
count: int,
) None
add_instance(
**kwargs: Any,
) VertexInstance
返回类型:

VertexInstance

delete() None

删除此群。

返回类型:

None

delete_instance(
instance: VertexInstance,
) None
返回类型:

None

draw(mode: int) None

在给定的OpenGL模式下绘制此顶点列表。

参数:

mode (int) -- OpenGL绘图模式,例如 GL_POINTSGL_LINES

返回类型:

None

migrate(
domain: VertexDomain | InstancedVertexDomain,
) None

将此组从当前域中移动并添加到指定的域中。

域上的属性必须匹配。(In实践,用于改变某些点的父状态)。

参数:

domain (VertexDomain | InstancedVertexDomain) -- 要将此顶点列表迁移到的域。

返回类型:

None

resize(count: int, index_count: int | None = None) None

调整此组的大小。

参数:
  • count (int) -- 列表中的新顶点数。

  • index_count (int | None) -- 忽略非索引顶点属性域

返回类型:

None

set_attribute_data(name: str, data: Any) None
返回类型:

None

set_instance_source(
domain: InstancedVertexDomain,
instance_attributes: Sequence[str],
) None
返回类型:

None

count: int
domain: VertexDomain | InstancedVertexDomain
indexed: bool = False
instanced: bool = False
start: int