计划#

计划#

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 ctx: Context#

此程序所属的上下文

类型

arcade.gl.Context

property glo: int#

此程序的OpenGL资源ID

类型

集成

property attributes: Iterable[arcade.gl.types.AttribFormat]#

属性信息列表

property varyings: List[str]#

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

类型

字符串列表

property out_attributes: List[str]#

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

警告

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

类型

字符串列表

property varyings_capture_mode: str#

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

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

property geometry_input: int#

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

类型

集成

property geometry_output: int#

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

类型

集成

property geometry_vertices: int#

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

类型

集成

delete()[源代码]#

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

static delete_glo(ctx, prog_id)[源代码]#
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]) -- 值列表

use()[源代码]#

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

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

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

shader_type 可以是GL_Vertex_Shader、GL_Fragment_Shader、...

以GLuint形式返回着色器ID

链接着色器程序

计划成员#

整齐划一#

class arcade.gl.uniform.Uniform(program_id, location, name, data_type, array_length)[源代码]#

基类:object

一种程序统一

参数
  • location (int) -- 制服在节目中的位置

  • name (str) -- 项目中制服的名称

  • data_type (gl.GLenum) -- 统一的数据类型(GL_FLOAT

property location: int#

制服在节目中的位置

property name: str#

制服的名称

property array_length: int#

统一数组的长度。如果不是,则返回数组1

getter#
setter#

UniformBlock#

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

基类:object

着色器中统一块的包装。

glo#
index#
size#
name#
property binding: int#

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

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