如果 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
我正在构建一个程序,该程序使用 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