我有一个使用DX9的软件,但是在特定的Windows 10版本上有fps掉落的问题太多了,所以我尝试使用d3dx10 lib编译它并收到以下错误:
我不知道这样做是否容易,但是有没有办法在directx10上使用新功能重新实现这些功能?提前致谢
答案 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。
其次,D3DX
,D3DX10
和D3DX11
都已弃用,旧版DirectX SDK也是如此。因此,您应该花一些时间阅读MSDN,this blog post和Living without D3DX,以完全了解此处所做的更改。当您迁移到Direct3D 11时,您应该尽可能多地删除旧版DirectX SDK上的依赖项。
第三,从缺少的导出中,您使用着色器的FX
系统。有一个Effects for Direct3D 11,但它不属于D3DX11
。 GitHub上提供了最新的运行时。请注意,fx_4_0
,fx_4_1
和fx_5_0
配置文件的编译器支持已弃用非常重要,因此您应该考虑远离使用FX
直接管理着色器和状态组合。
有关已停用的旧版DirectX SDK的更多资源:DirectX SDK Tools Catalog,DirectX SDK Samples Catalog,DirectX SDKs of a certain age和The Zombie DirectX SDK
学习Direct3D11的更多资源:Getting Started with Direct3D 11和DirectX Tool Kit for DX11
注意:您还应考虑迁移到VS 2017,而不是坚持使用12年以上的工具集。请务必查看community edition和this porting guide。