D3D功能级别问题

时间:2016-10-25 14:50:43

标签: c++ winapi direct3d

当有人尝试使用比用户GPU支持的d3d_feautre_level更高的d3d_feautre_level时,有人会向我解释会发生什么?

这是我不明白的,所以我很感激,如果有人可以帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

创建Direct3D设备时,您需要提供应用程序支持的Direct3D硬件功能级别列表。如果硬件不支持任何这些功能级别,则设备创建失败。

对于Direct3D 11,您提供D3D11CreateDevice支持的功能级别为5&第六个参数:

HRESULT D3D11CreateDevice(...
    const D3D_FEATURE_LEVEL *pFeatureLevels,
    UINT FeatureLevels,
    ...);

如果您传递nullptr / 0,则默认为:

D3D_FEATURE_LEVEL lvl[] = {
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_1 };

对于Direct3D 12,D3D12CreateDevice将您支持的最小Direct3D功能级别作为第二个参数:

HRESULT WINAPI D3D12CreateDevice(...
    D3D_FEATURE_LEVEL MinimumFeatureLevel,
    ...);

大多数应用程序都使用D3D_FEATURE_LEVEL_11_0作为最低要求。

  

Direct3D 12需要支持它的Windows 10和WDDM 2.0驱动程序。目前,任何低于功能级别11.0的视频卡都没有设备驱动程序。

Direct3D Feature Levels
Anatomy of Direct3D 11 Create Device
Anatomy of Direct3D 12 Create Device