В образцах, я посмотрел на до сих пор некоторые из команд что-то вроде:В 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 в целом, но, когда они работают - вы имеете в виду один из CreateCommittedResource, CreatePlacedResource, CreateReservedResource в ID3D12Device или есть что-то более низкий уровень I не нашли? – Emil
Чтобы уточнить: используйте Direct3D-интерфейсы для создания ресурсов, а не DXGI. Использование DXGI должно ограничиваться созданием и управлением цепочками подкачки. –