2017-10-09 74 views
-2
  1. 我有问题,有错误无法创建的DirectX设备和Swapchain

    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公司驱动程序。 下一步是什么? (其他电脑工作正常)

+0

什么是请求的功能级别,创建标志,交换链的描述等。您没有发布足够的代码以及D3D11CreateDeviceAndSwapChain返回什么类型的HRESULT值? – Asesh

+0

https://pastebin.com/4hMvjhP5 –

+0

你可以编辑你的帖子吗?就像我说的你没有发布足够的代码 – Asesh

回答

1

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

如上评论指出的那样,HRESULT值你从这个函数返回会给一个提示,原因,但你在你的代码片段无法输出。

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

其他可能在这里的原因是:

  • 有您的系统上没有设备支持您requestedLevelsDirect3D Hardware Feature levels

  • 您已经通过一些无效的输入参数集合到该设备或列表交换链创建 - 另一个使用更现代的创建独立于设备创建的交换链的方法的原因。 请注意,D3D11CreateDeviceAndSwapChain是一个传统功能,因此您用作教程的任何材料都可能已过时。见Anatomy of Direct3D 11 Create Device

如果你是新来的DirectX开发,我建议采取看看DirectX Tool Kit tutorials

相关问题