struktur DXGK_GDIARG_STRETCHBLT (d3dkmddi.h)
Struktur DXGK_GDIARG_STRETCHBLT menjelaskan karakteristik operasi transfer blok bit (bitblt) yang dipercepat perangkat keras GDI.
Sintaks
typedef struct _DXGK_GDIARG_STRETCHBLT {
[in] RECT SrcRect;
[in] RECT DstRect;
[in] UINT DstAllocationIndex;
[in] UINT SrcAllocationIndex;
UINT NumSubRects;
[in] RECT *pSubRects;
union {
struct {
UINT Mode : 16;
UINT MirrorX : 1;
UINT MirrorY : 1;
};
[in] UINT Flags;
};
[in] UINT SrcPitch;
} DXGK_GDIARG_STRETCHBLT;
Anggota
[in] SrcRect
Struktur RECT yang menentukan area persegi panjang yang akan disalin. Persegi panjang ini ditentukan dalam sistem koordinat permukaan sumber dan didefinisikan oleh dua titik: kiri atas dan kanan bawah. Dua titik yang menentukan persegi panjang selalu diurutkan dengan baik.
Persegi panjang sumber tidak akan pernah melebihi batas permukaan sumber, sehingga tidak akan pernah menimpa permukaan sumber.
Persegi panjang ini dipetakan ke persegi tujuan yang ditentukan oleh DstRect.
Untuk informasi lebih lanjut, lihat bagian Keterangan.
[in] DstRect
Struktur RECT yang menentukan 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 blok bit. 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 panjang tidak dapat. Selain itu, semua sub-persegi panjang dijamin pas di dalam permukaan tujuan. Sub-persegi panjang dapat dibatasi lebih lanjut oleh persegi panjang pembatas yang lebih kecil dari persegi panjang tujuan.
Untuk informasi lebih lanjut, lihat bagian Keterangan.
[in] DstAllocationIndex
Indeks elemen dalam daftar alokasi yang menentukan alokasi yang direferensikan oleh persegi tujuan DstRect .
[in] SrcAllocationIndex
Indeks elemen dalam daftar alokasi yang menentukan alokasi yang direferensikan oleh persegi sumber SrcRect.
NumSubRects
Jumlah sub-persegi panjang di ruang permukaan tujuan yang dibatasi oleh persegi tujuan DstRect .
[in] pSubRects
Penunjuk ke sub-persegi di ruang permukaan tujuan yang dibatasi oleh persegi tujuan DstRect .
[in] Mode
Menentukan bagaimana piksel sumber digabungkan untuk menghasilkan piksel output berdasarkan apakah nilai berikut yang ditentukan dalam Wingdi.h diatur:
Nilai | Makna |
---|---|
BLACKONWHITE | Pada transfer bit-block yang menyusut, piksel harus dikombinasikan dengan operasi Boolean AND. Pada transfer blok bit yang membentang, piksel harus direplikasi. |
WHITEONBLACK | Pada transfer bit-block yang menyusut, piksel harus dikombinasikan dengan operasi Boolean OR. Pada transfer blok bit yang membentang, piksel harus direplikasi. |
Jenis operasi ini akan diproses hanya jika driver telah mengatur anggota SupportMonoStretchBltModes dalam struktur DXGK_PRESENTATIONCAPS .
[in] MirrorX
Menentukan apakah transfer blok bit stretch akan dilakukan dalam mode cermin dalam xdirection. Jenis operasi ini akan diproses hanya jika nilai MirrorX bukan nol dan driver telah mengatur anggota SupportMirrorStretchBlt dalam struktur DXGK_PRESENTATIONCAPS .
[in] MirrorY
Menentukan apakah transfer blok bit peregangan akan dilakukan dalam mode cermin ke arah y. Jenis operasi ini akan diproses hanya jika nilai MirrorY bukan nol dan driver telah mengatur anggota SupportMirrorStretchBlt dalam struktur DXGK_PRESENTATIONCAPS .
[in] Flags
Nilai UINT opsional yang dapat digunakan untuk men-debug kode driver.
[in] SrcPitch
Pitch permukaan sumber, dalam byte.
Keterangan
Rasio peregangan x dan y dihitung masing-masing sebagai rasio ukuran x dan y anggota DstRect dan SrcRect .
Mode HALFTONE dan mode STRETCH_HALFTONE yang ditentukan dalam Wingdi.h tidak akan pernah diatur dalam anggota Mode . Mode COLORONCOLOR dapat diatur dalam struktur DXGK_GDIARG_ALPHABLEND dan DXGK_GDIARG_TRANSPARENTBLT .
Ketika sub-persegi panjang diubah ke ruang permukaan sumber, hasilnya dijamin berada di dalam permukaan sumber. Transformasi koordinat sub-persegi panjang di permukaan tujuan ke koordinat di permukaan sumber ditentukan oleh rumus berikut, di mana
- (Xd, Yd) adalah titik di dalam sub-persegi
- (Xs, Ys) adalah titik di dalam persegi panjang sumber
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)
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 |
Header | d3dkmddi.h (termasuk D3dkmddi.h) |