当前位置:Gxlcms > 数据库问题 > unity CommandBuffer学习

unity CommandBuffer学习

时间:2021-07-01 10:21:17 帮助过:148人阅读

UnityEngine; using UnityEngine.Rendering; using System.Collections; using System.Collections.Generic; public class Test : MonoBehaviour { public Mesh testMesh; public Material testMaterial; Dictionary<Camera, CommandBuffer> m_Cameras = new Dictionary<Camera, CommandBuffer>(); void OnDisable() { foreach (var cam in m_Cameras) { if (cam.Key) { cam.Key.RemoveCommandBuffer(CameraEvent.BeforeLighting, cam.Value); } } } void LateUpdate() { var act = gameObject.activeInHierarchy && enabled; if (!act) { OnDisable(); return; } var cam = Camera.current; if (!cam) return; CommandBuffer buf = null; if (m_Cameras.ContainsKey(cam)) { buf = m_Cameras[cam]; buf.Clear(); } else { buf = new CommandBuffer(); buf.name = "Test Command Buffer"; m_Cameras[cam] = buf; cam.AddCommandBuffer(CameraEvent.AfterFinalPass, buf); } buf.DrawMesh(testMesh, Matrix4x4.TRS(Camera.main.transform.position + Camera.main.transform.forward * 4f, Quaternion.identity, Vector3.one), testMaterial); } } View Code

 

脚本很简单,在finalpass之后绘制一个mesh

技术分享

 

 

 

CommandBuffer支持延迟渲染和正向渲染,但需要注意如果在正向渲染中用了CameraEvent.AfterGBuffer之类的延迟渲染事件,会不起作用。

Unity的FrameDebug可以对CommandBuffer进行调试

 

技术分享

 

 

有空再完善

unity CommandBuffer学习

标签:ons   简单   ring   splay   sys   ndis   style   foreach   indicator   

人气教程排行