структура 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 вычисляются соответственно как соотношения размеров 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 (включая D3dkmddi.h) |