首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在D3D_FEATURE_LEVEL_10_0中使用D3D11_BLEND_DESC的IndependentBlendEnable安全吗?

在D3D_FEATURE_LEVEL_10_0中使用D3D11_BLEND_DESC的IndependentBlendEnable安全吗?
EN

Stack Overflow用户
提问于 2014-05-12 21:52:22
回答 1查看 852关注 0票数 1

我正在使用DirectX 11API开发一个延迟的渲染器,并且需要在渲染目标之间改变混合状态。DX10.0只允许一组混合操作:

代码语言:javascript
运行
复制
typedef struct D3D10_BLEND_DESC {
  BOOL           AlphaToCoverageEnable;
  BOOL           BlendEnable[8];
  D3D10_BLEND    SrcBlend;
  D3D10_BLEND    DestBlend;
  D3D10_BLEND_OP BlendOp;
  D3D10_BLEND    SrcBlendAlpha;
  D3D10_BLEND    DestBlendAlpha;
  D3D10_BLEND_OP BlendOpAlpha;
  UINT8          RenderTargetWriteMask[8];
} D3D10_BLEND_DESC;

而DX11应用编程接口可以灵活地指定8。

代码语言:javascript
运行
复制
typedef struct D3D11_BLEND_DESC {
  BOOL                           AlphaToCoverageEnable;
  BOOL                           IndependentBlendEnable;
  D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[8];
} D3D11_BLEND_DESC;

typedef struct D3D11_RENDER_TARGET_BLEND_DESC {
  BOOL           BlendEnable;
  D3D11_BLEND    SrcBlend;
  D3D11_BLEND    DestBlend;
  D3D11_BLEND_OP BlendOp;
  D3D11_BLEND    SrcBlendAlpha;
  D3D11_BLEND    DestBlendAlpha;
  D3D11_BLEND_OP BlendOpAlpha;
  UINT8          RenderTargetWriteMask;
} D3D11_RENDER_TARGET_BLEND_DESC;
EN

回答 1

Stack Overflow用户

发布于 2014-05-13 17:20:06

它在DX10.0硬件上将失败。由于我的测试在RenderTarget[]数组中没有变化,DX似乎检测到IndependentBlendEnable的值没有区别,并忽略了它。如果给出一个警告是有帮助的,但没有输出,这让我怀疑独立混合是在软件而不是硬件中解决的。无论如何,当改变RenderTarget[]数据时,下面的错误弹出,一切都变得有意义了,尽管在这种情况下不太方便。

代码语言:javascript
运行
复制
D3D11 ERROR: ID3D11Device::CreateBlendState: SrcBlend[ 4 ] does not equal SrcBlend[ 0 ]
and D3D10.1 hardware is not supported. When GetFeatureLevel returns
D3D_FEATURE_LEVEL_10_0 or less, any enabled render target blending must use the same
blending configuration. [ STATE_CREATION ERROR #212: CREATEBLENDSTATE_INVALIDSRCBLEND]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23610925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档