question

AAABBB-0654 avatar image
0 Votes"
AAABBB-0654 asked XiaopoYang-MSFT commented

DirectX 12 Raw Write to Back Buffer In Swap Chain Then Display Frame

In Windows 10 app, I need to raw write pixels color values to Swap Chain Back Buffer, then display frame of the back buffer.

 void InitDirectX()
 {
     IDXGIFactory7* factory;
    
     HRESULT hr;
        
     hr = CreateDXGIFactory1(__uuidof(IDXGIFactory7), (void**)(&factory) );
    
    
     IDXGIAdapter1* adapter;
    
     hr = factory->EnumAdapters1(0, &adapter);
    
    
     ID3D12Device* device;
    
     hr = D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_12_0, _uuidof(ID3D12Device), (void**)&device);
    
    
     ID3D12CommandQueue* commandQueue;
    
    
     D3D12_COMMAND_QUEUE_DESC queueDesc = {};
     queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
     queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
    
    
     hr = device->CreateCommandQueue(&queueDesc, __uuidof(ID3D12CommandQueue), (void**)&commandQueue);
    
    
     IDXGISwapChain3* swapChain;
    
    
     DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {};
    
     swapChainDesc.Width = 0;
     swapChainDesc.Height = 0;
     swapChainDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
     swapChainDesc.Stereo = FALSE;
    
     DXGI_SAMPLE_DESC sampleDesc = {};
    
     sampleDesc.Count = 1;
     sampleDesc.Quality = 0;
    
     swapChainDesc.SampleDesc = sampleDesc;
    
     swapChainDesc.BufferUsage = DXGI_USAGE_BACK_BUFFER;
     swapChainDesc.BufferCount = 2;
     swapChainDesc.Scaling = DXGI_SCALING_NONE;
     swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
     swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
     swapChainDesc.Flags = 0;
    
    
     hr = factory->CreateSwapChainForHwnd(commandQueue, Hwnd, &swapChainDesc, NULL, NULL, (IDXGISwapChain1**)&swapChain);
 }


How do I proceed from the Swap Chain?

windows-api
· 3
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

In the linked answer, the code contains:

 ID3D11Texture2D* backBuffer = nullptr;
 d3dResult = SwapChain->GetBuffer(0U, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&backBuffer));

In DirectX 12, what interface should I get from Swap Chain GetBuffer function?

0 Votes 0 ·

Perhaps ID3D12Texture2D, but I don‘t found. Try ID3D11Texture2D according to the ID3D11VideoDevice topic which has a ID3D12Texture2D link linked to ID3D11Texture2D.

0 Votes 0 ·

0 Answers