PipelineManager

.Renderer.WebGL. PipelineManager

管道管理器负责创建,激活,运行和销毁 相位器3中的WebGL管道和后置FX管道. `WebGLRenderer` 拥有一个管道管理器实例,您可以访问它 通过 `WebGLRenderer.pipelines` 属性. 默认情况下,相位器启动时,管道管理器中安装了8条管道: 1. 多管道.负责所有多纹理渲染,即.精灵和颚化符. 2. 图形管道.负责渲染图形和形状对象. 3. 绳索管道.负责渲染绳子游戏对象. 4. 光管道.负责渲染灯光游戏对象. 5. 点光源管道.负责渲染点光游戏对象. 6. 单一管道.负责渲染明确需要一个绑定纹理的游戏对象. 7. 位图掩码管道.负责位图蒙版渲染. 8. 公用管道.负责提供大量便捷的纹理操作功能. 您可以通过 `PipelineManager.add` 方法添加自己的自定义管道.管道是 由基于字符串的唯一键标识.

Constructor

new PipelineManager(renderer)

Since:
  • 3.50.0
Parameters:
Name Type Description
renderer Phaser.Renderer.WebGL.WebGLRenderer 对拥有此管道管理器的WebGL渲染器的引用.

Members

BITMAPMASK_PIPELINE :Phaser.Renderer.WebGL.Pipelines.BitmapMaskPipeline

Since:
  • 3.50.0
Default Value:
  • null
位图掩码管道实例的常量样式引用. 这是默认的相位器3遮罩管道,用于游戏对象 位图蒙版.该属性在 `boot` 方法中设置.
Type:

classes :Phaser.Structs.Map.<string, Class>

Since:
  • 3.50.0
此映射存储此管理器中可用的所有管道类. 实用程序类必须总是第一位的.
Type:

current :Phaser.Renderer.WebGL.WebGLPipeline

Since:
  • 3.50.0
Default Value:
  • null
WebGLRenderer正在使用的当前管道.
Type:

fullFrame1 :Phaser.Renderer.WebGL.RenderTarget

Since:
  • 3.50.0
Default Value:
  • null
属于的全帧1渲染目标的引用 公用管道.该属性在 `boot` 方法中设置. 该渲染目标是渲染器的全部大小. 您可以在多目标效果的后期效果管道中直接使用它. 但是,请注意,这些目标在所有外汇交易管道之间共享.
Type:

fullFrame2 :Phaser.Renderer.WebGL.RenderTarget

Since:
  • 3.50.0
Default Value:
  • null
属于的全帧2渲染目标的引用 公用管道.该属性在 `boot` 方法中设置. 该渲染目标是渲染器的全部大小. 您可以在多目标效果的后期效果管道中直接使用它. 但是,请注意,这些目标在所有外汇交易管道之间共享.
Type:

game :Phaser.Game

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

halfFrame1 :Phaser.Renderer.WebGL.RenderTarget

Since:
  • 3.50.0
Default Value:
  • null
属于的半帧1渲染目标的引用 公用管道.该属性在 `boot` 方法中设置. 此渲染目标是渲染器大小的一半. 您可以在多目标效果的后期效果管道中直接使用它. 但是,请注意,这些目标在所有外汇交易管道之间共享.
Type:

halfFrame2 :Phaser.Renderer.WebGL.RenderTarget

Since:
  • 3.50.0
Default Value:
  • null
属于的半帧2渲染目标的引用 公用管道.该属性在 `boot` 方法中设置. 此渲染目标是渲染器大小的一半. 您可以在多目标效果的后期效果管道中直接使用它. 但是,请注意,这些目标在所有外汇交易管道之间共享.
Type:

MULTI_PIPELINE :Phaser.Renderer.WebGL.Pipelines.MultiPipeline

Since:
  • 3.50.0
Default Value:
  • null
对多管道实例的常量样式引用. 这是默认的相位器3管道,由网络总帐渲染器用来管理 相机效果等等.该属性在 `boot` 方法中设置.
Type:

