2014-01-22 130 views
5

如何使用DirectX將我的對象渲染爲2個獨立窗口?DirectX11 2窗口渲染

+3

如果你想回答你自己的問題,你應該寫的,而不是把答案的問題的實際答案。 – Borgleader

+1

好吧抱歉...我會記住 – Quest

+2

不需要抱歉,我只是指出了它。 – Borgleader

回答

1

您需要爲每個窗口創建一個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可以爲新窗口創建額外的swapchain

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; 

最後只是設置你的渲染ta rget(s)並繪製一些東西!

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

我希望這對我有幫助。

最好的問候任務:)