我有使用DX9的软件,但是在特定的Windows 10版本上fps下降问题太多,因此我尝试使用d3dx10 lib进行编译,并收到以下错误:

c++ - 从DirectX 9迁移到DirectX 10-LMLPHP

我不知道这样简单吗,但是有什么方法可以使用Directx10上的新功能来重新实现这些功能?提前致谢

最佳答案

不幸的是,这将是一个相当大的项目,可以在单个港口中提前14年以上,但是有很多资源可以提供帮助。

首先,有一个从Direct3D 9 to Direct3D 10迁移的官方指南。如今,您实际上不应该移植到Direct3D 10,而应该移植到Direct3D 11,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,但它不是D3DX11的一部分。最新的运行时在GitHub上可用。重要的是要注意,编译器对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

关于c++ - 从DirectX 9迁移到DirectX 10,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50093952/

10-09 01:18