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.
Contoh kode berikut menunjukkan operasi yang dilakukan ComposeRects :
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)

Lihat juga

D3DDDIARG_COMPOSERECTS

D3DDDI_DEVICEFUNCS