Unity 6.3
0 онлайн 94 гостей 3 в системе
Вход

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.