DirectX11 2 window rendering

喜你入骨 提交于 2019-12-04 13:51:41

问题


How can I render my objects with DirectX into 2 separated windows?


回答1:


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 :)



来源:https://stackoverflow.com/questions/21292996/directx11-2-window-rendering

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!