是d3d 11向后兼容d3d10和d3d9?

时间:2012-04-17 15:03:03

标签: c++ directx directx-11

我提交了一个实际上是一堆问题的问题,所以我按照要求将它们分成了各自不同的问题。

只是关于direct3D的一般性问题,如果我要用dlsl 5.0着色器完全在d3d11中编写一个应用程序,它们是否仍然只与d3d10或d3d9系统兼容,只是图形效果较差且d3d11的效率较低?如果是这样,效率会降低多少?如果没有,除了使用d3d9,d3d10和d3d11之外,我是否真的需要制作完全相同程序的2或3个不同版本?

3 个答案:

答案 0 :(得分:2)

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

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

但这并没有真正让你受益匪浅,因为你需要传入一个你支持的功能级别列表(或者暗示一个列表的NULL),并且该函数有一个告诉你你得到了什么功能级别的功能。因此,只有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)

答案 1 :(得分:2)

在某种程度上向后兼容。但是,要记住的事情很少:

  • DX11只能安装在Vista +上,这可以消除因为宗教原因仍然坐在XP上的人(我个人认为这很愚蠢,但这只是你必须要注意的事实)
  • DX11的杀手级功能(硬件细分)仅适用于符合DX11标准的硬件。相信我 - 由于它给你带来了各种各样的可能性,你将很难避免使用它。这可以通过使用几何着色器进行一定程度的补偿,但是......请参阅下一点
  • 几何着色器仅适用于DX10.0级硬件(或更好)。所以DX9级别的硬件已经超出了......再次......
  • 计算着色器在DX10.0 +级硬件上有些可用(尽管非常有限),但对于早期硬件完全不可用。

总而言之,如果您的目标平台是DX10.0 +级硬件,那么使用DX11会有所帮助(因为除了HW tesselation之外,差异是可以容忍的和/或缺少功能的解决方法)。如果你想支持DX9硬件,我建议你坚持使用DX9 SDK,这样你就可以在XP上运行你的应用程序了。

答案 2 :(得分:1)

不,它不向后兼容。如果你想在更多平台上运行,支持DirectX11的显卡肯定会支持directx9。因此要么在DX9中开发一次,要么在DX11和DX9中开发一次。