Metode IDirect3DSwapChain9::P resent (d3d9helper.h)

Menyajikan konten buffer berikutnya dalam urutan buffer belakang yang dimiliki oleh rantai pertukaran.

Sintaks

HRESULT Present(
  [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 persegi panjang sumber (lihat RECT). Gunakan NULL untuk menyajikan seluruh permukaan. Nilai ini harus NULL kecuali rantai pertukaran dibuat dengan D3DSWAPEFFECT_COPY. Jika persegi panjang melebihi permukaan sumber, persegi panjang dipotong ke permukaan sumber.

[in] pDestRect

Jenis: const RECT*

Penunjuk ke persegi panjang tujuan dalam koordinat klien (lihat RECT). Nilai ini harus NULL kecuali rantai pertukaran dibuat dengan D3DSWAPEFFECT_COPY. Gunakan NULL untuk mengisi seluruh area klien. Jika persegi melebihi area klien tujuan, persegi panjang dipotong ke area klien tujuan.

[in] hDestWindowOverride

Jenis: HWND

Jendela tujuan yang area kliennya diambil sebagai target untuk presentasi ini. Jika nilai ini ADALAH NULL, runtime menggunakan anggota D3DPRESENT_PARAMETERS hDeviceWindow untuk presentasi.

[in] pDirtyRegion

Jenis: const RGNDATA*

Nilai ini harus NULL kecuali rantai pertukaran dibuat dengan D3DSWAPEFFECT_COPY. Lihat Membalik Permukaan (Direct3D 9).

Jika nilai ini bukan NULL, wilayah yang terkandung dinyatakan dalam koordinat buffer belakang. Persegi panjang dalam wilayah adalah set piksel minimal yang perlu diperbarui. Metode ini memperhitungkan persegi panjang ini saat mengoptimalkan presentasi dengan hanya menyalin piksel dalam wilayah, atau beberapa set persegi panjang yang diperluas yang cocok. 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 D3DPRESENT_DONOTWAIT atau D3DPRESENT_LINEAR_CONTENT.

  • Jika dwFlags = 0, metode ini berprilaku seperti yang dilakukan sebelum Direct3D 9. Ada akan berputar sampai perangkat keras bebas, tanpa mengembalikan kesalahan.
  • Jika dwFlags = D3DPRESENT_DONOTWAIT, dan perangkat keras sibuk memproses atau menunggu interval sinkronisasi vertikal, metode akan mengembalikan D3DERR_WASSTILLDRAWING.
  • 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)). Aplikasi harus menentukan bendera ini jika format backbuffer adalah titik mengambang 16-bit untuk mencocokkan mode berjendela yang ada dengan perilaku gamma layar penuh.

Mengembalikan nilai

Jenis: HRESULT

Jika metode berhasil, nilai yang dikembalikan adalah D3D_OK. Jika metode gagal, nilai yang dikembalikan dapat berupa salah satu hal berikut: D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.

Keterangan

Metode Sajikan adalah pintasan untuk Menyajikan. Ada telah diperbarui untuk mengambil bendera yang memungkinkan aplikasi untuk meminta agar metode segera kembali ketika driver melaporkan bahwa ia tidak dapat menjadwalkan presentasi.

Jika perlu, operasi peregangan diterapkan untuk mentransfer piksel dalam persegi panjang sumber ke persegi panjang tujuan di area klien jendela target.

Ada akan gagal jika dipanggil antara pasangan BeginScene dan EndScene kecuali target render bukan target render saat ini (seperti buffer belakang yang Anda dapatkan dari membuat rantai pertukaran tambahan). Ini adalah perilaku baru untuk Direct3D 9.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d9helper.h (termasuk D3D9.h)
Pustaka D3D9.lib

Lihat juga

IDirect3DSwapChain9

Atur ulang