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 : supérieur gauche et inférieur droit. Les deux points qui définissent le rectangle sont toujours bien classé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 les remarques.
[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 : supérieur gauche et inférieur droit. 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 classés.
Le rectangle de destination défini par DstRect peut dépasser les limites de la surface de destination, mais les sous-rectangles ne 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 contraints plus loin 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 rectangle de destination.
[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 trouve 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 TRUE, la surface est supposée avoir un canal alpha ; sinon, la valeur est FALSE.
[in] SrcPitch
Hauteur de l’aire source, en octets.
Remarques
Si une opération de transfert de bloc de bits étendu (bitblt) est requise, les ratios d’étirement x et y sont calculés respectivement comme les ratios des tailles x et y des tailles des DstRect et SrcRect membres, et l’opération d’étirement se poursuit comme si la valeur COLORONCOLOR dans *Wingdi.h est définie. Sur un transfert de bloc de bits réduit, suffisamment de pixels doivent être ignorés afin que les pixels n’ont pas besoin d’être combinés. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.
Lorsque des sous-rectangles sont transformés en espace de surface source, le résultat est garanti dans 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>
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 7 |
d’en-tête | d3dkmddi.h (include D3dkmddi.h) |