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_list 和 mode 共同标识要迁移的顶点列表。 group 和 batch 是迁移后顶点列表的新所有者。
如果满足以下条件,则结果未定义 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()