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


структура 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)

См. также

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT