METODE IDXGISwapChain::ResizeBuffers (dxgi.h)

Mengubah ukuran buffer belakang rantai pertukaran, format, dan jumlah buffer. Ini harus dipanggil ketika jendela aplikasi diubah ukurannya.

Sintaks

HRESULT ResizeBuffers(
  UINT        BufferCount,
  UINT        Width,
  UINT        Height,
  DXGI_FORMAT NewFormat,
  UINT        SwapChainFlags
);

Parameter

BufferCount

Jenis: UINT

Jumlah buffer dalam rantai pertukaran (termasuk semua buffer belakang dan depan). Jumlah ini bisa berbeda dari jumlah buffer yang Anda buat rantai pertukarannya. Jumlah ini tidak boleh lebih besar dari DXGI_MAX_SWAP_CHAIN_BUFFERS. Atur angka ini ke nol untuk mempertahankan jumlah buffer yang ada dalam rantai pertukaran. Anda tidak dapat menentukan kurang dari dua buffer untuk model presentasi balik.

Width

Jenis: UINT

Lebar baru buffer belakang. Jika Anda menentukan nol, DXGI akan menggunakan lebar area klien jendela target. Anda tidak dapat menentukan lebar sebagai nol jika Anda memanggil metode IDXGIFactory2::CreateSwapChainForComposition untuk membuat rantai pertukaran untuk permukaan komposisi.

Height

Jenis: UINT

Tinggi baru buffer belakang. Jika Anda menentukan nol, DXGI akan menggunakan tinggi area klien jendela target. Anda tidak dapat menentukan tinggi sebagai nol jika Anda memanggil metode IDXGIFactory2::CreateSwapChainForComposition untuk membuat rantai pertukaran untuk permukaan komposisi.

NewFormat

Jenis: DXGI_FORMAT

Nilai yang diketik DXGI_FORMAT untuk format baru buffer belakang. Atur nilai ini ke DXGI_FORMAT_UNKNOWN untuk mempertahankan format buffer belakang yang ada. Model presentasi balik mendukung serangkaian format yang lebih terbatas daripada model transfer blok bit (bitblt).

SwapChainFlags

Jenis: UINT

Kombinasi nilai DXGI_SWAP_CHAIN_FLAG-jenis yang digabungkan dengan menggunakan operasi OR bitwise. Nilai yang dihasilkan menentukan opsi untuk perilaku swap-chain.

Menampilkan nilai

Jenis: HRESULT

Mengembalikan S_OK jika berhasil; kode kesalahan jika tidak. Untuk daftar kode kesalahan, lihat DXGI_ERROR.

Keterangan

Anda tidak dapat mengubah ukuran rantai pertukaran kecuali Anda merilis semua referensi yang luar biasa ke buffer belakangnya. Anda harus merilis semua referensi langsung dan tidak langsung pada buffer belakang agar ResizeBuffers berhasil.

Referensi langsung dipegang oleh aplikasi setelah memanggil AddRef pada sumber daya.

Referensi tidak langsung dipegang oleh tampilan ke sumber daya, mengikat tampilan sumber daya ke konteks perangkat, daftar perintah yang menggunakan sumber daya, daftar perintah yang menggunakan tampilan ke sumber daya tersebut, daftar perintah yang menjalankan daftar perintah lain yang menggunakan sumber daya, dan sebagainya.

Sebelum Anda memanggil ResizeBuffers, pastikan bahwa aplikasi merilis semua referensi (dengan memanggil jumlah pemanggilan Rilis yang sesuai) pada sumber daya, tampilan apa pun ke sumber daya, dan daftar perintah apa pun yang menggunakan sumber daya atau tampilan, dan pastikan bahwa sumber daya atau tampilan masih terikat ke konteks perangkat. Anda dapat menggunakan ID3D11DeviceContext::ClearState untuk memastikan bahwa semua referensi dirilis. Jika tampilan terikat ke konteks yang ditangguhkan, Anda juga harus membuang daftar perintah yang dibuat sebagian (dengan memanggil ID3D11DeviceContext::ClearState, lalu ID3D11DeviceContext::FinishCommandList, lalu Rilis pada daftar perintah). Setelah memanggil ResizeBuffers, Anda dapat mengkueri ulang antarmuka melalui IDXGISwapChain::GetBuffer.

Untuk rantai pertukaran yang Anda buat dengan DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE, sebelum Anda memanggil ResizeBuffers, panggil juga IDXGISurface1::ReleaseDC pada permukaan buffer belakang rantai pertukaran untuk memastikan bahwa Anda tidak memiliki konteks perangkat GDI (DC) yang luar biasa terbuka.

Kami menyarankan agar Anda memanggil ResizeBuffers saat jendela klien diubah ukurannya (yaitu, saat aplikasi menerima pesan WM_SIZE).

Satu-satunya perbedaan antara IDXGISwapChain::ResizeBuffers di Windows 8 versus Windows 7 adalah dengan membalik rantai pertukaran model presentasi yang Anda buat dengan kumpulan nilai DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL atau DXGI_SWAP_EFFECT_FLIP_DISCARD. Di Windows 8, Anda harus memanggil ResizeBuffers untuk mewujudkan transisi antara mode layar penuh dan mode berjendela; jika tidak, panggilan Anda berikutnya ke metode IDXGISwapChain::P resent gagal.

Persyaratan

   
Target Platform Windows
Header dxgi.h
Pustaka DXGI.lib

Lihat juga

IDXGISwapChain