Ошибка инициализации DX12 VS2019 - PullRequest
2 голосов
/ 17 марта 2020

Я много раз делал шаги инициализации в DX10 / 11/12, внезапно в VS2019 DX12 не создал ничего, кроме следующих объектов: ID3D12Debug, ID3D12InfoQueue, ID3D12Device2.

Даже прямое создание очереди команд завершается неудачно:

    bool DX12ObjectFactory::CreateCommandQueue(ID3D12Device* pDevice, __out 
    ID3D12CommandQueue** ppCmdQueue, const D3D12_COMMAND_QUEUE_DESC& queueCreateDesc)
    {
        OnFailedThrow(pDevice->CreateCommandQueue(&queueCreateDesc, 
        IID_PPV_ARGS(&*ppCmdQueue)));
        return true;
    }

HRESULT сообщение:

ч = 0x00000108: Операция открытия / создания завершена во время разрыва оплока

Поиск кода ошибки указывает на: ERROR_TOO_MANY_POSTS 298 (0x12A)

Странно то, что все работало несколько дней go, возможно, обновление Windows сломало его ...

Спасибо

1 Ответ

1 голос
/ 18 марта 2020

D3D12_COMMAND_QUEUE_DESC был инициализирован должным образом, проблемы, по-видимому, заключались в использовании IID_PPV_ARGS, так как он был в порядке со старым способом использования IID_ID3D12CommandQueue, (void**)&(*ppCmdQueue).

Также моя проблема с swapchain я забыл инициализировать счетчик буфера значением> = 2.

...