计划#
计划#
- class arcade.gl.Program(ctx: Context, *, vertex_shader: str, fragment_shader: str = None, geometry_shader: str = None, tess_control_shader: str = None, tess_evaluation_shader: str = None, varyings: List[str] = None, varyings_capture_mode: str = 'interleaved')[源代码]#
基类:
object
已编译并链接着色器程序。
当前支持顶点着色器、碎片着色器和几何体着色器。当输出属性名称在varyings参数中传递时,也支持变换反馈。
创建程序实例的最佳方法是通过
arcade.gl.Context.program()
通过以下方式访问制服
[]
接线员。示例::program['MyUniform'] = value
- 参数
ctx (Context) -- 此程序所属的上下文
vertex_shader (str) -- 顶点着色器源
fragment_shader (str) -- 片段着色器源
geometry_shader (str) -- 几何体着色器源
tess_control_shader (str) -- 细分控制着色器源
tess_evaluation_shader (str) -- 细分求值着色器源
varyings (List[str]) -- 变换反馈中使用的输出属性列表。
varyings_capture_mode (str) -- 转换的捕获模式。
"interleaved"
意味着所有输出属性将写入单个缓冲区。"separate"
意味着每个OUT属性将被写入单独的缓冲区。根据这些设置, transform() 方法将接受单个缓冲区或缓冲区列表。
- attribute_key#
与顶点数组一起使用的内部缓存键
- property attributes: Iterable[arcade.gl.types.AttribFormat]#
属性信息列表
- property geometry_output: int#
几何体着色器的输出基本体类型。这可以与之相比
GL_TRIANGLES
,GL_POINTS
等等,并且在创建程序时被查询。- 类型
集成
- set_uniform_safe(name: str, value: Any)[源代码]#
安全地设置制服,捕捉KeyError。
- 参数
name (str) -- 制服的名字
value (Any) -- 统一值
- set_uniform_array_safe(name: str, value: List[Any])[源代码]#
安全地设置统一的阵列。GLSL编译器可以缩短数组,但并不是确定所有元素都在使用。此函数检查实际数组的长度,并在需要时设置值的子集。如果制服不存在,就不会采取任何行动。
- 参数
name (str) -- 制服名称
value (List[Any]) -- 值列表
- static compile_shader(source: str, shader_type: ctypes.c_uint) ctypes.c_uint [源代码]#
编译给定类型的着色器代码。
shader_type 可以是GL_Vertex_Shader、GL_Fragment_Shader、...
以GLuint形式返回着色器ID