计划#

计划#

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() 方法将接受单个缓冲区或缓冲区列表。

attribute_key: str#

与顶点数组一起使用的内部缓存键

ctx#

此程序所属的上下文

类型:

arcade.gl.Context

glo#

此程序的OpenGL资源ID

类型:

集成

attributes#

属性信息列表

varyings#

变换反馈中使用的输出属性名称

类型:

字符串列表

out_attributes#

变换反馈中使用的输出属性名称。

警告

的旧别名 varyings 。可能会在将来被移除。

类型:

字符串列表

varyings_capture_mode#

获取更多关于转换反馈(单一、多个)的捕获信息。

这是一个只读属性,因为捕获模式只能在链接程序之前设置。

geometry_input#

几何体着色器的输入基本体类型。这可以与之相比 GL_TRIANGLESGL_POINTS 等等,并且在创建程序时被查询。

类型:

集成

geometry_output#

几何体着色器的输出基本体类型。这可以与之相比 GL_TRIANGLESGL_POINTS 等等,并且在创建程序时被查询。

类型:

集成

geometry_vertices#

可以发射的最大顶点数。这是在创建程序时查询的。

类型:

集成

delete()[源代码]#

销毁底层OpenGL资源。除非你清楚地知道自己在做什么,否则不要使用这个。

static delete_glo(ctx, prog_id)[源代码]#

删除程序。当程序被垃圾收集时,这通常是自动调用的。

参数:
  • ctx -- 上下文

  • prog_id -- OpenGL资源ID

🧙 self[item] Uniform | UniformBlock[源代码]#

获得一个统一的或统一的块

🧙 self[key] = value[源代码]#

设置统一的值

set_uniform_safe(name: str, value: Any)[源代码]#

安全地设置制服,捕捉KeyError。

参数:
  • name -- 制服的名字

  • value -- 统一值

set_uniform_array_safe(name: str, value: List[Any])[源代码]#

安全地设置统一的阵列。GLSL编译器可以缩短数组,但并不是确定所有元素都在使用。此函数检查实际数组的长度,并在需要时设置值的子集。如果制服不存在,就不会采取任何行动。

参数:
  • name -- 制服名称

  • value -- 值列表

use()[源代码]#

激活着色器。这通常是自动为您完成的。

static compile_shader(source: str, shader_type: int) c_uint[源代码]#

编译给定类型的着色器代码。

shader_type 可以是GL_Vertex_Shader、GL_Fragment_Shader、...

以GLuint形式返回着色器ID

链接着色器程序

计划成员#

统一#

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#

UniformBlock#

class arcade.gl.uniform.UniformBlock(glo: int, index: int, size: int, name: str)[源代码]#

基类:

着色器中统一块的包装。

glo#

OpenGL对象句柄

index#

均匀块的索引

size#

统一块的大小

name#

统一块的名称

binding#

获取或设置此统一块的绑定索引

getter()[源代码]#

此统一块的getter函数。返回SELF。

setter(value: int)[源代码]#

此统一块的setter函数。

参数:

value -- 要设置的绑定索引。