您可以在 RenderPipeline.Render 的开始处调用自定义代码的委托。
当 Unity 在 RenderPipeline.Render 的开始处调用 RenderPipeline.BeginContextRendering 时,它执行此委托调用列表中的方法。
在 Universal Render Pipeline (URP) 和 High Definition Render Pipeline (HDRP) 中,Unity 自动调用 RenderPipeline.BeginContextRendering。如果您正在编写自定义可编程渲染管道,则必须自己调用此方法。此功能与内置渲染管道不兼容。
此委托与 RenderPipelineManager.beginFrameRendering 的工作方式相同,但此版本不会导致堆分配。
以下代码示例演示如何向此委托的调用列表中添加方法,以及稍后将其移除。
using UnityEngine; using UnityEngine.Rendering; using System.Collections.Generic;
public class ExampleClass : MonoBehaviour { void Start() { RenderPipelineManager.beginContextRendering += OnBeginContextRendering; }
void OnBeginContextRendering(ScriptableRenderContext context, List<Camera> cameras) { // Put the code that you want to execute at the start of RenderPipeline.Render here }
void OnDestroy() { RenderPipelineManager.beginContextRendering -= OnBeginContextRendering; } }