Копирование на Surfaces (Direct3D 9)
При использовании IDirect3DDevice9::UpdateSurface передайте прямоугольник на исходной поверхности или используйте NULL , чтобы указать всю поверхность. Вы также передаете точку на целевой поверхности, в которую копируется левое верхнее положение прямоугольника на исходном изображении. Этот метод не поддерживает обрезку. Операция завершится ошибкой, если исходный прямоугольник и соответствующий прямоугольник назначения не будут полностью содержаться в исходной и целевой поверхностях соответственно. Этот метод не поддерживает альфа-наложение, цветовые ключи или преобразование формата. Обратите внимание, что целевая и исходная поверхности должны быть разными.
Другие ограничения при использовании UpdateSurface см. в разделе IDirect3DDevice9::UpdateSurface.
В C++/C также доступны следующие методы для копирования изображений на поверхность Direct3D.
- D3DXLoadSurfaceFromFile
- D3DXLoadSurfaceFromFileInMemory
- D3DXLoadSurfaceFromMemory
- D3DXLoadSurfaceFromResource
- D3DXLoadSurfaceFromSurface
- IDirect3DDevice9::UpdateSurface
Пример 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);
Связанные темы