计划#
计划#
- class arcade.gl.Program(ctx: Context, *, vertex_shader: str, fragment_shader: str | None = None, geometry_shader: str | None = None, tess_control_shader: str | None = None, tess_evaluation_shader: str | None = None, varyings: List[str] | None = None, varyings_capture_mode: str = 'interleaved')[源代码]#
基类:
已编译并链接着色器程序。
当前支持顶点着色器、碎片着色器和几何体着色器。当输出属性名称在varyings参数中传递时,也支持变换反馈。
创建程序实例的最佳方法是通过
arcade.gl.Context.program()
通过以下方式访问制服
[]
接线员。示例::program['MyUniform'] = value
- 参数:
ctx -- 此程序所属的上下文
vertex_shader -- 顶点着色器源
fragment_shader -- 片段着色器源
geometry_shader -- 几何体着色器源
tess_control_shader -- 细分控制着色器源
tess_evaluation_shader -- 细分求值着色器源
varyings -- 变换反馈中使用的输出属性列表。
varyings_capture_mode -- 转换的捕获模式。
"interleaved"
意味着所有输出属性将写入单个缓冲区。"separate"
意味着每个OUT属性将被写入单独的缓冲区。根据这些设置, transform() 方法将接受单个缓冲区或缓冲区列表。
- ctx#
此程序所属的上下文
- glo#
此程序的OpenGL资源ID
- 类型:
集成
- attributes#
属性信息列表
- varyings#
变换反馈中使用的输出属性名称
- 类型:
字符串列表
- out_attributes#
变换反馈中使用的输出属性名称。
警告
的旧别名
varyings
。可能会在将来被移除。- 类型:
字符串列表
- varyings_capture_mode#
获取更多关于转换反馈(单一、多个)的捕获信息。
这是一个只读属性,因为捕获模式只能在链接程序之前设置。
- geometry_input#
几何体着色器的输入基本体类型。这可以与之相比
GL_TRIANGLES
,GL_POINTS
等等,并且在创建程序时被查询。- 类型:
集成
- geometry_output#
几何体着色器的输出基本体类型。这可以与之相比
GL_TRIANGLES
,GL_POINTS
等等,并且在创建程序时被查询。- 类型:
集成
- geometry_vertices#
可以发射的最大顶点数。这是在创建程序时查询的。
- 类型:
集成
- static delete_glo(ctx, prog_id)[源代码]#
删除程序。当程序被垃圾收集时,这通常是自动调用的。
- 参数:
ctx -- 上下文
prog_id -- OpenGL资源ID
- 🧙 self[item] Uniform | UniformBlock [源代码]#
获得一个统一的或统一的块
- set_uniform_array_safe(name: str, value: List[Any])[源代码]#
安全地设置统一的阵列。GLSL编译器可以缩短数组,但并不是确定所有元素都在使用。此函数检查实际数组的长度,并在需要时设置值的子集。如果制服不存在,就不会采取任何行动。
- 参数:
name -- 制服名称
value -- 值列表
计划成员#
统一#
- class arcade.gl.uniform.Uniform(ctx, program_id, location, name, data_type, array_length)[源代码]#
基类:
一种程序统一
- 参数:
ctx -- 上下文
program_id -- 此制服所属的程序ID
location -- 统一定位
name -- 制服的名字
data_type -- 制服的数据类型
array_length -- 制服的阵列长度
- location#
制服在节目中的位置
- name#
制服的名称
- array_length#
统一数组的长度。如果不是,则返回数组1
- components#
制服有多少组件。例如,VeV4将具有4个分量。
- getter#
- setter#