WebGLShader

.Renderer.WebGL. WebGLShader

WebGLShader类的实例属于WebGL管道类.当管道是 创建它将为它的每个着色器创建这个类的一个实例,如 管道配置. 这个类封装了在管道中管理着色器所需的一切,包括 着色器属性和制服,以及许多方便的设置方法,如 `set2f` 此着色器上的统一值. 通常,您不会直接创建此类的实例,因为它与 它所属的管道.您可以通过管道的 `shaders` 访问该类 数组,后期创建.

Constructor

new WebGLShader(pipeline, name, vertexShader, fragmentShader, attributes)

Since:
  • 3.50.0
Parameters:
Name Type Description
pipeline Phaser.Renderer.WebGL.WebGLPipeline 此着色器所属的网络管道.
name string 此着色器的名称.
vertexShader string 顶点着色器源代码为单个字符串.
fragmentShader string 片段着色器源代码为单个字符串.
attributes Array.<Phaser.Types.Renderer.WebGL.WebGLPipelineAttributesConfig> 属性数组.

Members

attributes :Array.<Phaser.Types.Renderer.WebGL.WebGLPipelineAttribute>

Since:
  • 3.50.0
描述顶点属性的对象数组.
Type:

gl :WebGLRenderingContext

Since:
  • 3.50.0
对网络总帐渲染器正在使用的网络总帐渲染上下文的引用.
Type:
  • WebGLRenderingContext

name :string

Since:
  • 3.50.0
此着色器的名称.
Type:
  • string

pipeline :Phaser.Renderer.WebGL.WebGLPipeline

Since:
  • 3.50.0
对拥有此着色器的WebGLPipeline的引用. 一个着色器类只能属于一个管道.
Type:

program :WebGLProgram

Since:
  • 3.50.0
从顶点和片段着色器创建的WebGLProgram.
Type:
  • WebGLProgram

renderer :Phaser.Renderer.WebGL.WebGLRenderer

Since:
  • 3.50.0
对WebGLRenderer实例的引用.
Type:

uniforms :Phaser.Types.Renderer.WebGL.WebGLPipelineUniformsConfig

Since:
  • 3.50.0
该着色器具有的活动制服. 这是一个将统一名称映射到其WebGL位置和缓存值的对象. 它通过 `createUniforms` 方法自动填充.
Type:

vertexComponentCount :number

Since:
  • 3.50.0
32位长度的顶点属性分量的数量.
Type:
  • number

(readonly) vertexSize :number

Since:
  • 3.50.0
单个顶点的大小,以字节为单位. 这是通过将所有顶点属性加在一起得到的. 例如,多管道具有以下属性: inPosition -(尺寸2 x gl.FLOAT) = 8 inTexCoord -(尺寸2 x gl.FLOAT) = 8 inTexId -(尺寸1 x gl.FLOAT) = 4 Intineffect-(尺寸1 x gl.FLOAT) = 4 inTint -(尺寸4 x gl.UNSIGNED_BYTE) = 4 在这种情况下,总数是8 + 8 + 4 + 4 + 4 = 28. 这是在 `createAttributes` 方法中自动计算的.
Type:
  • number

Methods

bind(setAttributesopt, flushopt) → {this}

Since:
  • 3.50.0
将此着色器用作WebGL渲染器中活动着色器的程序设置为活动着色器. 每当父管道成为当前活动管道时,都会调用此方法.
Parameters:
Name Type Attributes Default Description
setAttributes boolean <optional>
false 顶点属性指针应该设置吗?
flush boolean <optional>
false 绑定此着色器前刷新管道?
Returns:
此WebGLShader实例.
Type
this

createAttributes(attributes)

Since:
  • 3.50.0
获取顶点属性配置并解析它,创建存储的结果数组 在这个着色器 `attributes` 属性中,计算偏移量,规范化和位置 在这个过程中. 调用此方法将重置 `WebGLShader.attributes` , `WebGLShader.vertexSize` 和 `webglshader.VertexComponentCount` . 创建此类时会自动调用它,但如果需要,也可以手动调用.
Parameters:
Name Type Description
attributes Array.<Phaser.Types.Renderer.WebGL.WebGLPipelineAttributesConfig> 属性配置的数组.

