RenderPipeline.EndContextRendering
Declaration
protected static void EndContextRendering(Rendering.ScriptableRenderContext context, List<Camera> cameras);Параметры
| Параметр | Описание |
|---|---|
| контекст | Контекст, используемый для отображения камер. |
| камеры | Список камер, находящихся в процессе рендеринга. |
Описание
Вызов делегатов RenderPipelineManager.endContextRendering и RenderPipelineManager.endFrameRendering.
Используйте делегаты, которые этот метод вызывает для реализации функции в конце RenderPipeline.Render.
В Universal Render Pipeline (URP) и High Definition Render Pipeline (HDRP) Unity автоматически вызывает этот метод в конце RenderPipeline.Render. Если вы пишете пользовательский Scriptable Render Pipeline, вы можете вызвать этот метод сами в том же месте. Эта функция не совместима с Built-in Render Pipeline.
Делегаты, которые вызывает этот метод, работают так же, как и другие, за исключением того, что RenderPipelineManager.endFrameRendering вызывают выделение кучи, а RenderPipelineManager.endContextRendering не вызывают. Поэтому вы должны использовать RenderPipelineManager.endContextRendering, чтобы избежать ненужного выделения кучи и сбора мусора.
Этот метод заменяет RenderPipeline.EndFrameRendering. Он выполняет все, что делает этот метод, и кроме того вызывает делегата RenderPipelineManager.endContextRendering. Если вы пишете пользовательский Scriptable Render Pipeline, используйте этот метод вместо RenderPipeline.EndFrameRendering.
В следующем примере кода показано, где вызывать этот метод, если вы создаете пользовательский Scriptable Render Pipeline:
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) { } }
Дополнительные ресурсы: RenderPipelineManager.endContextRendering, RenderPipelineManager.endFrameRendering, RenderPipeline.BeginContextRendering, RenderPipelineManager.beginContextRendering, RenderPipelineManager.beginFrameRendering, Unity Руководство: Scriptable Render Pipeline.