0

我有一个用于单独窗口的 directx9 设备。其中一个窗口上有一个渲染图像。我想做的实际上是获取设备'A'图像并将纹理放置在设备'B'的纹理上。这可能吗?

我试图弄清楚为什么下面的代码不起作用,因为 StretchRect 仅适用于您尝试使用的指定设备。

下面的代码将不起作用:

D3DXCreateTexture ( B , 32 , 32 , 1 , D3DUSAGE_RENDERTARGET , D3DFMT_A8R8G8B8 , D3DPOOL_DEFAULT , &Texture );

IDirect3DSurface9 *backBufferSucrface;
Texture ->GetSurfaceLevel ( 0 , &backBufferSucrface );

IDirect3DSurface9* backBufferCurrect;
A->GetBackBuffer ( 0 , 0 , D3DBACKBUFFER_TYPE_LEFT , &backBufferCurrect );

B->StretchRect ( backBufferCurrect , 0 , backBufferSucrface , 0 , D3DTEXF_LINEAR );

backBufferCurrect->Release();

我很想能够做到这一点,但如果这是不可能的,有什么办法可以让我只使用一个设备并渲染到多个窗口?

4

1 回答 1

0

从 vista d3d9 开始支持设备之间的资源共享。 http://msdn.microsoft.com/en-us/library/windows/desktop/bb219800(v=vs.85).aspx#Sharing_Resources

于 2013-01-01T20:02:25.593 回答