1

いくつかのチュートリアルに従って DirectX を学んでいますが、自分で何かを入力するたびに DirectX が機能しません。これは、何時間もの調査の後で修正できない最新のエラーの例です。

     //Header.h
     static HWND hWnd;
    static IDXGISwapChain* swapChain;
    static ID3D11Device* dev;
    static ID3D11DeviceContext* devCon;
    static ID3D11RenderTargetView* renderTarget;

    //DirectX.cpp
    bool InitD3D11(HINSTANCE hInst)
{
    HRESULT hr;
    DXGI_MODE_DESC bufferDesc;
    ZeroMemory(&bufferDesc, sizeof(DXGI_MODE_DESC));
    bufferDesc.Width = 800;
    bufferDesc.Height = 600;
    bufferDesc.RefreshRate.Numerator = 60;
    bufferDesc.RefreshRate.Denominator = 1;
    bufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    bufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
    bufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;

    DXGI_SWAP_CHAIN_DESC swapChainDesc;
    ZeroMemory(&swapChainDesc, sizeof(DXGI_SWAP_CHAIN_DESC));
    swapChainDesc.BufferDesc = bufferDesc;
    swapChainDesc.SampleDesc.Count = 1;
    swapChainDesc.SampleDesc.Quality = 0;
    swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
    swapChainDesc.BufferCount = 1;
    swapChainDesc.OutputWindow = hWnd;
    swapChainDesc.Windowed = true;
    swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;

    hr = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, NULL, NULL, NULL, D3D11_SDK_VERSION, &swapChainDesc, &swapChain, &dev, NULL, &devCon);

    ID3D11Texture2D* backBuffer;
    hr = swapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&backBuffer);
    hr = dev->CreateRenderTargetView(backBuffer, NULL, &renderTarget);
    backBuffer->Release();
    devCon->OMSetRenderTargets(1, &renderTarget, NULL);
    return true;
}
//This is not the full code - I linked directx and lib files and stuff like that.
//If I copy and paste code from tutorials, everything runs fine

InitD3d11 を呼び出すたびに、swapChain が NULL ポインターであるというエラーが表示されます。bufferDesc および/または swapChainDesc に無効なデータが含まれていると想定していますが、コンパイラはエラーの原因についての手がかりを提供できません。誰かがこのようなエラーを追跡して修正する方法を教えてもらえますか? ありがとう。

4

1 に答える 1