【发布时间】:2020-11-16 19:29:42
【问题描述】:
我打开 dxdiag 应用,选择显示选项卡以检查支持的功能级别,这是结果
今天我的内存不足,因为我的一个芯片被炸毁了,现在在 2GB 内存上运行
看来我的设备支持 directx 功能级别 11 很棒
跳转到 Visual Studio 2019 我尝试创建 D3D11 设备
D3D_FEATURE_LEVEL levels[] = { //Supported Levels We Want 11 or above
D3D_FEATURE_LEVEL_9_1,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_10_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_11_1
};
D3D_FEATURE_LEVEL supported = {};
HRESULT deviceCreate = D3D11CreateDevice(
nullptr //Use Default Adapter
,D3D_DRIVER_TYPE_HARDWARE,0 //Use Hardware ,no software module provided
,D3D11_CREATE_DEVICE_BGRA_SUPPORT | D3D11_CREATE_DEVICE_DEBUG //Flags for device creation
,levels,ARRAYSIZE(levels),D3D11_SDK_VERSION //Feature array,size of array,sdk to use
,&device,&supported,&context //Created Device,supported level,context
);
if (FAILED(deviceCreate))
{
MessageBox(NULL, L"Failed To Create D3D11 Device", L"Failed DirectX", MB_OK);
error = 1;
return;
}
switch (supported)
{
case D3D_FEATURE_LEVEL_9_1:MessageBox(NULL, L"9_1", L"9_1", MB_OK);
break;
case D3D_FEATURE_LEVEL_9_2:MessageBox(NULL, L"9_2", L"9_2", MB_OK);
break;
case D3D_FEATURE_LEVEL_9_3:MessageBox(NULL, L"9_3", L"9_3", MB_OK);
break;
case D3D_FEATURE_LEVEL_10_0:MessageBox(NULL, L"10_0", L"10_0", MB_OK);
break;
case D3D_FEATURE_LEVEL_10_1:MessageBox(NULL, L"10_1", L"10_1", MB_OK);
break;
case D3D_FEATURE_LEVEL_11_0:MessageBox(NULL, L"11_0", L"11_0", MB_OK);
break;
case D3D_FEATURE_LEVEL_11_1:MessageBox(NULL, L"11_1", L"11_1", MB_OK);
}
输出:
我查看了我的制造商网站和 Windows 更新,但都说您已经安装了最新的驱动程序。任何帮助将不胜感激
【问题讨论】:
-
在 Debug->Graphics 下打开 DirectX 调试控制中心。有一个选项允许仅使用特定 API 进行调试。也许你已经打开它来使用 9_1。
-
我打开了调试控制中心,但是窗口中的所有选项都是灰色的。我编辑了用户列表以包含整个调试目录,并且对功能级别没有限制,但它没有帮助
-
如果从关卡中移除 d3d9 会发生什么?也许它需要最低支持
-
是的,你是对的,我使用你的想法发布了解决方案
标签: c++ visual-studio-2019 directx-11