当您使用 CommandBuffer.ClearRenderTarget 时,确定 Unity 清除哪些渲染目标的标志。
您可以使用按位或运算符组合标志。
using UnityEngine; using UnityEngine.Rendering;
// Attach this script to a Camera and select a Clear Mode. // When you enter Play mode, a command buffer clears the screen with different clear parameters. [RequireComponent(typeof(Camera))] public class MyClearScript : MonoBehaviour { public enum ClearMode { All, ColorStencil }
public ClearMode m_ClearMode;
void Start() { var camera = GetComponent<Camera>(); var buffer = new CommandBuffer();
switch (m_ClearMode) { case ClearMode.All: // Clear color, depth and stencil render targets. Stencil is cleared with value 0xF0. buffer.ClearRenderTarget(RTClearFlags.All, Color.red, 1.0f, 0xF0); break; case ClearMode.ColorStencil: // Clear only color and stencil render targets. Stencil is cleared with value 0xF0. buffer.ClearRenderTarget((RTClearFlags)((int)RTClearFlags.Color | (int)RTClearFlags.Stencil), Color.green, 1.0f, 0xF0); break; }
camera.AddCommandBuffer(CameraEvent.AfterSkybox, buffer); } }
无 | 不清除任何渲染目标。 |
颜色 | 清除所有颜色渲染目标。 |
深度 | 清除深度缓冲区。 |
模板 | 清除模板缓冲区。 |
全部 | 清除所有颜色渲染目标、深度缓冲区和模板缓冲区。这等效于组合 RTClearFlags.Color、RTClearFlags.Depth 和 RTClearFlags.Stencil。 |
深度模板 | 清除深度和模板缓冲区。这等效于组合 RTClearFlags.Depth 和 RTClearFlags.Stencil。 |
颜色深度 | 清除颜色和深度缓冲区。这等效于组合 RTClearFlags.Color 和 RTClearFlags.Depth。 |
颜色模板 | 清除颜色和模板缓冲区。这等效于组合 RTClearFlags.Color 和 RTClearFlags.Stencil。 |