How can I render my objects with DirectX into 2 separated windows?
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 :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With