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


структура DXGK_GDIARG_ALPHABLEND (d3dkmddi.h)

Структура DXGK_GDIARG_ALPHABLEND описывает характеристики операции аппаратного ускорения альфа-смешивания GDI.

Синтаксис

typedef struct _DXGK_GDIARG_ALPHABLEND {
  [in] RECT    SrcRect;
  [in] RECT    DstRect;
  [in] UINT    SrcAllocationIndex;
  [in] UINT    DstAllocationIndex;
  [in] UINT    NumSubRects;
  [in] RECT    *pSubRects;
  [in] BYTE    SourceConstantAlpha;
  [in] BOOLEAN SourceHasAlpha;
  [in] UINT    SrcPitch;
} DXGK_GDIARG_ALPHABLEND;

Члены

[in] SrcRect

Структура RECT, которая определяет прямоугольную область для копирования. Этот исходный прямоугольник указывается в системе координат исходной поверхности и определяется двумя точками: верхним левым и нижним правым. Два пункта, определяющие прямоугольник, всегда хорошо упорядочены. Этот прямоугольник никогда не превысит границы исходной поверхности, поэтому он никогда не будет перевесить исходную поверхность. Этот прямоугольник сопоставляется с прямоугольником назначения, определенным DstRect. Дополнительные сведения см. в примечаниях.

[in] DstRect

Структура RECT, которая определяет прямоугольную область для изменения. Этот прямоугольник указывается в системе координат целевой поверхности и определяется двумя точками: верхним левым и нижним правым. Прямоугольник является правым нижним правом; То есть его нижние и правые края не являются частью передачи битового блока. Два пункта, определяющие прямоугольник, всегда хорошо упорядочены.

Прямоугольник назначения, определенный DstRect, может превышать границы конечной поверхности, но вложенные прямоугольники не могут. Кроме того, все вложенные прямоугольники гарантированно помещаются внутри целевой поверхности. Вложенные прямоугольники могут быть ограничены дополнительно ограничивающим прямоугольником, который меньше, чем прямоугольник назначения.

[in] SrcAllocationIndex

Индекс элемента в списке выделения, указывающий выделение, на которое ссылается прямоугольник SrcRect исходного прямоугольника.

[in] DstAllocationIndex

Индекс элемента в списке выделения, указывающий выделение, на которое ссылается прямоугольник назначения DstRect назначения.

[in] NumSubRects

Количество вложенных прямоугольников в пространстве конечной поверхности, ограничивающегося прямоугольником DstRect целевом прямоугольнике.

[in] pSubRects

Указатель на вложенные прямоугольники в целевом пространстве поверхности.

[in] SourceConstantAlpha

Коэффициент константного смешения, применяемый ко всей исходной поверхности. Это значение находится в диапазоне [0,255], где 0 является полностью прозрачным и 255 полностью непрозрачным.

[in] SourceHasAlpha

Определяет, имеет ли поверхность альфа-канал. Если TRUE, предполагается, что поверхность имеет альфа-канал; в противном случае значение равно FALSE.

[in] SrcPitch

Шаг исходной поверхности в байтах.

Замечания

Если требуется операция передачи растянутого битового блока (bitblt), коэффициенты x и y stretch вычисляются соответственно в виде соотношений размер ов x и y DstRect и SrcRect элементов, и операция растяжения будет продолжаться, как если бы задано значение COLORONCOLOR в *Wingdi.h. При уменьшении передачи битового блока достаточно пикселей следует игнорировать, чтобы пиксели не должны объединяться. При перемещении растянутого битового блока пиксели должны реплицироваться.

Когда вложенные прямоугольники преобразуются в исходное пространство поверхности, результат гарантированно находится в исходной поверхности. Преобразование координат вложенного прямоугольника в конечной поверхности в координаты исходной поверхности определяется следующими формулами:

  • (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)</code></pre>

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 7
заголовка d3dkmddi.h (include D3dkmddi.h)

См. также

RECT