【发布时间】:2016-05-04 01:08:45
【问题描述】:
我正在使用他们 GitHub 页面上的 Microsoft 示例,即使我的代码基于他们的代码,我也没有达到相同的结果。 这两个项目都有这些 ComPtr,但在我的项目中它们都为空 (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。
【问题讨论】:
-
您只显示了变量声明,任何人都无法知道为什么它们没有被设置为非空值。您需要展示更多代码。
-
在调用
m_device->CreateCommandQueue()之前初始化m_device的代码在哪里?
标签: c++ wrl directx-12