如何获取DirectX中使用的视频卡(nvdia或amd)

如何获取DirectX中使用的视频卡(nvdia或amd),directx,direct3d,amd-processor,Directx,Direct3d,Amd Processor,我需要知道如何获取directX中使用的是哪种视频卡,因为我程序中的某些功能在amd视频卡中不受支持,会导致崩溃 因此,我需要获得计算机正在使用的卡(某些计算机可能有多张视频卡)。因此,在您将ATI/AMD扔到这里之前,请确保问题实际上不是由于您的应用程序造成的。对于Direct3D 10/11,请确保启用,确保没有任何损坏或错误,并查看所有警告 接下来,查看是否有更新的驱动程序可用于repro案例。如果有,就告诉你的用户更新他们的驱动程序。如果不是,并且似乎是驱动程序内部的合法崩溃,则将其作为

我需要知道如何获取directX中使用的是哪种视频卡,因为我程序中的某些功能在amd视频卡中不受支持,会导致崩溃


因此,我需要获得计算机正在使用的卡(某些计算机可能有多张视频卡)。

因此,在您将ATI/AMD扔到这里之前,请确保问题实际上不是由于您的应用程序造成的。对于Direct3D 10/11,请确保启用,确保没有任何损坏或错误,并查看所有警告

接下来,查看是否有更新的驱动程序可用于repro案例。如果有,就告诉你的用户更新他们的驱动程序。如果不是,并且似乎是驱动程序内部的合法崩溃,则将其作为错误报告给ATI/AMD(或NVidia或Intel,视情况而定)

在每个供应商提供的多个视频卡/驱动程序组合上测试您的应用程序。对于独立软件来说,这可能是一个挑战,但它是确保应用程序在广泛的硬件上工作的一个重要部分。对于Direct3D 11,您需要尝试各种Direct3D设备以确保良好的覆盖率


在处理广泛存在的驱动程序错误和非官方的特定于供应商的扩展时,真实的游戏确实有一些额外的警告与检测特定的硬件ID有关。在
DXGI\u ADAPTER\u DESC
d3dapter\u IDENTIFIER9
中,有一个基于vendorid/deviceid组合执行此检测的示例。将特定供应商的所有卡锁定在外是一种过火的做法,可能会惹恼您的客户。

您使用的是什么操作系统?Direct3D的哪个版本?我在DirectX 9中使用了VTF,ATI/AMD在shader model 3.0中不支持VTF。您不需要供应商对此进行检查。将
CheckDeviceFormat
D3DUSAGE\u QUERY\u vertexture
一起使用。您会发现问题卡不支持任何格式。对于着色器模型3.0,如果不以这种方式进行验证,则将格式用作顶点纹理实际上是无效的。看见顶点纹理格式当然是着色器模型4.0或更高版本设备(也称Direct3D功能级别10.0+)所必需的。因此,大多数较新的ATI/AMD实际上都支持顶点纹理,
CheckDeviceFormat
将发现这一点。