是否有任何方法静态链接Direct3D,使程序不依赖于任何D3D DLL?使用Direct3D 9和更高版本似乎是不可能的(尽管我希望被证明是错误的),但是我找不到关于旧版本的任何信息。我正在制作一个简单的小游戏,我真的不想要一个强制安装程序,但我想使用Direct3D。
发布于 2014-12-08 20:53:57
不,从来没有一个时候你可以静态链接任何版本的Direct3D到你的应用程序。同样适用于OpenGL。
如果您要问的是“我如何创建一个不需要安装程序的Direct3D应用程序?”,那么只要您放弃尝试支持古老的、不相关的Windows版本,这实际上是很容易实现的。
最简单的事情是目标DirectX 11.0。您的系统需求会读到:
Windows8.1、Windows8.0、Windows7、Windows服务包2( KB 971644 )
请参阅面向游戏开发人员的Direct3D 11部署
音频是这里最大的挑战,因为XAudio 2.8只在Windows8.0或更高版本上运行,而XAudio 2.7需要部署DirectSetup redist。大多数音频中间件解决方案直接在Windows Vista+上使用WASAPI,因此这些都是合理的选择。您可以使用遗留的DirectSound8,并且它的头至少在VS 2012/VS 2013附带的Windows8.xSDK中。
如果您需要Windows支持,那么需要Windows 3作为最低操作系统。这将包括作为操作系统一部分的DirectX 9.0c和WIC组件。
*_xp平台工具集针对Windows,但请记住,它使用的是Windows7.1A SDK,而不是Windows8.xSDK,因此它对DirectX开发有一定的影响。所有这些都假设您使用的是C++。使用.NET是不现实的,因为.NET的部署过程相当复杂。理论上,如果您需要Windows或更高版本,您可以使用.NET 2.0,但它可能需要在某些版本的操作系统上启用Vista+功能,而且您不能指望Windows上有任何版本的.NET。Windows4.0默认为.NET 8.0+,但默认情况下对.NET 3.5及更早版本的支持是关闭的。但是,所有来自C#的C#的使用都需要额外的程序集,这些程序集本身很可能依赖于遗留的DirectSetup部署。
https://stackoverflow.com/questions/27180998
复制相似问题