структура DXGK_GDIARG_STRETCHBLT (d3dkmddi.h)
Структура DXGK_GDIARG_STRETCHBLT описывает характеристики операции передачи блочных блоков (bitblt) аппаратного ускорения GDI.
Синтаксис
typedef struct _DXGK_GDIARG_STRETCHBLT {
[in] RECT SrcRect;
[in] RECT DstRect;
[in] UINT DstAllocationIndex;
[in] UINT SrcAllocationIndex;
UINT NumSubRects;
[in] RECT *pSubRects;
union {
struct {
UINT Mode : 16;
UINT MirrorX : 1;
UINT MirrorY : 1;
};
[in] UINT Flags;
};
[in] UINT SrcPitch;
} DXGK_GDIARG_STRETCHBLT;
Члены
[in] SrcRect
Структура RECT, которая определяет прямоугольную область для копирования. Этот прямоугольник указывается в системе координат исходной поверхности и определяется двумя точками: верхним левым и нижним правым. Два пункта, определяющие прямоугольник, всегда хорошо упорядочены.
Исходный прямоугольник никогда не превысит границы исходной поверхности, поэтому он никогда не будет перевесить исходную поверхность.
Этот прямоугольник сопоставляется с прямоугольником назначения, определенным DstRect.
Дополнительные сведения см. в разделе "Примечания".
[in] DstRect
Структура RECT, которая определяет прямоугольную область для изменения. Этот прямоугольник указывается в системе координат целевой поверхности и определяется двумя точками: верхним левым и нижним правым. Прямоугольник является правым нижним правом; То есть его нижние и правые края не являются частью передачи битового блока. Два пункта, определяющие прямоугольник, всегда хорошо упорядочены.
Прямоугольник назначения, определенный DstRect, может превышать границы конечной поверхности, но вложенные прямоугольники не могут. Кроме того, все вложенные прямоугольники гарантированно помещаются внутри целевой поверхности. Вложенные прямоугольники могут быть ограничены дополнительно ограничивающим прямоугольником, который меньше, чем прямоугольник назначения.
Дополнительные сведения см. в разделе "Примечания".
[in] DstAllocationIndex
Индекс элемента в списке выделения, указывающий выделение, на которое ссылается прямоугольник назначения DstRect назначения.
[in] SrcAllocationIndex
Индекс элемента в списке выделения, указывающий выделение, на которое ссылается прямоугольник источника SrcRect.
NumSubRects
Количество вложенных прямоугольников в пространстве конечной поверхности, ограничивающегося прямоугольником DstRect целевом прямоугольнике.
[in] pSubRects
Указатель на вложенные прямоугольники в пространстве целевой поверхности, ограничивающийся прямоугольником DstRect целевом прямоугольнике.
[in] Mode
Указывает, как исходные пиксели объединяются для создания выходных пикселей в зависимости от того, заданы ли следующие значения, определенные в Wingdi.h:
Ценность | Значение |
---|---|
BLACKONWHITE | При уменьшении передачи битового блока пиксели должны объединяться с логическое действие AND. При перемещении растянутого битового блока пиксели должны реплицироваться. |
WHITEONBLACK | При уменьшении передачи битового блока пиксели должны сочетаться с логическое действие OR. При перемещении растянутого битового блока пиксели должны реплицироваться. |
Этот тип операции будет обработан только в том случае, если драйвер задал элемент SupportMonoStretchBltModes в структуре DXGK_PRESENTATIONCAPS.
[in] MirrorX
Указывает, будет ли передача растянутого битового блока выполняться в зеркальном режиме в xdirection. Этот тип операции будет обработан только в том случае, если значение MirrorX ненулевое, а драйвер задал элемент SupportMirrorStretchBlt в структуре DXGK_PRESENTATIONCAPS.
[in] MirrorY
Указывает, будет ли передача растянутого битового блока выполняться в зеркальном режиме в направлении y. Этот тип операции будет обработан только в том случае, если значение MirrorY ненулевое, а драйвер задал элемент SupportMirrorStretchBlt в структуре DXGK_PRESENTATIONCAPS.
[in] Flags
Необязательное значение UINT, которое можно использовать для отладки кода драйвера.
[in] SrcPitch
Шаг исходной поверхности в байтах.
Замечания
Коэффициенты растяжения x и y вычисляются соответственно в виде соотношений размеров x и y DstRect и SrcRect.
Режим HALFTONE и режимы STRETCH_HALFTONE, определенные в Wingdi.h, никогда не будут заданы в элементе режима. Режим COLORONCOLOR можно задать в DXGK_GDIARG_ALPHABLEND и DXGK_GDIARG_TRANSPARENTBLT структурах.
Когда вложенные прямоугольники преобразуются в исходное пространство поверхности, результат гарантированно находится в исходной поверхности. Преобразование координат вложенного прямоугольника в конечной поверхности в координаты исходной поверхности определяется следующими формулами, где
- (Xd, Yd) — это точка внутри подстановки
- (Xs, Ys) — это точка внутри исходного прямоугольника
float Ws = SrcRect.right - SrcRect.left;
float Wd = DstRect.right - DstRect.left;
int Xs = round((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left - 0.5)
OR
int Xs = truncate((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left)
float Hs = SrcRect.bottom - SrcRect.top;
float Hd = DstRect.bottom - DstRect.top;
int Ys = round((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top - 0.5)
OR
int Ys = truncate((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top)
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 7 |
заголовка | d3dkmddi.h (include D3dkmddi.h) |