如果 CPU 支持 C# 上的硬件加速,如何签入代码?

How to check in code if CPU supports hardware acceleration on C#?

我正在构建一个程序,该程序使用 Direct3D 对象 using Direct3D = Microsoft.DirectX.Direct3D 来呈现实时流。我在 Windows 7 机器上测试了它,问题是 CPU 不支持 Hardware Acceleration。对于 运行 程序,我在创建 Direct3D 对象时将标志更改为 Direct3D.CreateFlags.SoftwareVertexProcessing,这很好。我想知道是否有任何方法可以检查 CPU 是否支持 Hardware Acceleration。如果是,则使用 Direct3D.CreateFlags.HardwareVertexProcessing,如果不是,则使用 software。我的程序将 运行 一台不同的机器,所以这样比构建两个程序要好。该程序是用 C# 编写的,但如果您知道如何用其他语言编写它,我将不胜感激,我会尝试翻译成 C#

我不知道在 C# 中是否有更直接的途径,但在 [C++][1] 中你可以检查:

HRESULT GetDeviceCaps(
  UINT       Adapter,
  D3DDEVTYPE DeviceType,
  D3DCAPS9   *pCaps
);

[1] https://docs.microsoft.com/en-us/windows/win32/direct3d9/selecting-a-device