2012-05-14 20 views
6

estoy invocando D3D11CreateDevice() con el siguiente código:¿Qué puede hacer que D3D11CreateDevice() falle con E_FAIL?

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

Sin embargo, el resultado es almacenado en HRESTUL hrE_FAIL. La consola tiene el siguiente resultado:

excepción de primera oportunidad en 0x7590b9bc en Init Direct3D.exe: Microsoft
C++ excepción: _com_error en la ubicación de memoria 0x0049ec64 ..
C: \ Users \ Andrew \ escritorio \ code \ common \ d3dapp.cpp (389):
D3D11CreateDevice (0, md3dDriverType, 0, createDeviceFlags, 0, 0, D3D11_SDK_VERSION, & md3dDevice, & featureLevel, & md3dImmediateContext)
hr = E_FAIL (0x80004005) Init Direct3D.exe ha activado un punto de interrupción

no creo que es un tema que une como el código construye, pero las siguientes dependencias adicionales se definen:

d3d11lib
d3dx11d.lib
D3DCompiler.lib
Effects11d.lib
dxerr.lib

mi siguiente pensamiento fue que mi tarjeta no era compatible con D3D11. Sin embargo, éste no es el caso. Aquí está la salida de dxdiag:

------------------ 
System Information 
------------------ 
Time of this report: 5/14/2012, 02:29:16 
     Machine name: WINDOZE 
    Operating System: Windows 7 Professional 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_gdr.120330-1504) 
      Language: English (Regional Setting: English) 
System Manufacturer: Gigabyte Technology Co., Ltd. 
     System Model: GA-880GMA-UD2H 
       BIOS: Award Modular BIOS v6.00PG 
      Processor: AMD Phenom(tm) II X4 955 Processor (4 CPUs), ~3.2GHz 
      Memory: 8192MB RAM 
Available OS Memory: 8188MB RAM 
      Page File: 4121MB used, 12254MB available 
     Windows Dir: C:\Windows 
    DirectX Version: DirectX 11 
DX Setup Parameters: Not found 
    User DPI Setting: Using System DPI 
System DPI Setting: 96 DPI (100 percent) 
    DWM DPI Scaling: Disabled 
    DxDiag Version: 6.01.7601.17514 64bit Unicode 

------------ 
DxDiag Notes 
------------ 
     Display Tab 1: No problems found. 
     Display Tab 2: No problems found. 
     Sound Tab 1: No problems found. 
     Sound Tab 2: No problems found. 
     Sound Tab 3: No problems found. 
     Sound Tab 4: No problems found. 
      Input Tab: No problems found. 

-------------------- 
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) 

--------------- 
Display Devices 
--------------- 
      Card name: ATI Radeon HD 5670 
     Manufacturer: Advanced Micro Devices, Inc. 
      Chip type: ATI display adapter (0x68D8) 
      DAC type: Internal DAC(400MHz) 
     Device Key: Enum\PCI\VEN_1002&DEV_68D8&SUBSYS_56701545&REV_00 
    Display Memory: 1774 MB 
    Dedicated Memory: 2032 MB 
     Shared Memory: 3838 MB 
     Current Mode: 1920 x 1080 (32 bit) (60Hz) 
     Monitor Name: Generic PnP Monitor 
     Monitor Model: E2241 
     Monitor Id: GSM581A 
     Native Mode: 1920 x 1080(p) (60.000Hz) 
     Output Type: HDMI 
     Driver Name: aticfx64.dll,aticfx64.dll,aticfx64.dll,aticfx32,aticfx32,aticfx32,atiumd64.dll,atidxx64.dll,atidxx64.dll,atiumdag,atidxx32,atidxx32,atiumdva,atiumd6a.cap,atitmm64.dll 
Driver File Version: 8.17.0010.1119 (English) 
    Driver Version: 8.951.0.0 
     DDI Version: 11 
     Driver Model: WDDM 1.1 
    Driver Attributes: Final Retail 
    Driver Date/Size: 3/9/2012 01:14:42, 958464 bytes 
     WHQL Logo'd: Yes 
    WHQL Date Stamp: 
    Device Identifier: {D7B71EE2-2B98-11CF-AA72-7A76BEC2C535} 
      Vendor ID: 0x1002 
      Device ID: 0x68D8 
      SubSys ID: 0x56701545 
     Revision ID: 0x0000 
