首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3d 11向后兼容d3d10和d3d9吗?

d3d 11向后兼容d3d10和d3d9吗?
EN

Stack Overflow用户
提问于 2012-04-17 23:03:03
回答 3查看 2.1K关注 0票数 2

我提交了一个问题,实际上是一个问题中的一堆问题,所以我根据要求将它们分成各自的问题。

关于direct3D的一个一般性问题是,如果我用HLSL5.0着色器完全用d3d11编写一个应用程序,这些着色器是否仍然只兼容d3d10或d3d9系统,只是图形效果和d3d11的效率较低?如果是这样的话,它的效率会降低多少?如果不是,除了使用d3d9、d3d10和d3d11之外,我真的需要为完全相同的程序制作2到3个不同的版本吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-18 06:15:09

它在一定程度上是向后兼容的。然而,有几件事需要牢记:

  • DX11只能安装在Vista+上,这消除了那些仍然因为宗教原因而坐在XP上的人(我个人认为这很愚蠢,但这只是一个事实,你必须意识到)
  • DX11的杀手级功能(硬件镶嵌)只能在兼容DX11的硬件上使用。相信我-你真的很难不使用它,因为它给了你很大的可能性。这可以通过使用几何着色器进行某种程度上的补偿,但是...请参见下一点
  • 几何体着色器仅在DX10.0级硬件(或更好)上可用。所以DX9级硬件不在方程式之外...

在DX10.0+级的硬件上可以使用again...

  • Compute着色器,但在早期的硬件上完全不可用。

总而言之,如果您的目标平台是DX10.0+级硬件,那么使用DX11在某种程度上是有意义的(因为除了硬件镶嵌之外,差异是可以容忍的,并且/或者对于缺失的功能有解决方案)。如果你想支持DX9硬件,我建议你坚持使用DX9软件开发工具包,因为这将允许你在XP上运行你的应用程序。

票数 3
EN

Stack Overflow用户

发布于 2012-04-17 23:43:08

我不相信之前的评论是完全准确的。

您可能需要在目标计算机上安装DX11运行时,但是您应该能够在任何与DX9+硬件兼容的卡上创建D3D11Device。

但这并不能给你带来多大好处,因为你需要传入一个你支持的特性级别列表(或者NULL表示一个列表),并且这个函数有一个out parm告诉你你得到了什么特性级别。因此,仅DX9卡将返回D3D_FEATURE_LEVEL_9_1 (或9_2/9_3)。

反过来,功能级别可以让您了解哪些d3d11块可供您使用,以及它的行为方式( http://msdn.microsoft.com/en-us/library/windows/desktop/ff476150(v=vs.85).aspxhttp://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx

从这些图表中可以得到的快速结论是,DX11可能适用于涵盖DX10和DX11设备。如果你想/需要这些特性,DX9 /视/而定也是可以的。

计算着色器主要用于DX10硬件(http://msdn.microsoft.com/en-us/library/windows/desktop/ff476873(v=vs.85).aspx)

票数 2
EN

Stack Overflow用户

发布于 2012-04-17 23:28:08

不,它不是向后兼容的。如果你想在更多的平台上运行,支持directX11的显卡肯定会支持directx9。所以要么用DX9开发一次,要么用DX11和DX9同时开发。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10193774

复制
相关文章

相似问题

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