структура 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 При сжатии битового блока пиксели должны быть объединены с операцией BOOLEAN 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 , никогда не будут задаваться в элементе Mode . Режим 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 (включая D3dkmddi.h)

См. также раздел

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT