首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX11 2窗口渲染

DirectX11 2窗口渲染
EN

Stack Overflow用户
提问于 2014-01-22 20:12:37
回答 1查看 1.2K关注 0票数 7

如何使用DirectX将对象呈现为两个分隔的窗口?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 16:28:37

您需要为每个窗口创建一个SwapChain和RenderTargetView。

1如果您通过CreateDeviceAndSwapChain创建了您的设备,您需要首先获得IDXGIFactory

代码语言:javascript
复制
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,您可以为新窗口创建额外的交换链

代码语言:javascript
复制
factory->CreateSwapChain(g_pd3dDevice, &sd, &g_pSwapChain2);

然后创建一个呈现目标视图。

代码语言:javascript
复制
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;

最后,只需设置渲染目标,并绘制一些东西!

代码语言:javascript
复制
g_immediateContext->OMSetRenderTargets(1, &g_RenderTargetView, NULL);
....

我希望这是有帮助的。

最佳问候语:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21292996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档