Bagikan melalui


Metode IDirect3DDevice9Ex::P resentEx (d3d9.h)

Tukar buffer berikutnya swapchain dengan buffer depan.

Sintaks

HRESULT PresentEx(
  [in] const RECT    *pSourceRect,
  [in] const RECT    *pDestRect,
  [in] HWND          hDestWindowOverride,
  [in] const RGNDATA *pDirtyRegion,
  [in] DWORD         dwFlags
);

Parameter

[in] pSourceRect

Jenis: const RECT*

Penunjuk ke struktur RECT yang menunjukkan wilayah pada permukaan sumber untuk disalin dalam koordinat klien jendela. Hanya berlaku ketika swapchain dibuat dengan bendera D3DSWAPEFFECT_COPY . Jika NULL, seluruh permukaan sumber disajikan. Jika persegi panjang melebihi permukaan sumber, persegi panjang tersebut akan terpotong ke permukaan sumber.

[in] pDestRect

Jenis: const RECT*

Struktur Pointer to RECT yang menunjukkan wilayah target pada permukaan tujuan dalam koordinat klien jendela. Hanya berlaku ketika swapchain dibuat dengan bendera D3DSWAPEFFECT_COPY . Jika NULL, seluruh area klien diisi. Jika persegi melebihi area klien tujuan, persegi panjang akan dipotong ke area klien tujuan.

[in] hDestWindowOverride

Jenis: HWND

Penunjuk ke jendela tujuan yang area kliennya diambil sebagai target untuk presentasi ini. Jika nilai ini NULL, runtime menggunakan anggota hDeviceWindowdari D3DPRESENT_PARAMETERS untuk presentasi.

Catatan Jika Anda membuat rantai pertukaran dengan D3DSWAPEFFECT_FLIPEX, Anda harus meneruskan NULL ke hDestWindowOverride
 

[in] pDirtyRegion

Jenis: const RGNDATA*

Penunjuk ke struktur RGNDATA yang menunjukkan set piksel terkecil yang perlu ditransfer. Nilai ini harus NULL kecuali swapchain dibuat dengan bendera D3DSWAPEFFECT_COPY . Untuk informasi selengkapnya tentang swapchain, lihat Membalik Permukaan (Direct3D 9).

Jika nilai ini non-NULL, wilayah yang terkandung dinyatakan dalam koordinat buffer belakang. Metode ini memperhitungkan persegi panjang ini saat mengoptimalkan presentasi dengan hanya menyalin piksel dalam wilayah, atau beberapa set persegi panjang yang diperluas yang sesuai. Ini adalah bantuan untuk pengoptimalan saja, dan aplikasi tidak boleh mengandalkan wilayah yang disalin dengan tepat. Implementasi dapat memilih untuk menyalin seluruh persegi panjang sumber.

[in] dwFlags

Jenis: DWORD

Memungkinkan aplikasi untuk meminta agar metode segera kembali ketika driver melaporkan bahwa ia tidak dapat menjadwalkan presentasi. Nilai yang valid adalah 0, atau kombinasi bendera D3DPRESENT apa pun.

  • Jika dwFlags = 0, metode ini bereaksi seperti yang dilakukan sebelum Direct3D 9. Ada akan berputar sampai perangkat keras bebas, tanpa mengembalikan kesalahan.
  • Jika dwFlags = D3DPRESENT_DONOTFLIP driver tampilan dipanggil dengan buffer depan sebagai permukaan sumber dan target. Driver merespons dengan menjadwalkan sinkronisasi bingkai, tetapi tidak mengubah permukaan yang ditampilkan. Bendera ini hanya tersedia dalam mode layar penuh atau saat menggunakan D3DSWAPEFFECT_FLIPEX dalam mode berjendela.
  • Jika dwFlags = D3DPRESENT_DONOTWAIT, dan perangkat keras sibuk memproses atau menunggu interval sinkronisasi vertikal, metode akan mengembalikan D3DERR_WASSTILLDRAWING.
  • Jika dwFlags = D3DPRESENT_FORCEIMMEDIATE, D3DPRESENT_INTERVAL_IMMEDIATE diberlakukan pada panggilan Saat ini. Bendera ini hanya dapat ditentukan saat menggunakan D3DSWAPEFFECT_FLIPEX. Perilaku ini sama untuk mode berjendela dan layar penuh.
  • Jika dwFlags = D3DPRESENT_LINEAR_CONTENT, koreksi gamma dilakukan dari ruang linier ke sRGB untuk rantai pertukaran berjendela. Bendera ini hanya akan berlaku ketika driver mengekspos D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (lihat Gamma (Direct3D 9)).

Mengembalikan nilai

Jenis: HRESULT

Kemungkinan nilai yang dikembalikan meliputi: S_OK, D3DERR_DEVICELOST, D3DERR_DEVICEHUNG, D3DERR_DEVICEREMOVED, atau D3DERR_OUTOFVIDEOMEMORY (lihat D3DERR). Lihat Perubahan Perilaku Perangkat yang Hilang untuk informasi selengkapnya tentang perangkat yang hilang, digantung, dan dihapus.

Perbedaan antara Direct3D 9 dan Direct3D 9Ex:

D3DSWAPEFFECT_FLIPEX hanya tersedia di Direct3D9Ex yang berjalan pada Windows 7 (atau lebih sistem operasi saat ini).

Keterangan

Mirip dengan Metode IDirect3DDevice9::P resent , PresentEx menambahkan parameter dwflags.

Ketika swapchain dibuat dengan bendera D3DSWAPEFFECT_FLIPEX , nilai pSourceRect, pDestRect , dan pDirtyRegion harus diatur ke NULL.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d9.h
Pustaka D3D9.lib

Lihat juga

IDirect3DDevice9Ex