如何使用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);
使用DXGIFactory,您可以为新窗口创建额外的交换链
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); ....
希望这有用 .
最好的问候Quest :)
1 回答
您需要为每个窗口创建一个SwapChain和RenderTargetView .
1如果您通过CreateDeviceAndSwapChain创建了设备,则需要先获取IDXGIFactory
使用DXGIFactory,您可以为新窗口创建额外的交换链
然后创建渲染目标视图
最后只需设置渲染目标并绘制一些东西!
希望这有用 .
最好的问候Quest :)