我提交了一个实际上是一堆问题的问题,所以我按照要求将它们分成了各自不同的问题。
只是关于direct3D的一般性问题,如果我要用dlsl 5.0着色器完全在d3d11中编写一个应用程序,它们是否仍然只与d3d10或d3d9系统兼容,只是图形效果较差且d3d11的效率较低?如果是这样,效率会降低多少?如果没有,除了使用d3d9,d3d10和d3d11之外,我是否真的需要制作完全相同程序的2或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).aspx和http://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)
在某种程度上向后兼容。但是,要记住的事情很少:
总而言之,如果您的目标平台是DX10.0 +级硬件,那么使用DX11会有所帮助(因为除了HW tesselation之外,差异是可以容忍的和/或缺少功能的解决方法)。如果你想支持DX9硬件,我建议你坚持使用DX9 SDK,这样你就可以在XP上运行你的应用程序了。
答案 2 :(得分:1)
不,它不向后兼容。如果你想在更多平台上运行,支持DirectX11的显卡肯定会支持directx9。因此要么在DX9中开发一次,要么在DX11和DX9中开发一次。