pipelines :Phaser.Structs.Map.<string, Phaser.Renderer.WebGL.WebGLPipeline>

Since:
  • 3.50.0
此映射在此管理器中存储所有管道实例. 这是用 `boot` 方法中的默认管道填充的.
Type:

postPipelineClasses :Phaser.Structs.Map.<string, Class>

Since:
  • 3.50.0
此映射存储此管理器中可用的所有后外汇管道类.
Type:

previous :Phaser.Renderer.WebGL.WebGLPipeline

Since:
  • 3.50.0
Default Value:
  • null
正在使用的上一个WebGLPipeline. 这是在调用 `clearPipeline` 时设置的,如果没有给定,则在 `rebindPipeline` 中恢复.
Type:

renderer :Phaser.Renderer.WebGL.WebGLRenderer

Since:
  • 3.50.0
对WebGL渲染器实例的引用.
Type:

UTILITY_PIPELINE :Phaser.Renderer.WebGL.Pipelines.UtilityPipeline

Since:
  • 3.50.0
Default Value:
  • null
公用管道实例的常量样式引用.
Type:

Methods

add(name, pipeline) → {Phaser.Renderer.WebGL.WebGLPipeline}

Since:
  • 3.50.0
向此管道管理器添加管道实例. 实例的名称在此管理器中必须是唯一的. 请确保将实例传递给此方法,而不是基类. 比如你应该这样传递: ```javascript this.add('yourName', new CustomPipeline());` ``` 而且**不是这样* *的: ```javascript this.add('yourName', CustomPipeline);` ``` 要添加一个**后管道* *,请参见 `addPostPipeline` .
Parameters:
Name Type Description
name string 管理器中管道的基于字符串的唯一键.
pipeline Phaser.Renderer.WebGL.WebGLPipeline 必须扩展 `WebGLPipeline` 的管道实例.
Returns:
传递的管道实例.
Type
Phaser.Renderer.WebGL.WebGLPipeline

addPostPipeline(name, pipeline) → {this}

Since:
  • 3.50.0
向此管道管理器添加发布管道. 请确保将基类传递给此方法,而不是实例. 比如你应该这样传递: ```javascript this.addPostPipeline('yourName', CustomPipeline);` ``` 而且**不是这样* *的: ```javascript this.addPostPipeline('yourName', new CustomPipeline());` ``` 若要添加常规管道,请参见 `add` 方法.
Parameters:
Name Type Description
name string 管理器中管道的基于字符串的唯一键.
pipeline function 必须扩展 `PostFXPipeline` 的管道类.
Returns:
该管道管理器.
Type
this

blendFrames(source1, source2, targetopt, strengthopt, clearAlphaopt) → {this}

Since:
  • 3.50.0
将 `source1` 和 `source2` 渲染目标绘制到 `target` 渲染目标 使用由 `strength` 参数控制的线性混合效果. 绘图本身由公用管线处理.
Parameters:
Name Type Attributes Default Description
source1 Phaser.Renderer.WebGL.RenderTarget 第一个源渲染目标.
source2 Phaser.Renderer.WebGL.RenderTarget 第二个源渲染目标.
target Phaser.Renderer.WebGL.RenderTarget <optional>
目标渲染目标.
strength number <optional>
1 混合物的强度.
clearAlpha boolean <optional>
true 对目标运行 `gl.clear` 时清除alpha通道?
Returns:
此管道管理器实例.
Type
this

blendFramesAdditive(source1, source2, targetopt, strengthopt, clearAlphaopt) → {this}

Since:
  • 3.50.0
将 `source1` 和 `source2` 渲染目标绘制到 `target` 渲染目标 使用由 `strength` 参数控制的添加混合效果. 绘图本身由公用管线处理.
Parameters:
Name Type Attributes Default Description
source1 Phaser.Renderer.WebGL.RenderTarget 第一个源渲染目标.
source2 Phaser.Renderer.WebGL.RenderTarget 第二个源渲染目标.
target Phaser.Renderer.WebGL.RenderTarget <optional>
目标渲染目标.
strength number <optional>
1 混合物的强度.
clearAlpha boolean <optional>
true 对目标运行 `gl.clear` 时清除alpha通道?
Returns:
此管道管理器实例.
Type
this

