无法创建DirectX设备和交换链

时间:2017-10-09 21:54:53

标签: c++ directx direct3d

  1. 我遇到错误

    的问题
    if (FAILED(D3D11CreateDeviceAndSwapChain(
        nullptr,
        D3D_DRIVER_TYPE_HARDWARE,
        nullptr,
        createFlags,
        requestedLevels,
        sizeof(requestedLevels) / sizeof(D3D_FEATURE_LEVEL),
        D3D11_SDK_VERSION,
        &scd,
        &pSwapChain,
        &pDevice,
        &obtainedLevel,
        &pContext)))
    {
        MessageBox(hWnd, "Failed to create directX device and swapchain!", 
             "Error", MB_ICONERROR);
        return NULL;
    }
    
  2. 消息显示所有时间使用.dll文件

    我重新安装了DirectX和Nvidia驱动程序。 你下一步怎么做? (其他电脑工作正常)

1 个答案:

答案 0 :(得分:1)

最可能的原因是您已设置D3D11_CREATE_DEVICE_DEBUG创建标志,但系统未安装Direct3D调试设备。运行legacy DirectX SDK不适用于使用DirectX 11.1或更高版本的Windows 7 SP1以获取开发人员运行时。

  

如上面的评论中所述,您从此函数返回的HRESULT值会提示原因,但您未能在代码段中输出它。

在系统上获取调试设备的方式取决于您正在运行的操作系统。有关完整列表,请参阅this post。例如,如果您运行的是Windows 10,则不会安装SDK,而是必须启用图形工具“按需功能”。

其他可能的原因是:

  • 您的系统上没有支持requestedLevels <{3}}

  • D3D11CreateDeviceAndSwapChain列表的设备
  • 您已将一些无效的输入参数集传递给设备或交换链创建 - 这是使用更现代的创建交换链的方法的另一个原因,与设备创建无关。 请注意,{{1}}是遗留函数,因此您作为教程使用的任何材料都可能过时。请参阅Direct3D Hardware Feature levels

  

如果您不熟悉DirectX开发,我建议您查看Anatomy of Direct3D 11 Create Device