pyglet.graphics.shader
- exception ShaderException
- class Attribute
映射缓冲区中属性的抽象访问器。
- get_region(
- buffer: AttributeBufferObject,
- start: int,
- count: int,
使用此属性作为访问器映射缓冲区。
返回的区域由组件数据元素的连续数组组成。例如,如果此属性对每个顶点使用3个浮点数,而 count 参数为4,则映射的浮点数将为
3 * 4 = 12
。- 参数:
buffer (
AttributeBufferObject
) -- 要映射的缓冲区。start (
int
) -- 要映射的第一个顶点的偏移。count (
int
) -- 要映射的顶点数
- 返回类型:
Array
[Type
[_SimpleCData
]]
- set_region(
- buffer: AttributeBufferObject,
- start: int,
- count: int,
- data: Sequence[float],
将数据设置在缓冲区的一个区域上。
-
buffer:
AttributeBufferObject
|None
缓冲区是在VertexDomain创建期间创建和附加的。
- class ComputeShaderProgram
GL计算着色器程序。
- static dispatch( ) None
启动一个或多个计算工作组。
在调用此方法之前,ComputeShaderProgram应处于活动(绑定)状态。X、y和z参数指定将在X、Y和Z维度上调度的本地工作组的数量。
- 返回类型:
- property uniform_blocks: dict[str, UniformBlock]
- class Shader
OpenGL着色器。
着色器对象在实例化时编译。可以在多个ShaderProgram中重复使用一个Shader对象。
- class ShaderProgram
OpenGL着色器程序。
- vertex_list( ) VertexList
创建顶点列表。
- vertex_list_indexed(
- count: int,
- mode: int,
- indices: Sequence[int],
- batch: Batch = None,
- group: Group = None,
- **data: Any,
创建IndexedVertex List。
- 参数:
- 返回类型:
- vertex_list_instanced(
- count: int,
- mode: int,
- instance_attributes: Sequence[str],
- batch: Batch = None,
- group: Group = None,
- **data: Any,
- 返回类型:
- vertex_list_instanced_indexed(
- count: int,
- mode: int,
- indices: Sequence[int],
- instance_attributes: Sequence[str],
- batch: Batch = None,
- group: Group = None,
- **data: Any,
- 返回类型:
- property uniform_blocks: dict[str, UniformBlock]
内省UniformBlocks的词典。
此属性返回
UniformBlock
实例。可以通过名称访问它们。例如::block = my_shader_program.uniform_blocks['WindowBlock'] ubo = block.create_ubo()
- class ShaderSource
用于简化源代码解析的GLSL源代码容器。
我们支持定位属性和应用#Defines值。
备注
我们确实假设源代码足够简洁,可以以这种方式解析,并且一行中不包含多个陈述。
- class UniformBlock
- __init__(
- program: ShaderProgram,
- name: str,
- index: int,
- size: int,
- binding: int,
- uniforms: dict[int, tuple[str, Type[c_int] | Type[c_float] | Type[c_ubyte] | int, int]],
初始化ShaderProgram的统一块。
- create_ubo() UniformBufferObject
从此Uniform块创建新的UniformBufferObject。
- 返回类型:
- set_binding(binding: int) None
将统一块重新绑定到新的绑定索引号。
这只会影响此Uniform Block所源自的程序。
Binding value of 0 is reserved for the Pyglet's internal uniform block named
WindowBlock
. :rtype:None
警告
通过手动设置绑定,用户需要手动管理所有着色器程序的所有Uniform Block绑定。由于内部全局ID将不知道此函数设置的更改,因此如果您使用较低的数字,可能会发生冲突。
备注
你必须打电话给我
create_ubo
在调用此之后获取另一个统一缓冲区对象,因为之前的缓冲区仍然绑定到旧的绑定点。
- binding: int
- index: int
- name: str
- program: CallableProxyType[Callable[..., Any] | Any] | Any
- size: int
- uniforms: dict[int, tuple[str, GLDataType, int]]
- view_cls: type[Structure] | None