DXGK_GDIARG_CLEARTYPEBLEND struttura (d3dkmddi.h)
La struttura DXGK_GDIARG_CLEARTYPEBLEND descrive le caratteristiche di un'operazione di fusione di pixel di testo con accelerazione hardware GDI ClearType e antialiased text blending.
Sintassi
typedef struct _DXGK_GDIARG_CLEARTYPEBLEND {
[in] RECT DstRect;
UINT TmpSurfAllocationIndex;
UINT GammaSurfAllocationIndex;
UINT AlphaSurfAllocationIndex;
UINT DstAllocationIndex;
INT DstToAlphaOffsetX;
INT DstToAlphaOffsetY;
UINT Color;
UINT Gamma;
UINT NumSubRects;
RECT *pSubRects;
UINT AlphaSurfPitch;
UINT Color2;
} DXGK_GDIARG_CLEARTYPEBLEND;
Members
[in] DstRect
Struttura RECT che definisce l'area rettangolare da modificare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di destinazione e viene definito da due punti: in alto a sinistra e in basso a destra. Il rettangolo è esclusivo in basso a destra; ovvero, i suoi bordi inferiori e destro non fanno parte del trasferimento a blocchi di bit. I due punti che definiscono il rettangolo sono sempre ordinati.
Il rettangolo di destinazione definito da DstRect può superare i limiti della superficie di destinazione, ma i sotto rettangoli non possono. Inoltre, tutti i sotto rettangoli sono garantiti per adattarsi all'interno dell'area di destinazione. I rettangoli secondari possono essere vincolati ulteriormente da un rettangolo di selezione minore del rettangolo di destinazione.
TmpSurfAllocationIndex
[in] Indice dell'elemento nell'elenco di allocazione che specifica una superficie temporanea. Questa superficie può essere usata per leggere la destinazione prima di eseguire un pixel shader.
GammaSurfAllocationIndex
[in] Indice dell'elemento nell'elenco di allocazione che specifica una tabella gamma di tipo D3DKMDT_GDISURFACETYPE. Il formato dell'allocazione di ricerca gamma è di 8 bit per pixel e la risoluzione è di 512 x 16 pixel. Ogni riga dell'allocazione contiene due tabelle: gamma e gamma inversa. Ogni tabella ha 256 voci.
AlphaSurfAllocationIndex
[in] Indice dell'elemento nell'elenco di allocazione che specifica i valori alfa di una superficie. La superficie alfa si trova nello stesso spazio di coordinate dello spazio della superficie di destinazione associato al rettangolo di destinazione DstRect .
DstAllocationIndex
[in] Indice dell'elemento nell'elenco di allocazione che specifica l'allocazione a cui fa riferimento il rettangolo di destinazione DstRect .
DstToAlphaOffsetX
[in] Offset nella direzione x che trasforma lo spazio delle coordinate del rettangolo di destinazione nello spazio di coordinate della superficie alfa.
DstToAlphaOffsetY
[in] Offset nella direzione y che trasforma lo spazio delle coordinate del rettangolo di destinazione nello spazio di coordinate alfa della superficie.
Color
[in] Colore di primo piano, in formato ARGB senza segno a 32 bit (come definito dal valore D3DDDIFMT_A8R8G8B8 dell'enumerazione D3DDDIFORMAT ), corretto per gamma.
Gamma
[in] Indice dell'elemento nell'elenco di allocazione che specifica la tabella di ricerca gamma. I valori gamma si trovano nell'intervallo di [0, 15], altrimenti gamma è 0xFFFFFFFF (il valore di D3DKM_INVALID_GAMMA_INDEX). Per altre informazioni sull'uso della gamma in ClearType blending, vedere Osservazioni.
NumSubRects
Numero di rettangoli secondari nello spazio della superficie di destinazione associato al rettangolo di destinazione DstRect .
pSubRects
Puntatore ai sotto rettangoli nello spazio di superficie di destinazione associato al rettangolo di destinazione DstRect .
AlphaSurfPitch
Il passo, in byte, della superficie alfa a cui fa riferimento AlphaSurfAllocationIndex.
Color2
[in] Colore di primo piano, in formato ARGB senza segno a 32 bit (come definito dal valore D3DDDIFMT_A8R8G8B8 dell'enumerazione D3DDDIFORMAT ), non corretto per gamma.
Commenti
Il valore di Gamma deve essere compreso nell'intervallo di [0, 15] a meno che non sia impostato su 0xFFFFFFFF (il valore di D3DKM_INVALID_GAMMA_INDEX). Il valore di Gamma è l'indice di una riga nell'allocazione gamma.
Quando gamma si trova nell'intervallo di [0, 15], viene eseguita la fusione per pixel seguente.
GammaTable = (BYTE*)GammaSurfaceAddress + Gamma * GammaSurfacePitch;
InverseGammaTable = (BYTE*)GammaSurfaceAddress + Gamma * GammaSurfacePitch + 256;
Tmp.r = GammaTable[D.r]; // red
Tmp.g = GammaTable[D.g]; // green
Tmp.b = GammaTable[D.b]; // blue
BlendColor.r = InverseGammaTable[round((Tmp.r + (Color.r - Tmp.r) * A.r / 255.0))]
BlendColor.g = InverseGammaTable[round((Tmp.g + (Color.g - Tmp.g) * A.g / 255.0))]
BlendColor.b = InverseGammaTable[round((Tmp.b + (Color.b - Tmp.b) * A.b / 255.0))]
OutputColor.a = D.a
OutputColor.r = (A.r == 0) ? D.r : (A.r == 255) ? Color2.r : BlendColor.r;
OutputColor.g = (A.g == 0) ? D.g : (A.g == 255) ? Color2.g : BlendColor.g;
OutputColor.b = (A.b == 0) ? D.b : (A.b == 255) ? Color2.b : BlendColor.b;
Quando gamma è uguale a 0xFFFFFFFF (il valore di D3DKM_INVALID_GAMMA_INDEX), viene eseguita la fusione per pixel seguente.
OutputColor.a = D.a
OutputColor.r = D.r + (Color.r - D.r) * (Color.r >= D.r ? A.r : A.g) / 255.0
OutputColor.g = D.g + (Color.g - D.g) * (Color.g >= D.g ? A.r : A.g) / 255.0
OutputColor.b = D.b + (Color.b - D.b) * (Color.b >= D.b ? A.r : A.g) / 255.0
Dove i parametri seguenti si trovano nel formato D3DDDIFMT_A8R8G8B8 definito nell'enumerazione D3DDDIFORMAT :
- Colore = colore di primo piano corretto gamma, come definito dal membro Color
- Color2 = colore di primo piano, non gamma corretto, come definito dal membro Color2
- D = colore pixel di destinazione
- A = colore della superficie alfa
Il driver miniport visualizzato deve assicurarsi che quando un componente di A è zero, il componente di output corrispondente è lo stesso del componente colore di sfondo (D).
Il driver deve inoltre assicurarsi che quando un componente di A è 0xFF, il componente di output corrispondente è lo stesso del componente colore di primo piano (Color2).
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 |
Intestazione | d3dkmddi.h (include D3dkmddi.h) |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per