Windows 8仍然支持DirectX 9吗?


9

Windows 8是否支持DirectX 9?因为我正在浏览一些用C ++和DirectX 9编写的Windows 8样例。不是那样,就像我知道的那样(请看这里http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2)。例如,使用COM简化DirectX:

ComPtr<ID3D11Device1> dev;
ComPtr<ID3D11DeviceContext1> devcon;

这很奇怪,因为我以旧的方式知道它:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(我希望你明白我想说的)

我希望它不会因为发布了新的操作系统而完全改变。


1
我很难想象微软会突然放弃对Windows平台上所有游戏的90%以上的支持。我还发现,很难相信人们现在不会被这样的举动所激怒。
Jari Komppa 2012年

也就是说,最新的SDK可能不包含dx9标头/库;我还没检查 这并不意味着您不能像以前那样仅使用dx9 sdk。当然,除非最新的视觉工作室以某种方式禁止您这样做,但这绝对是愚蠢的。
Jari Komppa 2012年

好吧,我也不敢相信,但是我认为这是有可能的,因为让“ Windows 8”品牌的PC大部分具有触摸屏,您是否见过用DirectX编写的支持触摸屏游戏的游戏?
LaVolpe 2012年

我敢肯定,您将无法使用dx9制作“现代ui”应用程序。
Jari Komppa 2012年

1
D3D对象一直都是COM对象-不使用原始指针,而是始终将它们放在智能COM指针中是可能的。

Answers:


12

是的,Windows 8确实支持DirectX 9。

为了进行开发,现在不推荐使用旧的DirectX SDK,但是在Visual Studio 2012随附的新Windows 8 SDK中,您将拥有所需的所有库和标头。可以毫无问题地采用“旧方法” 。如果您需要PIX进行调试,或者需要高级D3DX库,则必须再次安装旧的DXSDK,因为Windows 8 SDK中没有此功能。

但是,这仅对普通的旧桌面应用程序有效。对于Metro风格的应用程序,我将让Microsoft的Chuck Walbourn发言

Metro风格的应用程序不支持Direct3D9和Direct3D9Ex。不建议或不支持将DirectX SDK与Metro风格的应用程序一起使用。请参阅 http://msdn.microsoft.com/en-us/library/ee663275.aspx

有许多资源可帮助您将Direct3D 9代码库移植到Direct3D11。从Direct3D 9移植到Direct3D 10.x的大部分材料在这里完全适用,因为Direct3D 11的API与Direct3D 10非常相似。

参见 http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx。请务必回顾Windows到现实:从游戏中的Direct3D 10图形中获得最大收益,因为它涵盖了开发人员过去遇到的许多陷阱和性能问题,以及DirectX 11 Technology Update,以总结Direct3D 10之间的区别。 .x和Direct3D 11。

MSDN有一个移植指南以及 http://msdn.microsoft.com/en-us/library/ff476190.aspx指向你http://msdn.microsoft.com/en-us/library/bb205073.aspx为直接从Direct3D 9转到Direct3D 11。

抱歉,您不能将D3D9直接用于Metro风格的应用程序。但是,D3D_FEATURE_LEVEL_9_3如果您要支持旧版硬件,则可以使用D3D11并将自己限制在某些功能级别(例如)。


哇,谢谢你的回答。如我所见,您进行了出色的研究
LaVolpe 2012年

好吧,不是真的,我只是碰巧正在研究它;)
Laurent Couvidou 2012年

1
VS 2012附带的AFAIK win8 SDK不再提供任何D3D11X *标头-仅提供D3D11 *。这使您无需使用许多实用程序功能,例如从文件加载着色器并在一个函数调用中对其进行编译。

确实。微软对此表示:“请注意,D3DX11当前使用的替代技术包括DirectXTex和DirectXTK。D3DXMath被DirectXMath替代。” 到目前为止尚未测试。
Laurent Couvidou 2012年

3

Windows 8对Direct3D 9应用程序的基本支持与Windows 7和Windows Vista中相同。Direct3D 9是旧版,肯定存在一些兼容性问题,这些问题可能会影响基于Direct3D 9的游戏,但是它们或多或少地具有与Windows 7相同的功能。

与Windows 7相比,在Windows 8上使用Direct3D 9进行开发更具挑战性。标准Direct3D 9标头是Windows 8.0 SDK(随VS 2012附带)的一部分,但不包括D3DX9。Windows 8不支持Direct3D 9调试运行时。您可以在Windows 8上使用旧版DirectX SDK,但是安装它存在许多挑战和局限性。

推荐用于在Windows 7和Windows 8上编写新应用程序的API是Direct3D11。它适用于Win32桌面应用程序和Windows Store应用程序。另外,建议您使用Windows 8.x SDK,而不要使用DirectX SDK。

有关此主题的大量文章,请参见Windows游戏和DirectX SDK


请注意,不要在任何比Windows XP Service Pack 1更高的Windows版本上“安装DirectX”。“ DirectX最终用户运行时”程序包将安装在Windows XP SP2,Windows Vista,Windows 7和Windows 8.x上,但是它从不安装“ DirectX”。它只是部署了一些辅助DLL,这些DLL是现在的旧版DirectX SDK中的可选位:XINPUT 1.3,XAudio 2.7,D3DX等。Direct3D,DirectInput,DirectSound等仅作为正式Service Pack或Windows Update版本的一部分进行更新。链接
Chuck Walbourn 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.