structure DXGK_GDIARG_ALPHABLEND (d3dkmddi.h)
La structure DXGK_GDIARG_ALPHABLEND décrit les caractéristiques d’une opération de fusion alpha accélérée par le matériel GDI.
Syntaxe
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;
Membres
[in] SrcRect
Structure RECT qui définit la zone rectangulaire à copier. Ce rectangle source est spécifié dans le système de coordonnées de la surface source et est défini par deux points : en haut à gauche et en bas à droite. Les deux points qui définissent le rectangle sont toujours bien ordonnés. Ce rectangle ne dépassera jamais les limites de la surface source, de sorte qu’il ne dépassera jamais la surface source. Ce rectangle est mappé au rectangle de destination défini par DstRect. Pour plus d'informations, consultez la section Notes.
[in] DstRect
Structure RECT qui définit la zone rectangulaire à modifier. Ce rectangle est spécifié dans le système de coordonnées de la surface de destination et est défini par deux points : en haut à gauche et en bas à droite. Le rectangle est exclusif en bas à droite ; autrement dit, ses bords inférieur et droit ne font pas partie du transfert de bloc de bits. Les deux points qui définissent le rectangle sont toujours bien ordonnés.
Le rectangle de destination défini par DstRect peut dépasser les limites de la surface de destination, mais les sous-rectangles ne le peuvent pas. En outre, tous les sous-rectangles sont garantis pour s’adapter à l’intérieur de la surface de destination. Les sous-rectangles peuvent être limités davantage par un rectangle englobant plus petit que le rectangle de destination.
[in] SrcAllocationIndex
Index de l’élément dans la liste d’allocation qui spécifie l’allocation référencée par le rectangle source SrcRect .
[in] DstAllocationIndex
Index de l’élément dans la liste d’allocation qui spécifie l’allocation référencée par le rectangle de destination DstRect .
[in] NumSubRects
Nombre de sous-rectangles dans l’espace de surface de destination délimité par le rectangle de destination DstRect .
[in] pSubRects
Pointeur vers les sous-rectangles dans l’espace de surface de destination.
[in] SourceConstantAlpha
Facteur de fusion constant à appliquer à l’ensemble de la surface source. Cette valeur se situe dans la plage de [0,255], où 0 est complètement transparent et 255 est complètement opaque.
[in] SourceHasAlpha
Définit si la surface est supposée avoir un canal alpha. Si la valeur est TRUE, la surface est supposée avoir un canal alpha ; sinon, la valeur est FALSE.
[in] SrcPitch
Pitch de la surface source, en octets.
Remarques
Si une opération de transfert de bloc de bits d’étirement (bitblt) est requise, les rapports d’étirement x et y sont calculés respectivement comme les ratios des tailles x et y des membres DstRect et SrcRect , et l’opération d’étirement se poursuit comme si la valeur COLORONCOLOR dans *Wingdi.h était définie. Lors d’un transfert de bloc de bits qui diminue, suffisamment de pixels doivent être ignorés pour que les pixels n’ont pas besoin d’être combinés. Lors d’un transfert de bloc de bits étiré, les pixels doivent être répliqués.
Lorsque les sous-rectangles sont transformés en espace de surface source, le résultat est garanti à l’intérieur de la surface source. La transformation des coordonnées d’un sous-rectangle dans la surface de destination en coordonnées dans la surface source est définie par les formules suivantes, où :
- (Xd, Yd) est un point à l’intérieur du sous-rectangle
- (Xs, Ys) est un point à l’intérieur du rectangle source
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>
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 |
En-tête | d3dkmddi.h (inclure D3dkmddi.h) |