RenderPipeline.BeginContextRendering
Declaration
protected static void BeginContextRendering(Rendering.ScriptableRenderContext context, List<Camera> cameras);Параметры
| Параметр | Описание |
|---|---|
| контекст | Контекст, используемый для отображения камер. |
| камеры | Список камер, находящихся в процессе рендеринга. |
Описание
Вызов делегатов RenderPipelineManager.beginContextRendering и RenderPipelineManager.beginFrameRendering.
Используйте делегаты, которые этот метод вызывает для реализации функции в начале RenderPipeline.Render.
В Universal Render Pipeline (URP) и High Definition Render Pipeline (HDRP) Unity автоматически вызывает этот метод в начале RenderPipeline.Render. Если вы пишете пользовательский Scriptable Render Pipeline, вы можете вызвать этот метод сами в том же месте. Эта функция не совместима с Built-in Render Pipeline.
Делегаты, которые вызывает этот метод, работают так же, как и другие, за исключением того, что RenderPipelineManager.beginFrameRendering вызывают выделение кучи, а RenderPipelineManager.beginContextRendering не делают этого. Поэтому вы должны использовать RenderPipelineManager.beginContextRendering, чтобы избежать ненужного выделения кучи и сбора мусора.
Этот метод заменяет RenderPipeline.BeginFrameRendering. Он выполняет все, что делает этот метод, а также вызывает делегата RenderPipelineManager.beginContextRendering. Если вы пишете пользовательский Scriptable Render Pipeline, используйте этот метод вместо RenderPipeline.BeginFrameRendering.
В следующем примере кода показано, где вызывать этот метод, если вы создаете пользовательский 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) { // Call the RenderPipelineManager.beginContextRendering and RenderPipelineManager.beginFrameRendering delegates BeginContextRendering(context, cameras);
// Put the rest of your Render method code here }
// Older version of the Render function that can generate garbage, needed for backwards compatibility override protected void Render(ScriptableRenderContext context, Camera[] cameras) { } }
Дополнительные ресурсы: RenderPipelineManager.beginContextRendering, RenderPipelineManager.beginFrameRendering, RenderPipeline.EndContextRendering, Unity Руководство: Scriptable Render Pipeline.