2015-05-08 2 views
0

Я пытаюсь начать с программирования игр DirectX 11, но по какой-то причине я просто не могу создать целевое представление рендеринга с ID3D11Device :: CreateRenderTargetView().Невозможно создать целевой вид рендеринга DX11

(BTW, я использую VS для рабочего стола 2013, а самый высокий уровень особенность моего GPU поддерживает это 11_0 я работающий под управлением Windows 8.1.).

Вот код, я думаю, что это отношение:

D3D11_TEXTURE2D_DESC backBufferDesc; 
    ZeroMemory(&backBufferDesc, sizeof(backBufferDesc)); 
    backBufferDesc.ArraySize = 1; 
    backBufferDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE; 
    backBufferDesc.CPUAccessFlags = 0; 
    backBufferDesc.Format = DXGI_FORMAT_R32_FLOAT; 
    backBufferDesc.Height = nHeight; 
    backBufferDesc.Width = nWidth; 
    backBufferDesc.MipLevels = 1; 
    backBufferDesc.MiscFlags = 0; 
    backBufferDesc.SampleDesc.Count = 1; 
    backBufferDesc.SampleDesc.Quality = 0; 
    backBufferDesc.Usage = D3D11_USAGE_DEFAULT; 

    ID3D11Texture2D* backBufferTexture; 
    result = d3dDevice_ -> CreateTexture2D(&backBufferDesc, 0, &backBufferTexture); 
    if (FAILED(result)) 
    { 
     MessageBox(0, "Failed to create the back buffer texture!", "DirectX Error", MB_OK); 
     return false; 
    } 

    result = swapChain_->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&backBufferTexture); 
    if (FAILED(result)) 
    { 
     MessageBox(0, "Failed to get the swap chain back buffer!", "DirectX Error", MB_OK); 
     return false; 
    } 

    D3D11_RENDER_TARGET_VIEW_DESC rtvDesc; 
    ZeroMemory(&rtvDesc, sizeof(rtvDesc)); 
    rtvDesc.Format = backBufferDesc.Format; 

    result = d3dDevice_->CreateRenderTargetView(backBufferTexture, &rtvDesc, &backBufferTarget_); 
    if (backBufferTexture) 
     backBufferTexture->Release(); 
    if (FAILED(result)) 
    { 
     MessageBox(0, "Failed to create the render target view!", "DirectX Error", MB_OK); 
     return false; 
    } 

ответ

0

Использование устройства отладки даст вам правдоподобную ошибку.

Основываясь на моем чтении кода, вы не заполнили поле ViewDimension для rtvDesc.

+0

Оказалось, мне даже не нужен rtvDesc. Это был параметр swapChainDesc, который был установлен неправильно. Спасибо хоть. – PeanutsGrowUnderground

Смежные вопросы