Поделиться через


Копирование на Surfaces (Direct3D 9)

При использовании IDirect3DDevice9::UpdateSurface передайте прямоугольник на исходной поверхности или используйте NULL , чтобы указать всю поверхность. Вы также передаете точку на целевой поверхности, в которую копируется левое верхнее положение прямоугольника на исходном изображении. Этот метод не поддерживает обрезку. Операция завершится ошибкой, если исходный прямоугольник и соответствующий прямоугольник назначения не будут полностью содержаться в исходной и целевой поверхностях соответственно. Этот метод не поддерживает альфа-наложение, цветовые ключи или преобразование формата. Обратите внимание, что целевая и исходная поверхности должны быть разными.

Другие ограничения при использовании UpdateSurface см. в разделе IDirect3DDevice9::UpdateSurface.

В C++/C также доступны следующие методы для копирования изображений на поверхность Direct3D.

Пример UpdateSurface

В следующем примере копируются два прямоугольника из исходной поверхности в область назначения. Первый прямоугольник копируется из (0, 0, 50, 50) на исходной поверхности в то же место на целевой поверхности, а второй прямоугольник копируется из (50, 50, 100, 100) на исходной поверхности в (150, 150, 200, 200) на целевой поверхности.

//The following assumptions are made:
// -d3dDevice is a valid Direct3DDevice9 object.
// -pSource and pDest are valid IDirect3DSurface9 pointers.

RECT  rcSource[] = {  0,  0,  50,  50,
                     50, 50, 100, 100 };
POINT ptDest[]   = {  0,  0, 150, 150 };

d3dDevice->UpdateSurface( pSource, rcSource, 2, pDest, ptDest);

Поверхности Direct3D

IDirect3DDevice9::StretchRect