0
ID3D11Device* md3dDevice;
ID3D11DeviceContext* md3dImmediateContext;
D3D_DRIVER_TYPE md3dDriverType = D3D_DRIVER_TYPE_HARDWARE;
HRESULT hr = D3D11CreateDevice(
            0,                 
            md3dDriverType,
            0,                 
            D3D11_CREATE_DEVICE_DEBUG, 
            0, 0,              
            D3D11_SDK_VERSION,
            &md3dDevice,
            &featureLevel,
            &md3dImmediateContext);ID3D11Device* md3dDevice;

当我包含 D3D11_CREATE_DEVICE_DEBUG 标志时,我从这个函数中得到一个 e_fail (没有标志可以正常工作)。我认为这与我的调试运行时有关,所以我按照此线程中的说明重新安装了 dx sdk:什么会导致 D3D11CreateDevice() 因 E_FAIL 而失败?但它并没有解决问题。

我还在 dxdiag 中看到零调试级别:

--------------------
DirectX Debug Levels
--------------------
Direct3D:    0/4 (retail)
DirectDraw:  0/4 (retail)
DirectInput: 0/5 (retail)
DirectMusic: 0/5 (retail)
DirectPlay:  0/9 (retail)
DirectSound: 0/5 (retail)
DirectShow:  0/6 (retail)

任何帮助,将不胜感激。

4

1 回答 1

3

您通过“什么会导致 D3D11CreateDevice() 因 E_FAIL 失败?”链接的线程 确实包含我认为您的问题的答案。

我引用查克沃尔伯恩的话:

最新版本的 SDK 调试层不在旧版 DirectX SDK(2010 年 6 月)中。您需要安装独立的 Windows 8.0 SDK、Visual Studio 2012,或者您可以只安装 VS 2012 远程调试工具包。

http://blogs.msdn.com/b/chuckw/archive/2013/02/26/directx-11-1-and-windows-7-update.aspx

对我来说,安装 VS 2012 远程调试工具包解决了这个问题!

于 2013-03-11T11:59:19.087 回答