首页 文章

DirectX11 2窗口渲染

提问于
浏览
5

如何使用DirectX将对象渲染到2个独立的窗口中?

1 回答

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

相关问题