当有人尝试使用比用户GPU支持的d3d_feautre_level更高的d3d_feautre_level时,有人会向我解释会发生什么?
这是我不明白的,所以我很感激,如果有人可以帮我解决这个问题
答案 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