createUniforms() → {this}

Since:
  • 3.50.0
设置 `WebGLShader.uniforms` 对象,用名称填充它 和该着色器所需的着色器制服的位置. 它的工作原理是首先调用 `gl.GetProgramParameter(program,gl.活动_制服)` to 找出这个着色器有多少活动制服.然后它遍历它们, 调用 `gl.GetActiveUniform` 从每一个获取WebGL活动信息.最后, 名称和位置存储在本地数组中. 创建此类时会自动调用此方法.
Returns:
此WebGLShader实例.
Type
this

destroy()

Since:
  • 3.50.0
从该类中移除所有外部引用,并从WebGL上下文中删除WebGL程序. 不从父管道中移除此着色器.

hasUniform(name) → {boolean}

Since:
  • 3.50.0
检查给定的统一名称是否存在并在此着色器中处于活动状态.
Parameters:
Name Type Description
name string 要检查的制服的名称.
Returns:
如果制服存在,则为 `true` ,否则为 `false` .
Type
boolean

rebind() → {this}

Since:
  • 3.50.0
将此着色器用作WebGL渲染器中活动着色器的程序设置为活动着色器. 然后重置所有属性指针.
Returns:
此WebGLShader实例.
Type
this

resetUniform(name) → {this}

Since:
  • 3.50.0
重置给定制服的缓存值.
Parameters:
Name Type Description
name string 要重置的制服的名称.
Returns:
此WebGLShader实例.
Type
this

set1f(name, x) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置1f统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
x number `float` 制服的新价值.
Returns:
此WebGLShader实例.
Type
this

set1fv(name, arr) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置1fv统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
arr Array.<number> | Float32Array 用于统一变量的新值.
Returns:
此WebGLShader实例.
Type
this

set1i(name, x) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置1i统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
x number `int` 制服的新价值.
Returns:
此WebGLShader实例.
Type
this

set1iv(name, arr) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置一个1iv统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
arr Array.<number> | Float32Array 用于统一变量的新值.
Returns:
此WebGLShader实例.
Type
this

set2f(name, x, y) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置2f统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
x number `vec 2` 制服的新X组件.
y number `vec 2` 制服的新Y组件.
Returns:
此WebGLShader实例.
Type
this

set2fv(name, arr) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置2fv统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
arr Array.<number> | Float32Array 用于统一变量的新值.
Returns:
此WebGLShader实例.
Type
this

set2i(name, x, y) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置2i统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
x number `ivec2` 制服的新X组件.
y number `i vec 2` 制服的新Y组件.
Returns:
此WebGLShader实例.
Type
this

set2iv(name, arr) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置2iv统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
arr Array.<number> | Float32Array 用于统一变量的新值.
Returns:
此WebGLShader实例.
Type
this

set3f(name, x, y, z) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置3f统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
x number `vec 3` 制服的新X组件.
y number `vec 3` 制服的新Y组件.
z number `vec3` 制服的新Z组件.
Returns:
此WebGLShader实例.
Type
this

set3fv(name, arr) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置3fv统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
arr Array.<number> | Float32Array 用于统一变量的新值.
Returns:
此WebGLShader实例.
Type
this

set3i(name, x, y, z) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置3i统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
x number `i vec 3` 制服的新X组件.
y number `i vec 3` 制服的新Y组件.
z number `ivec3` 制服的新Z组件.
Returns:
此WebGLShader实例.
Type
this

set3iv(name, arr) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置3iv统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type Description
name string 要设置的制服的名称.
arr Array.<number> | Float32Array 用于统一变量的新值.
Returns:
此WebGLShader实例.
Type
this

set4f(name, x, y, z, w) → {this}

Since:
  • 3.50.0
基于此着色器上的给定名称设置4f统一值. 只有当给定的值与先前设置的值不同时,才会设置制服. 此方法首先将此着色器设置为 如果还没有的话.它还将该着色器设置为当前着色器 它所属的管道中的一个.
Parameters:
Name Type