PFND3DDDI_COMPOSERECTS fungsi panggilan balik (d3dumddi.h)
Fungsi ComposeRects menyusun area dua dimensi dari permukaan sumber ke permukaan tujuan.
Sintaks
PFND3DDDI_COMPOSERECTS Pfnd3dddiComposerects;
HRESULT Pfnd3dddiComposerects(
HANDLE hDevice,
const D3DDDIARG_COMPOSERECTS *unnamedParam2
)
{...}
Parameter
hDevice
Handel ke perangkat tampilan (konteks grafis).
unnamedParam2
pData [in]
Penunjuk ke struktur D3DDDIARG_COMPOSERECTS yang menentukan parameter yang digunakan untuk menyusun area persegi panjang.
Menampilkan nilai
ComposeRects mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
S_OK | Area persegi panjang berhasil disusam. |
E_OUTOFMEMORY | ComposeRects tidak dapat mengalokasikan memori yang diperlukan untuk menyelesaikannya. |
Keterangan
Batasan dan validasi berikut berlaku untuk fungsi ComposeRects :
- Driver harus mengabaikan area persegi panjang sumber yang tidak sepenuhnya berada di dalam permukaan sumber.
- Area persegi panjang tujuan--setelah menerapkan offset--bisa sebagian atau sepenuhnya di luar permukaan tujuan. Area persegi panjang tujuan dipotong jika sebagian di luar dan ditolak atau dipotong sepenuhnya jika benar-benar di luar.
- Permukaan yang sama tidak dapat ditentukan untuk sumber dan tujuan.
- Permukaan dan buffer vertex yang digunakan dengan ComposeRects tidak boleh dikunci.
- Permukaan sumber dan tujuan diformat sebagai satu bit per piksel (D3DDDIFMT_A1) saat dibuat.
- Dalam build debug, runtime Microsoft Direct3D memvalidasi bahwa deskripsi area persegi panjang sumber ada untuk setiap indeks dalam deskripsi area persegi panjang tujuan. Dalam build ritel, ComposeRects mengembalikan kesalahan jika ada indeks yang tidak valid.
- Jumlah area persegi panjang harus kurang dari 0xFFFF untuk mencegah luapan internal selama operasi matematika.
- Permukaan dan buffer vertex harus dibuat dengan menggunakan perangkat tampilan yang sama (konteks grafis).
- Memori tampilan lokal harus ditentukan untuk permukaan tujuan.
for (UINT i=0; i < COMPOSERECTS.NumDstRects; i++) {
if (i >= Size(VertexBuffer(hDstRectDescsVB)) / sizeof(D3DCOMPOSERECTDSTDESC))
Ignore the rectangle;
if (VertexBuffer(hDstRectDescsVB)[i].RectDescIndex >= Size(VertexBuffer(hSrcRectDescsVB)) / sizeof(D3DCOMPOSERECTSRCDESC))
Ignore the rectangle;
SourceRectangle = VertexBuffer(hSrcResource)[VertexBuffer(hDstRectDescsVB)[i].RectDescIndex];
DestinationRectangle.X = {VertexBuffer(hDstRectDescsVB)[i].X + COMPOSERECTS.Xoffset;
DestinationRectangle.Y = {VertexBuffer(hDstRectDescsVB)[i].Y + COMPOSERECTS.Yoffset;
DestinationRectangle.Width = SourceRectangle.Width;
DestinationRectangle.Height = SourceRectangle.Height;
Perform COMPOSERECTS.Operation for each pixel;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows. |
Target Platform | Desktop |
Header | d3dumddi.h (termasuk D3dumddi.h) |