【问题标题】:How to get which video card(nvdia or amd) is using in DirectX如何获取 DirectX 中使用的显卡(nvidia 或 amd)
【发布时间】:2015-02-02 08:08:58
【问题描述】:

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

所以,我需要知道计算机正在使用哪张卡(某些计算机可能有多个显卡)。

【问题讨论】:

  • 您使用的是什么操作系统?什么版本的 Direct3D?

标签: directx direct3d amd-processor


【解决方案1】:

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

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

在每个供应商提供的多个视频卡/驱动程序组合上测试您的应用。对于独立开发者来说,这可能具有挑战性,但它是确保您的应用程序在广泛的硬件上运行的重要部分。对于 Direct3D 11,您需要尝试各种 Direct3D hardware feature level 设备以确保良好的覆盖范围。

在处理广泛传播的驱动程序错误和非官方的供应商特定扩展时,真实游戏确实有一些与检测特定硬件 ID 相关的额外警告)。有一个基于DXGI_ADAPTER_DESCD3DADAPTER_IDENTIFIER9 中的vendorid/deviceid 组合进行此检测的示例here。锁定来自特定供应商的所有卡片太过分了,而且可能只会惹恼您的客户。

【讨论】:

  • 我在 DirectX 9 中使用了 VTF,而 ATI/AMD 在着色器模型 3.0 中不支持 VTF。
  • 您不需要为此进行供应商检查。将CheckDeviceFormatD3DUSAGE_QUERY_VERTEXTEXTURE 一起使用。您会发现问题卡不支持任何格式。对于着色器模型 3.0,如果不以这种方式验证它,就将格式用作顶点纹理实际上是无效的。见MSDN。 Shader Model 4.0 或更高版本的设备(也称为 Direct3D 功能级别 10.0+)当然需要顶点纹理格式。因此,大多数较新的 ATI/AMD 实际上确实支持顶点纹理,CheckDeviceFormat 会发现这一点。
猜你喜欢
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 2020-06-27
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多