DirectX11 创建混合状态

创建混合状态

1. 如何在DirectX11中创建混合状态?

我们已经讨论了混合运算符和混合系数,但是还没有说该如何在Direct3D中使用些值。这些混合参数要通过ID3D11BlendState接口来控制。
我们可以通过填充一个D3D11_BLEND_DESC结构体并调用ID3D11Device::CreateBlendState方法来创建该接口:

HRESULT ID3D11Device::CreateBlendState(
    const D3D11_BLEND_DESC *pBlendStateDesc,ID3D10BlendState **ppBlendState);

1.pBlendStateDesc:指向D3D11_BLEND_DESC结构体的指针,该结构体用于描述所要创建的混合状态。

2.ppBlendState:返回创建后的混合状态接口。

2. 混合状态描述结构体D3D11_BLEND_DESC如何填充?

D3D11_BLEND_DESC结构体的定义如下:

typedef struct D3D11_BLEND_DESC {
    BOOL AlphaToCoverageEnable; // 默认值:False
    IndependentBlendEnable       // 默认值:False
    D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[8];
} D3D11_BLEND_DESC;

1.AlphaToCoverageEnable:当设为true时,表示启用alpha-to-coverage功能。它是一种多重采样技术,在渲染植物的叶子或铁丝网纹理时非常有用。当设为false时,表示禁用 alpha-to-coverage功能。使用alpha-to-coverage需要开启多重采样(即,后台和深度缓冲创建时需要开启多重采样)。在第11章有一个使用alpha-to-coverage的示例。

2.IndependentBlendEnable:Direct3D 11支持同时绘制到8个渲染目标。当这个标志设置为true时,表示可以在不同的渲染目标上进行不同的混合处理(不同的混合因子、混合操作,混合开启/关闭等)。如果设置为false,则表示所有渲染目标都使用D3D11_BLEND_DESC::RenderTarget数组中第一个元素的混合状态,多重渲染目标用于高级的算法,目前为止,我们一次只使用一个渲染目标。

3.RenderTarget:包含8个D3D11_RENDER_TARGET_BLEND_DESC元素的数组,第i个元素描述了第i个多重渲染目标的混合方式。如果IndependentBlendEnable设置为false,则所有的渲染目标都使用RenderTarget[0]进行混合。

3. 渲染目标混合描述D3D11_RENDER_TARGET_BLEND_DESC如何创建?

这个描述填写我们上一节介绍过的混合方程。D3D11_RENDER_TARGET_BL

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值