【问题标题】:How to check in code if CPU supports hardware acceleration on C#?如果 CPU 在 C# 上支持硬件加速,如何签入代码?
【发布时间】:2019-10-03 15:35:26
【问题描述】:

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

【问题讨论】:

  • 请注意,Microsoft.DirectX.Direct3DManaged DirectX 1.1 程序集的一部分。它已弃用,仅在生命周期结束时安装 legacy DirectX SDK 和/或 deprecated DXSETUP。相反,您应该考虑使用SlimDXSharpDX 托管程序集。见this blog post
  • CPU 从不支持硬件加速。支持它的是 GPU。
  • @ChuckWalbourn 这就是我感到困惑的原因。我读过GetDeviceCapsMicrosoft.DirectX.Direct3D 没有它作为属性。我已经将SharpDX 安装为NuGet 包并且工作正常。谢谢!

标签: c# directx direct3d hardware-acceleration


【解决方案1】:

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

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

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

【讨论】:

  • 我在寻找GetDeviceCaps,但我不知道DirectX 不支持它。我已经将SharpDX 安装为NuGet 包并且工作正常。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2012-07-04
相关资源
最近更新 更多