【发布时间】:2015-02-02 08:08:58
【问题描述】:
我需要知道如何获取directX中使用的是哪种显卡,因为我的程序中的某些功能在amd显卡中不支持并导致崩溃。
所以,我需要知道计算机正在使用哪张卡(某些计算机可能有多个显卡)。
【问题讨论】:
-
您使用的是什么操作系统?什么版本的 Direct3D?
标签: directx direct3d amd-processor
我需要知道如何获取directX中使用的是哪种显卡,因为我的程序中的某些功能在amd显卡中不支持并导致崩溃。
所以,我需要知道计算机正在使用哪张卡(某些计算机可能有多个显卡)。
【问题讨论】:
标签: directx direct3d amd-processor
因此,在您在这里抛出 ATI/AMD under the bus 之前,请确保问题实际上不是由于您的应用程序造成的。对于 Direct3D 10/11,请务必启用 debug device 并确保您没有任何损坏或错误,并查看所有警告。
接下来,看看是否有更新的驱动程序可用于 repro 案例。如果有,那么只需告诉您的用户更新他们的驱动程序。如果不是,并且这似乎是驱动程序内部的合理崩溃,则将其作为错误报告给 ATI/AMD(或 NVidia 或 Intel,视情况而定)。
在每个供应商提供的多个视频卡/驱动程序组合上测试您的应用。对于独立开发者来说,这可能具有挑战性,但它是确保您的应用程序在广泛的硬件上运行的重要部分。对于 Direct3D 11,您需要尝试各种 Direct3D hardware feature level 设备以确保良好的覆盖范围。
在处理广泛传播的驱动程序错误和非官方的供应商特定扩展时,真实游戏确实有一些与检测特定硬件 ID 相关的额外警告)。有一个基于DXGI_ADAPTER_DESC 或D3DADAPTER_IDENTIFIER9 中的vendorid/deviceid 组合进行此检测的示例here。锁定来自特定供应商的所有卡片太过分了,而且可能只会惹恼您的客户。
【讨论】:
CheckDeviceFormat 与D3DUSAGE_QUERY_VERTEXTEXTURE 一起使用。您会发现问题卡不支持任何格式。对于着色器模型 3.0,如果不以这种方式验证它,就将格式用作顶点纹理实际上是无效的。见MSDN。 Shader Model 4.0 或更高版本的设备(也称为 Direct3D 功能级别 10.0+)当然需要顶点纹理格式。因此,大多数较新的 ATI/AMD 实际上确实支持顶点纹理,CheckDeviceFormat 会发现这一点。