ID3D11DeviceContext::OMSetBlendState 方法 (d3d11.h)

设置输出合并阶段的混合状态。

语法

void OMSetBlendState(
  [in, optional] ID3D11BlendState *pBlendState,
  [in, optional] const FLOAT [4]  BlendFactor,
  [in]           UINT             SampleMask
);

参数

[in, optional] pBlendState

类型: ID3D11BlendState*

指向混合状态接口的指针 (请参阅 ID3D11BlendState) 。 为默认混合状态传递 NULL 。 有关默认混合状态的详细信息,请参阅备注。

[in, optional] BlendFactor

类型: const FLOAT[4]

混合因子数组,每个 RGBA 分量各一个。 混合因子调节像素着色器、呈现目标或两者的值。 如果使用 D3D11_BLEND_BLEND_FACTORD3D11_BLEND_INV_BLEND_FACTOR创建了混合状态对象,则混合阶段将使用混合因子的非 NULL 数组。 如果未使用 D3D11_BLEND_BLEND_FACTORD3D11_BLEND_INV_BLEND_FACTOR创建混合状态对象,则混合阶段不使用混合因子的非 NULL 数组;运行时存储混合因子,稍后可以调用 ID3D11DeviceContext::OMGetBlendState 来检索混合因子。 如果传递 NULL,运行时将使用或存储等于 { 1, 1, 1, 1 } 的混合因子。

[in] SampleMask

类型: UINT

32 位样本覆盖率。 默认值为 0xffffffff。 请参阅备注。

返回值

备注

混合状态由 输出合并阶段 用于确定如何将两个 RGB 像素值和两个 alpha 值混合在一起。 两个 RGB 像素值和两个 alpha 值是像素着色器输出的 RGB 像素值和 alpha 值,以及输出呈现目标中已有的 RGB 像素值和 alpha 值。 混合选项控制混合阶段用于调节像素着色器、呈现目标或两者的值的数据源。 混合操作控制混合阶段如何以数学方式组合这些调节值。

若要创建混合状态接口,请调用 ID3D11Device::CreateBlendState

为混合状态接口传入 NULL 会向运行时指示要设置默认混合状态。 下表指示默认混合参数。

状态 默认值
AlphaToCoverageEnable FALSE
IndependentBlendEnable FALSE
RenderTarget[0]。BlendEnable FALSE
RenderTarget[0]。SrcBlend D3D11_BLEND_ONE
RenderTarget[0]。DestBlend D3D11_BLEND_ZERO
RenderTarget[0]。BlendOp D3D11_BLEND_OP_ADD
RenderTarget[0]。SrcBlendAlpha D3D11_BLEND_ONE
RenderTarget[0]。DestBlendAlpha D3D11_BLEND_ZERO
RenderTarget[0]。BlendOpAlpha D3D11_BLEND_OP_ADD
RenderTarget[0]。RenderTargetWriteMask D3D11_COLOR_WRITE_ENABLE_ALL
 

示例掩码确定在所有活动呈现器目标中更新的样本。 单个应用程序负责将示例掩码中的位映射到多重采样呈现目标中的样本。 始终应用示例掩码;它与是否启用多重采样无关,也不依赖于应用程序是否使用多重采样呈现目标。

方法将保存对传入的接口的引用。 这与 Direct3D 10 中的设备状态行为不同。

要求

要求
目标平台 Windows
标头 d3d11.h
Library D3D11.lib

另请参阅

ID3D11DeviceContext