从directx 9迁移到directx 10

时间:2018-04-30 04:25:14

标签: c++ directx

我有一个使用DX9的软件,但是在特定的Windows 10版本上有fps掉落的问题太多了,所以我尝试使用d3dx10 lib编译它并收到以下错误:

enter image description here

我不知道这样做是否容易,但是有没有办法在directx10上使用新功能重新实现这些功能?提前致谢

1 个答案:

答案 0 :(得分:1)

不幸的是,它将成为一个在单个端口上提前14年以上的项目,但是有很多资源可供帮助。

首先,有一个从Direct3D 9 to Direct3D 10转移的官方指南。这些天你实际上不应该移植到Direct3D 10,而是移植到具有相同功能但具有更广泛硬件支持,更多实用程序库和更多社区支持的Direct3D 11。正如官方指南Migrating to Direct3D 11所述,从Direct3D 10迁移到Direct3D 11是一个非常简单的过程。您可以通过一次跟踪两个指南,将代码从Direct3D 9逻辑移动到Direct3D 10,然后将Direct3D 10移动到Direct3D 11。

其次,D3DXD3DX10D3DX11都已弃用,旧版DirectX SDK也是如此。因此,您应该花一些时间阅读MSDNthis blog postLiving without D3DX,以完全了解此处所做的更改。当您迁移到Direct3D 11时,您应该尽可能多地删除旧版DirectX SDK上的依赖项。

第三,从缺少的导出中,您使用着色器的FX系统。有一个Effects for Direct3D 11,但它不属于D3DX11GitHub上提供了最新的运行时。请注意,fx_4_0fx_4_1fx_5_0配置文件的编译器支持已弃用非常重要,因此您应该考虑远离使用FX直接管理着色器和状态组合。

  

有关已停用的旧版DirectX SDK的更多资源:DirectX SDK Tools CatalogDirectX SDK Samples CatalogDirectX SDKs of a certain ageThe Zombie DirectX SDK

     

学习Direct3D11的更多资源:Getting Started with Direct3D 11DirectX Tool Kit for DX11

注意:您还应考虑迁移到VS 2017,而不是坚持使用12年以上的工具集。请务必查看community editionthis porting guide