如何使用DirectX将我的对象渲染到2个分离的窗口中?
您需要为每个窗口创建一个SwapChain和RenderTargetView。
1. 如果您通过CreateDeviceAndSwapChain创建设备,则需要首先获得IDXGIFactory。
IDXGIDevice * device;
d3ddevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&device);
IDXGIAdapter * adapter;
device->GetParent(__uuidof(IDXGIAdapter), (void**)&adapter);
IDXGIFactory * factory;
adapter->GetParent(__uuidof(DDXGIFactory), (void**)&factory);
factory->CreateSwapChain(g_pd3dDevice, &sd, &g_pSwapChain2);
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;
g_immediateContext->OMSetRenderTargets(1, &g_RenderTargetView, NULL);
....