blitFrame(source, target, brightnessopt, clearopt, clearAlphaopt, eraseModeopt) → {this}

Since:
  • 3.50.0
将 `source` 渲染目标复制到 `target` 渲染目标. 与此副本的不同之处在于不会发生大小调整.如果 `source` 渲染目标大于 `target` ,则只有一部分与 `target` 维度被复制. 您可以选择设置副本的亮度因子.
Parameters:
Name Type Attributes Default Description
source Phaser.Renderer.WebGL.RenderTarget 源渲染目标.
target Phaser.Renderer.WebGL.RenderTarget 目标渲染目标.
brightness number <optional>
1 应用于帧副本的亮度值.
clear boolean <optional>
true 复制前清除目标?
clearAlpha boolean <optional>
true 对目标运行 `gl.clear` 时清除alpha通道?
eraseMode boolean <optional>
false 使用擦除混合模式从目标中擦除源?
Returns:
此管道管理器实例.
Type
this

boot(pipelineConfigopt)

Since:
  • 3.50.0
内部引导处理程序,在引导过程中由WebGLRenderer调用. 根据游戏配置添加所有默认管道,然后调用 其中每一个都使用了 `boot` 方法. 最后,设置默认管道.
Parameters:
Name Type Attributes Description
pipelineConfig Phaser.Types.Core.PipelineConfig <optional>
在游戏配置中设置的管道配置对象.

clear()

Since:
  • 3.50.0
刷新当前正在使用的管道,然后将其清除,同时清除 `WebGLRenderer` 中的当前着色器程序和顶点缓冲区. 然后将混合模式重置为正常. 在跳转到您自己的gl上下文处理程序之前调用它,然后在 你希望再次控制相位器.

clearFrame(target, clearAlphaopt) → {this}

Since:
  • 3.50.0
清除给定的渲染目标.
Parameters:
Name Type Attributes Default Description
target Phaser.Renderer.WebGL.RenderTarget 要清除的渲染目标.
clearAlpha boolean <optional>
true 对目标运行 `gl.clear` 时清除alpha通道?
Returns:
此管道管理器实例.
Type
this

copyFrame(source, targetopt, brightnessopt, clearopt, clearAlphaopt) → {this}

Since:
  • 3.50.0
将 `source` 渲染目标复制到 `target` 渲染目标. 您可以选择设置副本的亮度因子. 这个方法和 `draftframe` 的区别在于,这个方法 使用更快的拷贝着色器,其中只有亮度可以修改. 如果您需要颜色级别操作,请参见 `drawFrame` . 副本本身由实用程序管道处理.
Parameters:
Name Type Attributes Default Description
source Phaser.Renderer.WebGL.RenderTarget 源渲染目标.
target Phaser.Renderer.WebGL.RenderTarget <optional>
目标渲染目标.
brightness number <optional>
1 应用于帧副本的亮度值.
clear boolean <optional>
true 复制前清除目标?
clearAlpha boolean <optional>
true 对目标运行 `gl.clear` 时清除alpha通道?
Returns:
此管道管理器实例.
Type
this

copyFrameRect(source, target, x, y, width, height, clearopt, clearAlphaopt) → {this}

Since:
  • 3.50.0
绑定 `source` 渲染目标,然后将其一部分复制到 `target` 渲染目标. 这个方法非常快,因为它使用了 `gl.copyTexSubImage2D` 而没有 需要使用任何着色器.请记住坐标是以标准的WebGL格式给出的, 其中x和y指定截面的左下角,而不是左上角.另外 复制完全替换目标纹理的内容,不需要`混合`或`混合` 地点.
Parameters:
Name Type Attributes Default Description
source Phaser.Renderer.WebGL.RenderTarget 源渲染目标.
target Phaser.Renderer.WebGL.RenderTarget