无法创建DirectX设备和交换链


  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;
    }
    

消息在使用.dll文件时始终显示

我已经重新安装了DirectX和Nvidia驱动程序。下一步是什么?(其他计算机运行良好)

最可能的原因是您设置了D3D11_CREATE_DEVICE_DEBUG创建标志,但您的系统没有安装Direct3D调试设备。在带有DirectX 11.1或更高版本的Windows 7 SP1上运行旧版DirectX SDK无法获得开发人员运行时。

正如上面的注释中所指出的,您从该函数返回的HRESULT值本可以提示原因,但您未能在代码段中输出它。

在系统上获得调试设备的方式取决于运行的操作系统。请参阅本文以获取完整列表。例如,如果您运行的是Windows 10,则没有SDK安装它,而是必须启用图形工具"Feature On Demand"。

其他可能的原因是:

  • 您的系统上没有支持Direct3D硬件功能级别的requestedLevels列表的设备

  • 您向设备或交换链创建传递了一些无效的输入参数集,这也是使用更现代的方法创建独立于设备创建的交换链的另一个原因。请注意,D3D11CreateDeviceAndSwapChain是一个遗留函数,因此您用作教程的任何材料都可能已经过时。参见Direct3D 11创建设备的解剖

如果您是DirectX开发的新手,我建议您看一下DirectX工具包教程。

最新更新