Как скопировать текстуру с одного устройства на другое?

У меня есть устройство DirectX9 для отдельных окон. На одном из окон отображается изображение. То, что я хотел бы сделать, это на самом деле взять изображение устройства «А» и поместить текстуру на текстуру устройства «Б». Это возможно?

Я пытался выяснить, почему приведенный ниже код не работает, и это потому, что 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();

Я хотел бы иметь возможность сделать это, но если это невозможно, могу ли я использовать только одно устройство и рендеринг в несколько окон?

0

Решение

Начиная с Vista D3D9 поддерживает совместное использование ресурсов между устройствами.
http://msdn.microsoft.com/en-us/library/windows/desktop/bb219800(v=vs.85).aspx#Sharing_Resources

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector