在将c++应用程序从Directx9移植到Directx10之前的重要阅读

Important reads before porting c++ application from Directx9 to Directx10

本文关键字:Directx10 应用程序 c++ Directx9 在将      更新时间:2023-10-16

我即将开始对我们的软件进行大规模的重构。目前,渲染组件仍然基于DX9。新版本将使用DX10。

在我开始之前,有关于将DX9移植到DX10的任何重要且编写良好的指南或概述吗?我找到了一些次要的信息,但找不到任何写得好的帖子、指南或概述。我想防止自己犯"经典"错误,我可以通过在移植前阅读来避免这些错误。

我的目的是阅读"通用"移植指南以及更具体的示例。该软件既渲染网格,也渲染体积,所以这些主题的信息非常值得赞赏。其他关键字包括(但不完全是):缓冲区、内存管理和多gpu。

由于似乎没有人有一个明确的列表,我将开始收集我的发现在一个单独的答案。据我所知,网上关于这个主题的信息非常有限。

  • Direct3D 10个常见问题
  • Direct3D 9到Direct3D 10注意事项(Direct3D 10) Direct3D 9和Direct3D 10之间关键差异的基本轮廓。下面的大纲提供了一些见解,以帮助具有Direct3D 9经验的开发人员探索和与Direct3D 10相关。
  • 固定功能EMU示例显示如何在Direct3D 10环境中模拟Direct3D 9固定功能管道的某些方面。
  • Windows to Reality:在你的游戏中充分利用Direct3D 10图形虽然它的标题中有"游戏",但演示的内容却没有。在演讲中,他们研究了常见的性能和架构问题,以及我们在将高端D3D9引擎迁移到D3D10时遇到的内容开发和其他问题。此外,它们还有一个特定的"移植提示"部分。
  • 在这次演讲中,他们讨论了各种性能考虑因素,并涵盖了所有供应商通用的Direct3D 10和10.1性能编程的各个方面。此外,它们还涵盖了多种GPU配置的性能考虑。在这个演示中,他们讨论了D3D9和D3D10之间的各种差异。虽然内容更多是基于游戏,但这些信息可以用于任何类型的DX编程。

缓冲区差异

  • 顶点缓冲区差异DX9/DX10

最大的区别是没有支持部分功能的卡。卡支持Direct3D 10或不支持。如果你想让你的应用程序在旧硬件或XP上运行,那么它需要是双模DirectX 9或10。如果它只需要在Vista或更高版本的支持显卡上运行,那么它只能是10。

AFAICT, MSDN没有给出差异指南。他们将Direct3D 10视为与其他API并行的新API。在这里看到的。