首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Direct3D静态链接

Direct3D静态链接
EN

Stack Overflow用户
提问于 2014-11-28 02:11:21
回答 1查看 284关注 0票数 0

是否有任何方法静态链接Direct3D,使程序不依赖于任何D3D DLL?使用Direct3D 9和更高版本似乎是不可能的(尽管我希望被证明是错误的),但是我找不到关于旧版本的任何信息。我正在制作一个简单的小游戏,我真的不想要一个强制安装程序,但我想使用Direct3D。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-08 20:53:57

不,从来没有一个时候你可以静态链接任何版本的Direct3D到你的应用程序。同样适用于OpenGL。

如果您要问的是“我如何创建一个不需要安装程序的Direct3D应用程序?”,那么只要您放弃尝试支持古老的、不相关的Windows版本,这实际上是很容易实现的。

最简单的事情是目标DirectX 11.0。您的系统需求会读到:

Windows8.1、Windows8.0、Windows7、Windows服务包2( KB 971644 )

请参阅面向游戏开发人员的Direct3D 11部署

  • 使用Direct3D 11.0API
  • 使用所有静态链接的DirectXMath、DirectX工具包DirectXTex和/或DirectXMesh
  • 如果需要,您可以使用效果11,因为它也是静态链接的。
  • 避免使用D3DX9、D3DX10和D3DX11
  • 使用XInput 9.1.0;避免使用XInput 1.3 (在8.0+上可以使用XInput 1.4)
  • 避免使用XAudio2.7 (在Windows 8.0+上可以使用XAudio 2.8)
  • 避免使用XACT
  • 如果使用VS 2010或更高版本,则可以使用简单的副本将所需的VCREDIST文件与应用程序并行部署。
  • 如果使用Windows8.xSDK版本的D3DCompile,则可以使用简单的副本将其与应用程序并行部署。

音频是这里最大的挑战,因为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组件。

  • 您需要使用Direct3D 9和DirectSound8
  • 避免使用D3DX9,这样所有HLSL着色器都必须离线预构建,并且不能使用效果(FX9)系统或D3DXMath。
  • 如果您使用的是VS 2012/VS 2013,可以使用*_xp平台工具集针对Windows,但请记住,它使用的是Windows7.1A SDK,而不是Windows8.xSDK,因此它对DirectX开发有一定的影响。
  • Windows8.0或更高版本上的Direct3D 9调试也是一个巨大的痛苦,因为它没有开发人员运行时可用。

所有这些都假设您使用的是C++。使用.NET是不现实的,因为.NET的部署过程相当复杂。理论上,如果您需要Windows或更高版本,您可以使用.NET 2.0,但它可能需要在某些版本的操作系统上启用Vista+功能,而且您不能指望Windows上有任何版本的.NET。Windows4.0默认为.NET 8.0+,但默认情况下对.NET 3.5及更早版本的支持是关闭的。但是,所有来自C#的C#的使用都需要额外的程序集,这些程序集本身很可能依赖于遗留的DirectSetup部署。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27180998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档