pyglet.graphics

子模块

细节

低级图形渲染和抽象。

此模块提供对OpenGL对象(如着色器和缓冲区)的高效抽象。它还提供用于高性能批处理呈现和分组的类。

请参阅 着色器和渲染 有关如何使用此图形API的详细信息。

class Batch

管理用于批处理渲染的可绘制文件集合。

许多可绘制的pyglet对象接受可选的 Batch 参数在它们的构造函数中。通过给一个 Batch 对于多个对象,您可以告诉Pyglet您希望一次绘制所有这些对象,这样它就可以优化其对OpenGL的使用。因此,绘制一个 Batch 通常比单独绘制每个包含的可绘制要快得多。

下面的示例创建一个批处理,向该批处理添加两个精灵,然后绘制整个批处理:

batch = pyglet.graphics.Batch()
car = pyglet.sprite.Sprite(car_image, batch=batch)
boat = pyglet.sprite.Sprite(boat_image, batch=batch)

def on_draw():
    batch.draw()

虽然任何可绘制的内容都可以添加到 Batch ,只有那些具有相同绘制模式、着色器程序和组的对象才能一起优化。

在内部,一个 Batch 管理一组顶点属性域以及有关如何绘制属性域的信息。要在自定义可绘制上实现批处理,请从给定的批处理中获取顶点域,而不是自己设置它们。

draw()

画出批次。

draw_subset(vertex_lists)

仅绘制批中的一些顶点列表。

非常不鼓励使用这种方法,因为它的效率很低。通常可以重新设计应用程序,以便始终可以完整地绘制批处理,使用 draw

给定的顶点列表必须属于此批处理;如果不满足此条件,则行为未定义。

参数:
vertex_lists顺序

要绘制的顶点列表。

get_domain(indexed, mode, group, program, attributes)

获取或创建与给定参数对应的顶点域。

invalidate()

强制批次更新绘图列表。

当组的顺序改变时,此方法可用于强制批次重新计算绘制列表。

在 1.2 版本加入.

migrate(vertex_list, mode, group, batch)

将顶点列表迁移到另一个批次和/或组。

vertex_listmode 共同标识要迁移的顶点列表。 groupbatch 是迁移后顶点列表的新所有者。

如果满足以下条件,则结果未定义 mode 不正确或如果 vertex_list 不属于此批处理(它们未被选中,不一定会立即引发异常)。

batch 如果只需要更改组,则可以保持不变。

参数:
vertex_list~pyglet.graphics.vertexdomain.VertexList

当前属于此批的顶点列表。

mode集成

顶点列表的当前GL绘制模式。

group~pyglet.graphics.Group

要迁移到的新组。

batch~pyglet.graphics.Batch

要迁移到的批次(或当前批次)。

class Group(order=0, parent=None)

公共OpenGL状态的组。

Group 控件中如何处理可绘制对象提供额外的控制 Batch 。当批处理绘制可绘制对象时,它会确保设置其组的状态;这可以包括绑定纹理、着色器或设置任何其他参数。它还会在绘制之前对组进行排序。

在下面的示例中,确保在汽车和船之前绘制背景精灵:

batch = pyglet.graphics.Batch()
background = pyglet.graphics.Group(order=0)
foreground = pyglet.graphics.Group(order=1)

background = pyglet.sprite.Sprite(background_image, batch=batch, group=background)
car = pyglet.sprite.Sprite(car_image, batch=batch, group=foreground)
boat = pyglet.sprite.Sprite(boat_image, batch=batch, group=foreground)

def on_draw():
    batch.draw()
参数:
order集成

设置渲染顺序,使其高于或低于其他组。较低的顺序首先绘制。

parent~pyglet.graphics.Group

组以包含此组;其状态将设置为此组的状态之前。

变数:
visible布尔尔

确定此组在分配给它的任何批次中是否可见。如果 False ,则不会渲染此组中的对象。

batches列表

只读。此组所属批次的列表。

set_state()

应用OpenGL状态更改。

默认实现不执行任何操作。

set_state_recursive()

设置这个群体及其祖先。

如果单独使用组,则调用此方法:父组将以自上而下的顺序调用,此类的 set 被叫到最后。

unset_state()

撤销OpenGL状态更改。

默认实现不执行任何操作。

unset_state_recursive()

把这个群体和它的祖先分开。

的反面 set_state_recursive

property batches
property order
property visible
class ShaderGroup(program, order=0, parent=None)

启用和绑定ShaderProgram的组。

set_state()

应用OpenGL状态更改。

默认实现不执行任何操作。

unset_state()

撤销OpenGL状态更改。

默认实现不执行任何操作。

class TextureGroup(texture, order=0, parent=None)

启用并绑定纹理的组。

如果纹理的目标和名称相同,则纹理组是相等的。

set_state()

应用OpenGL状态更改。

默认实现不执行任何操作。

draw(size, mode, **data)

立即绘制一个基本体。

警告:

从2.0.4开始,此函数已弃用,并将在下一个版本中删除。

参数:
size集成

给定的顶点数

modeGL基元类型

OpenGL绘图模式,例如 GL_TRIANGLES ,避免引号。

**data用于传递顶点属性数据的关键字参数。

关键字应该是顶点属性名,参数应该是(格式,数据)的元组。例如: position=('f', array)

draw_indexed(size, mode, indices, **data)

立即绘制一个带有索引顶点的基本体。

警告:

从2.0.4开始,此函数已弃用,并将在下一个版本中删除。

参数:
size集成

给定的顶点数

mode集成

OpenGL绘图模式,例如 GL_TRIANGLES

indices整型序列

给出顶点列表索引的整数序列。

**data用于传递顶点属性数据的关键字参数。

关键字应该是顶点属性名,参数应该是(格式,数据)的元组。例如: position=('f', array)

get_default_batch()
get_default_shader()