Проект D3D12: разыменование nullptr

Я работаю с примерами Microsoft на их странице GitHub, и хотя мой код основан на их коде, я не достигаю того же результата.
Оба проекта имеют эти ComPtrs, но у меня все они нулевые (0x0000000000000000), тогда как в примере они работают отлично.

ComPtr<IDXGISwapChain3> m_swapChain;
ComPtr<ID3D12Device> m_device;
ComPtr<ID3D12Resource> m_renderTargets[FrameCount];
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12CommandQueue> m_commandQueue;
ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
ComPtr<ID3D12PipelineState> m_pipelineState;
ComPtr<ID3D12GraphicsCommandList> m_commandList;

В частности, эта строка вызывает сбой отладчика.

ThrowIfFailed(m_device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&m_commandQueue)));

Редактировать: мой код неправильно создавал m_device, что вызвало ошибку.

-1

Решение

Я предполагаю, что вы получаете неудачный HRESULT от CreateCommandQueue, Вы должны настроить отладчик на прерывание исключений (см. MSDN). Кроме того, вы можете переписать его:

HRESULT hr = m_device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&m_commandQueue));
ThrowIfFailed(hr);

И установите точку отладки на HRESULT hr = ... линия.

Как кто-то заметил, убедитесь, что вы проверили все возможные условия отказа до этого момента. Чтобы получить надежный код для создания устройства Direct3D 12, см. DeviceResources или VS Direct3D 12 игровых шаблонов

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]