Driver Strong Name: oem1.inf:ATI.Mfg.NTamd64.6.1:ati2mtag_Evergreen:8.951.0.0:pci\ven_1002&dev_68d8 
    Rank Of Driver: 00E62001 
     Video Accel: ModeMPEG2_A ModeMPEG2_C 
    Deinterlace Caps: {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY 
        {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YV12,0x32315659) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {3C5323C1-6FB7-44F5-9081-056BF2EE449D}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {552C0DAD-CCBC-420B-83C8-74943CF9F1A6}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC1,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC2,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC3,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC4,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S340,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S342,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
     D3D9 Overlay: Not Supported 
      DXVA-HD: Not Supported 
     DDraw Status: Enabled 
     D3D Status: Enabled 
     AGP Status: Enabled 

      Card name: ATI Radeon HD 5670 
     Manufacturer: Advanced Micro Devices, Inc. 
      Chip type: ATI display adapter (0x68D8) 
      DAC type: Internal DAC(400MHz) 
     Device Key: Enum\PCI\VEN_1002&DEV_68D8&SUBSYS_56701545&REV_00 
    Display Memory: 1774 MB 
    Dedicated Memory: 2032 MB 
     Shared Memory: 3838 MB 
     Current Mode: 1600 x 900 (32 bit) (60Hz) 
     Monitor Name: Generic PnP Monitor 
     Monitor Model: W2043 
     Monitor Id: GSM4E9D 
     Native Mode: 1600 x 900(p) (60.000Hz) 
     Output Type: HD15 
     Driver Name: aticfx64.dll,aticfx64.dll,aticfx64.dll,aticfx32,aticfx32,aticfx32,atiumd64.dll,atidxx64.dll,atidxx64.dll,atiumdag,atidxx32,atidxx32,atiumdva,atiumd6a.cap,atitmm64.dll 
Driver File Version: 8.17.0010.1119 (English) 
    Driver Version: 8.951.0.0 
     DDI Version: 11 
     Driver Model: WDDM 1.1 
    Driver Attributes: Final Retail 
    Driver Date/Size: 3/9/2012 01:14:42, 958464 bytes 
     WHQL Logo'd: Yes 
    WHQL Date Stamp: 
    Device Identifier: {D7B71EE2-2B98-11CF-AA72-7A76BEC2C535} 
      Vendor ID: 0x1002 
      Device ID: 0x68D8 
      SubSys ID: 0x56701545 
     Revision ID: 0x0000 
Driver Strong Name: oem1.inf:ATI.Mfg.NTamd64.6.1:ati2mtag_Evergreen:8.951.0.0:pci\ven_1002&dev_68d8 
    Rank Of Driver: 00E62001 
     Video Accel: ModeMPEG2_A ModeMPEG2_C 
    Deinterlace Caps: {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY 
        {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(UYVY,UYVY) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(YV12,0x32315659) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {3C5323C1-6FB7-44F5-9081-056BF2EE449D}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {552C0DAD-CCBC-420B-83C8-74943CF9F1A6}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,2) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {6E8329FF-B642-418B-BCF0-BCB6591E255F}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,1) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_PixelAdaptive 
        {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY DeinterlaceTech_BOBVerticalStretch 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(NV12,0x3231564e) Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB VideoProcess_StretchX VideoProcess_StretchY 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC1,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC2,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC3,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(IMC4,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S340,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
        {5A54A0C9-C7EC-4BD9-8EDE-F3C75DC4393B}: Format(In/Out)=(S342,UNKNOWN) Frames(Prev/Fwd/Back)=(0,0,0) Caps= 
     D3D9 Overlay: Not Supported 
      DXVA-HD: Not Supported 
     DDraw Status: Enabled 
     D3D Status: Enabled 
     AGP Status: Enabled 

Cualquier ayuda en cuanto a lo que podría ser una posible causa de E_FAIL sería apreciada.

+0

¿Qué init 'createDeviceFlags' a? Además, te falta un punto y coma después de 'D3D_DRIVER_TYPE_HARDWARE': ¿es este el código real que estás usando? – Ben

+0

No, no es el código real, pero bastante cercano. El problema parece ser con 'createDeviceFlags'. Si 'createDeviceFlags = 0;' entonces el código funciona correctamente. Si 'createDeviceFlags = D3D11_CREATE_DEVICE_DEBUG;' falla. ¿Por qué sería esto un problema? 'D3D11_CREATE_DEVICE_DEBUG' es válido de acuerdo con http://msdn.microsoft.com/en-us/library/windows/desktop/ff476107(v=vs.85).aspx –

+0

Debe publicar el código real que muestra el problema. – Ben

Respuesta

5

El problema parece ser que no tiene Direct X Debug Runtime instalado (hay una opción para instalarlo al instalar Direct X SDK), pero solo el Direct X Runtime normal. El Direct X Runtime proporciona menos sobrecarga y es más rápido, pero no puede usarlo para depurar las aplicaciones.

-------------------- 
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) 

O si lo tiene instalado, no está encendido. Puede encontrar información útil how to switch between Debug and Release version of Direct X Runtime.

+0

Según tengo entendido, la marca 'D3D11_CREATE_DEVICE_DEBUG' habilitó Debug Runtime en DirectX 11. El artículo con el que se vinculó fue con respecto a DirectX 9, pero las cosas han cambiado desde entonces. –

+0

Aunque, tal vez el SDK falló durante la instalación. Acabo de reinstalar el SDK y la bandera 'D3D11_CREATE_DEVICE_DEBUG' ahora funciona correctamente. La versión SDK de junio de 2010 no contiene una opción para instalar el tiempo de ejecución de depuración, se incluye automáticamente. –

Cuestiones relacionadas