版本: Unity 6 (6000.0)
语言英语
  • C#

RenderStateBlock

UnityEngine.Rendering 中的结构体

/

实现于:UnityEngine.CoreModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们会阅读用户提出的每项更改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

Unity 用于覆盖 GPU 渲染状态的一组值。

当您调用 ScriptableRenderContext.DrawRenderers 时,您可以使用它来覆盖部分或全部几何体的渲染状态。

注意:您必须设置 mask 以告知 Unity 要覆盖渲染状态的哪些部分。例如,要应用 blendState 中的值,mask 必须包含 RenderStateMask.Blend

using UnityEngine;
using UnityEngine.Rendering;

public class OverrideRenderStateExample { ScriptableRenderContext scriptableRenderContext;

// Placeholder data DrawingSettings exampleDrawingSettings; CullingResults exampleCullingResults = new CullingResults(); FilteringSettings exampleFilteringSettings = new FilteringSettings();

public void OverrideRenderState() { // Tell Unity how to override the render state when it draws the geometry. var stateBlock = new RenderStateBlock(RenderStateMask.Depth); stateBlock.depthState = new DepthState(true, CompareFunction.LessEqual);

// Schedule the drawing operation. scriptableRenderContext.DrawRenderers(exampleCullingResults, ref exampleDrawingSettings, ref exampleFilteringSettings, ref stateBlock);

// Perform all scheduled tasks, in the order that they were scheduled. scriptableRenderContext.Submit(); } }

其他资源:ScriptableRenderContext.DrawRenderers、RenderStateMask

属性

blendState指定新的混合状态。
depthState指定新的深度状态。
mask指定要覆盖 GPU 渲染状态的哪些部分。
rasterState指定新的光栅化状态。
stencilReference根据模板状态,要与之比较的值和/或要写入缓冲区的值。
stencilState指定新的模板状态。

构造函数

RenderStateBlock使用指定的遮罩创建一个新的渲染状态块。