简体   繁体   中英

DirectX11 2 window rendering

如何使用DirectX将对象渲染到2个独立的窗口中?

You need to create one SwapChain and RenderTargetView for every window.

1 if you created your device via CreateDeviceAndSwapChain you need to obtain IDXGIFactory first

IDXGIDevice * device;
d3ddevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&device);

IDXGIAdapter * adapter;
device->GetParent(__uuidof(IDXGIAdapter), (void**)&adapter);

IDXGIFactory * factory;
adapter->GetParent(__uuidof(DDXGIFactory), (void**)&factory);

With DXGIFactory you can create additional swapchain for new window

factory->CreateSwapChain(g_pd3dDevice, &sd, &g_pSwapChain2);

then create a render target view

ID3D11Texture2D* pBackBuffer = NULL;
hr = g_pSwapChain2->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&pBackBuffer );
if( FAILED( hr ) )
    return hr;

hr = g_pd3dDevice->CreateRenderTargetView( pBackBuffer, NULL, &g_pRenderTargetView );
pBackBuffer->Release();
if( FAILED( hr ) )
    return hr;

And finally just set your render target(s) and Draw something!

g_immediateContext->OMSetRenderTargets(1, &g_RenderTargetView, NULL);
....

I hope this has been helpful.

Best regards Quest :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM