commanderbuffer控制模型渲染时机

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
[ExecuteInEditMode]

public class RenderAfterPostEffect : MonoBehaviour
{
private CommandBuffer commandBuffer = null;
private Renderer targetRenderer = null;

void OnEnable()
{
targetRenderer = this.GetComponentInChildren<Renderer>();
if (targetRenderer)
{
commandBuffer = new CommandBuffer();
commandBuffer.DrawRenderer(targetRenderer, targetRenderer.sharedMaterial);
//直接加入相机的CommandBuffer事件队列中,
Camera.main.AddCommandBuffer(CameraEvent.AfterImageEffects, commandBuffer);//在AfterImageEffects后执行DrawRenderer
targetRenderer.enabled = false;//去掉render组件,不渲染这个物体,在指定时机渲染
}
}

void OnDisable()
{
if (targetRenderer)
{
//移除事件,清理资源
Camera.main.RemoveCommandBuffer(CameraEvent.AfterImageEffects, commandBuffer);
commandBuffer.Clear();
targetRenderer.enabled = true;
}
}
}

原文地址:https://www.cnblogs.com/mcyushao/p/15080076.html