struktur DXGK_GDIARG_CLEARTYPEBLEND (d3dkmddi.h)
Struktur DXGK_GDIARG_CLEARTYPEBLEND menjelaskan karakteristik ClearType yang dipercepat perangkat keras GDI dan operasi perpaduan piksel teks antialisi.
Sintaks
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;
Anggota
[in] DstRect
Struktur RECT yang mendefinisikan area persegi panjang yang akan dimodifikasi. Persegi panjang ini ditentukan dalam sistem koordinat permukaan tujuan dan didefinisikan oleh dua titik: kiri atas dan kanan bawah. Persegi panjang eksklusif kanan bawah; artinya, tepi bawah dan kanannya bukan bagian dari transfer bit-block. Dua titik yang menentukan persegi panjang selalu diurutkan dengan baik.
Persegi panjang tujuan yang ditentukan oleh DstRect dapat melebihi batas permukaan tujuan, tetapi sub-persegi tidak dapat. Selain itu, semua sub-persegi panjang dijamin pas di dalam permukaan tujuan. Sub-persegi dapat dibatasi lebih lanjut oleh persegi panjang pembatas yang lebih kecil dari persegi panjang tujuan.
TmpSurfAllocationIndex
[in] Indeks elemen dalam daftar alokasi yang menentukan permukaan sementara. Permukaan ini dapat digunakan untuk membaca tujuan sebelum mengeksekusi shader piksel.
GammaSurfAllocationIndex
[in] Indeks elemen dalam daftar alokasi yang menentukan tabel gamma jenis D3DKMDT_GDISURFACETYPE. Format alokasi pencarian gamma adalah 8 bit per piksel, dan resolusinya adalah 512 x 16 piksel. Setiap baris alokasi berisi dua tabel: gamma dan gamma terbalik. Setiap tabel memiliki 256 entri.
AlphaSurfAllocationIndex
[in] Indeks elemen dalam daftar alokasi yang menentukan nilai alfa permukaan. Permukaan alfa berada di ruang koordinat yang sama dengan ruang permukaan tujuan yang dibatasi oleh persegi panjang tujuan DstRect .
DstAllocationIndex
[in] Indeks elemen dalam daftar alokasi yang menentukan alokasi yang direferensikan oleh persegi panjang tujuan DstRect .
DstToAlphaOffsetX
[in] Offset ke arah x yang mengubah ruang koordinat persegi panjang tujuan ke ruang koordinat permukaan alfa.
DstToAlphaOffsetY
[in] Offset ke arah y yang mengubah ruang koordinat persegi panjang tujuan ke ruang koordinat permukaan alfa.
Color
[in] Warna latar depan, dalam format piksel ARGB 32-bit yang tidak ditandatangani (sebagaimana didefinisikan oleh nilai D3DDDIFMT_A8R8G8B8 enumerasi D3DDDIFORMAT ), dikoreksi untuk gamma.
Gamma
[in] Indeks elemen dalam daftar alokasi yang menentukan tabel pencarian gamma. Nilai Gamma berada dalam rentang [0, 15], jika tidak, gamma 0xFFFFFFFF (nilai D3DKM_INVALID_GAMMA_INDEX). Lihat Keterangan untuk informasi selengkapnya tentang bagaimana gamma digunakan dalam blending ClearType.
NumSubRects
Jumlah sub-persegi panjang di ruang permukaan tujuan yang dibatasi oleh persegi panjang tujuan DstRect .
pSubRects
Penunjuk ke sub-persegi di ruang permukaan tujuan yang dibatasi oleh persegi panjang tujuan DstRect .
AlphaSurfPitch
Nada, dalam byte, dari permukaan alfa yang dirujuk oleh AlphaSurfAllocationIndex.
Color2
[in] Warna latar depan, dalam format piksel ARGB 32-bit yang tidak ditandatangani (sebagaimana didefinisikan oleh nilai D3DDDIFMT_A8R8G8B8 enumerasi D3DDDIFORMAT ), tidak diperbaiki untuk gamma.
Keterangan
Nilai Gamma harus dalam rentang [0, 15] kecuali diatur ke 0xFFFFFFFF (nilai D3DKM_INVALID_GAMMA_INDEX). Nilai Gamma adalah indeks baris dalam alokasi gamma.
Ketika gamma berada di kisaran [0, 15], penpaduan per piksel berikut dilakukan.
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;
Saat gamma sama dengan 0xFFFFFFFF (nilai D3DKM_INVALID_GAMMA_INDEX), penpaduan per piksel berikut dilakukan.
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
Di mana parameter berikut berada dalam format D3DDDIFMT_A8R8G8B8 yang ditentukan dalam enumerasi D3DDDIFORMAT :
- Warna = warna latar depan yang dikoreksi gamma, seperti yang didefinisikan oleh anggota Warna
- Color2 = warna latar depan, bukan gamma dikoreksi, seperti yang didefinisikan oleh anggota Color2
- D = warna piksel tujuan
- A = warna permukaan alfa
Driver miniport tampilan harus memastikan bahwa ketika komponen A adalah nol, komponen output yang sesuai sama dengan komponen warna latar belakang (D).
Driver juga harus memastikan bahwa ketika komponen A 0xFF, komponen output yang sesuai sama dengan komponen warna latar depan (Color2).
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 |
Header | d3dkmddi.h (termasuk D3dkmddi.h) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk