版本:Unity 6 (6000.0)
语言English
  • C#

RenderPipeline.EndContextRendering

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

protected static void EndContextRendering(Rendering.ScriptableRenderContext context, List<Camera> cameras);

使用此方法调用的委托来实现 RenderPipeline.Render 结束时的功能。

在通用渲染管线 (URP) 和高清渲染管线 (HDRP) 中,Unity 会在 RenderPipeline.Render 结束时自动调用此方法。如果您正在编写自定义的可脚本化渲染管线,则可以在相同位置自己调用此方法。此功能与内置渲染管线不兼容。

此方法调用的委托的工作方式彼此相同,但 RenderPipelineManager.endFrameRendering 会导致堆分配,而 RenderPipelineManager.endContextRendering 不会。因此,您应该使用 RenderPipelineManager.endContextRendering 来避免不必要的堆分配和垃圾回收。

此方法替换了 RenderPipeline.EndFrameRendering。它执行该方法执行的所有操作,此外还调用 RenderPipelineManager.endContextRendering 委托。如果您正在编写自定义的可脚本化渲染管线,请使用此方法代替 RenderPipeline.EndFrameRendering

以下代码示例演示了如果您正在创建自定义可脚本化渲染管线,则在哪里调用此方法

using UnityEngine;
using UnityEngine.Rendering;
using System.Collections.Generic;

public class ExampleRenderPipelineInstance : RenderPipeline { public ExampleRenderPipelineInstance() { }

override protected void Render(ScriptableRenderContext context, List<Camera> cameras) { // Put the rest of your Render method code here

// Call the RenderPipelineManager.endContextRendering and RenderPipelineManager.endFrameRendering delegates EndContextRendering(context, cameras); }

// Older version of the Render function that can generate garbage, needed for backwards compatibility override protected void Render(ScriptableRenderContext context, Camera[] cameras) { } }