2

我正在学习“Direct3D 10.0 3D 游戏编程简介”一书的一些简单的 DX 教程。我在使用D3D10CreateDeviceAndSwapChain的功能时遇到了一些问题。以下为代码:</p>

        // Fill out a DXGI_SWAP_CHAIN_DESC to describe our swap chain.

    DXGI_SWAP_CHAIN_DESC sd;


    sd.BufferDesc.Width  = mClientWidth;
    sd.BufferDesc.Height = mClientHeight;

    sd.BufferDesc.RefreshRate.Numerator = 60;
    sd.BufferDesc.RefreshRate.Denominator = 1;

    sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    sd.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
    sd.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;

    // No multisampling.
    sd.SampleDesc.Count   = 1;
    sd.SampleDesc.Quality = 0;

    sd.BufferUsage  = DXGI_USAGE_RENDER_TARGET_OUTPUT;
    sd.BufferCount  = 1;
    sd.OutputWindow = mhMainWnd;
    sd.Windowed     = true;
    sd.SwapEffect   = DXGI_SWAP_EFFECT_DISCARD;
    sd.Flags        = 0;


    // Create the device.

    UINT createDeviceFlags = 0;

#if defined(DEBUG) || defined(_DEBUG)  
    createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG;
#endif

    HR( D3D10CreateDeviceAndSwapChain(
            0,                 //default adapter

            md3dDriverType,
            //D3D10_DRIVER_TYPE_HARDWARE,

            0,                 // no software device
            createDeviceFlags, 

            D3D10_SDK_VERSION,
            &sd,
            &mSwapChain,
            &md3dDevice) );

错误信息是:

错误代码:E_FAIL (0x80004005) 调用:D3D10CreateDeviceAndSwapChain(.....

当我将 D3D10CreateDeviceAndSwapChain 的参数 'createDeviceFlags' 更改为 0 时,它可以工作。但为什么??我想知道原因,谁能告诉我???

4

3 回答 3

2

MSDN 说

要创建支持调试层的设备,必须安装 DirectX SDK(获取 D3D10SDKLayers.DLL),然后在调用 D3D10CreateDevice 时指定 D3D10_CREATE_DEVICE_DEBUG 标志。

那么,您是否安装了 SDK 并且是否有 D3D10SDKLayers.DLL?

于 2013-03-10T11:50:26.063 回答
0

我有这个确切的问题。当我将 D3D10_CREATE_DEVICE_DEBUG 标志切换为 0 时,它开始工作。我认为我的计算机由于某种原因无法创建调试层。不知道为什么,但至少我能够以这种方式创建一个窗口。

于 2013-03-22T13:55:21.140 回答
0

我在 2010 年 6 月使用 DirectX SDK 的 Windows 8 上的 VS2010 遇到了完全相同的问题。

如果我禁用调试层一切正常。这当然很烦人,因为 DirectX 的调试层相当方便。

我也尝试了这个解决方法来成功安装 DirectX SDK,但它没有帮助我:http: //blogs.msdn.com/b/chuckw/archive/2011/12/09/known-issue-directx- sdk-june-2010-setup-and-the-s1023-error.aspx

是否已经有解决方案?

于 2013-06-15T10:18:21.610 回答