0

なんらかの理由で、アクセス違反の原因となるmy を初期化できないようですRenderTargetView(そのままです)。NULL

RenderTargetView を初期化する行は次のとおりです。

hr = g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_pRenderTargetView);

pBackBufferはバック バッファであり、値を取得しますが、そうではありませんNULL。ただし、rendertagetview はNULLプロセス全体を通して残ります。理由はありますか?

4

2 に答える 2

2

DirectX11 エラーをトレースするには、デバッグ レイヤーを使用して D3D11 デバイスを作成することをお勧めします。アプリを起動すると、Visual Studio の出力ウィンドウにエラー メッセージが出力されます。

    // Create device and swap chain
    HRESULT hr;
    UINT flags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
#if defined( DEBUG ) || defined( _DEBUG )
    flags |= D3D11_CREATE_DEVICE_DEBUG;
#endif 

    // Create device and swap chain
    D3D_FEATURE_LEVEL FeatureLevelsRequested = D3D_FEATURE_LEVEL_11_0; // Use d3d11
    UINT              numLevelsRequested = 1; // Number of levels 
    D3D_FEATURE_LEVEL FeatureLevelsSupported;

    if (FAILED (hr = D3D11CreateDeviceAndSwapChain( NULL, 
        D3D_DRIVER_TYPE_HARDWARE,
        NULL,
        0,
        &FeatureLevelsRequested,
        numLevelsRequested,
        D3D11_SDK_VERSION,
        &sd_, 
        &swap_chain_,
        &d3ddevice_,
        &FeatureLevelsSupported,
        &immediate_context_)))
    {
        MessageBox(hWnd, L"Create device and swap chain failed!", L"Error", 0);
    }
于 2013-08-30T12:14:51.483 に答える