我提交了一个问题,实际上是一个问题中的一堆问题,所以我根据要求将它们分成各自的问题。
关于direct3D的一个一般性问题是,如果我用HLSL5.0着色器完全用d3d11编写一个应用程序,这些着色器是否仍然只兼容d3d10或d3d9系统,只是图形效果和d3d11的效率较低?如果是这样的话,它的效率会降低多少?如果不是,除了使用d3d9、d3d10和d3d11之外,我真的需要为完全相同的程序制作2到3个不同的版本吗?
发布于 2012-04-18 06:15:09
它在一定程度上是向后兼容的。然而,有几件事需要牢记:
在DX10.0+级的硬件上可以使用again...
总而言之,如果您的目标平台是DX10.0+级硬件,那么使用DX11在某种程度上是有意义的(因为除了硬件镶嵌之外,差异是可以容忍的,并且/或者对于缺失的功能有解决方案)。如果你想支持DX9硬件,我建议你坚持使用DX9软件开发工具包,因为这将允许你在XP上运行你的应用程序。
发布于 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).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)
发布于 2012-04-17 23:28:08
不,它不是向后兼容的。如果你想在更多的平台上运行,支持directX11的显卡肯定会支持directx9。所以要么用DX9开发一次,要么用DX11和DX9同时开发。
https://stackoverflow.com/questions/10193774
复制相似问题