在我看過迄今爲止命令的一些樣品是一樣的東西:在D3D12中,渲染目標視圖可以是任何緩衝區嗎?
- D3D12_DESCRIPTOR_HEAP_DESC與D3D12_DESCRIPTOR_HEAP_TYPE :: D3D12_DESCRIPTOR_HEAP_TYPE_RTV
- ID3D12Device :: CreateDescriptorHeap
- D3D12_CPU_DESCRIPTOR_HANDLE與ID3D12DescriptorHeap :: GetCPUDescriptorHandleForHeapStart(也許ID3D12Device :: GetDescriptorHandleIncrementSize)
- (可選?)ID3D12Device :: CreateRenderTargetView
- (可選?)IDXGISwapChain3 ::的GetBuffer
- 附表渲染的東西命令列表注意OMSetRenderTargets和DrawInstanced的,然後關閉命令列表。
- ID3D12CommandQueue :: ExecuteCommandLists
- (可選?)IDXGISwapChain3 ::目前
- 安排在圍欄與ID3D12CommandQueue ::信號的信號
- 等待GPU與ID3D12Fence完成:: SetEventOnCompletion和WaitForSingleObjectEx
如果可能,步驟4.1如何替換爲選擇的緩衝區?即怎麼能創建一個ID3D12Resource *並渲染它,然後從它讀取成std :: vector? (我假設這是可能的,步驟6.1可以忽略,因爲沒有渲染目標視圖供交換鏈呈現。也許步驟4在這種情況下也是不必要的?也許只有OMSetRenderTargets很重要?)
你寫道,我不能也不應該使用低級別的DXGI函數,但是當它們工作時 - 你的意思是ID3D12Device中的CreateCommittedResource,CreatePlacedResource,CreateReservedResource之一還是有更低級別的I還沒找到? – Emil
澄清:使用Direct3D界面創建資源,而不是DXGI界面。 DXGI的使用應限於創建和管理交換鏈。 –