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;
}
}
}

posted @   mc宇少  阅读(128)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示