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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk