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

DirectX SDK June 2010 を使用した Windows 8 の VS2010 でもまったく同じ問題があります。

デバッグ層を無効にすると、すべて正常に動作します。DirectX のデバッグ レイヤーはかなり便利なので、これはもちろん面倒です。

DirectX SDK を正常にインストールするためにこの回避策も試しましたが、役に立ちませんでした: http://blogs.msdn.com/b/chuckw/archive/2011/12/09/known-issue-directx- SDK-June-2010-setup-and-s1023-error.aspx

これに対する解決策はすでにありますか?

于 2013-06-15T10:18:21.610 に答える
0

私はこの正確な問題を抱えています。D3D10_CREATE_DEVICE_DEBUG フラグを 0 に切り替えたときに動作するようになりました。何らかの理由で、コンピューターでデバッグ レイヤーの作成に問題があると思われます。理由はわかりませんが、少なくともその方法でウィンドウを作成できました。

于 2013-03-22T13:55:21.140 に答える