Bagikan melalui


struktur D3DPRESENT_PARAMETERS

Menjelaskan parameter presentasi.

Sintaks

typedef struct D3DPRESENT_PARAMETERS {
  UINT                BackBufferWidth;
  UINT                BackBufferHeight;
  D3DFORMAT           BackBufferFormat;
  UINT                BackBufferCount;
  D3DMULTISAMPLE_TYPE MultiSampleType;
  DWORD               MultiSampleQuality;
  D3DSWAPEFFECT       SwapEffect;
  HWND                hDeviceWindow;
  BOOL                Windowed;
  BOOL                EnableAutoDepthStencil;
  D3DFORMAT           AutoDepthStencilFormat;
  DWORD               Flags;
  UINT                FullScreen_RefreshRateInHz;
  UINT                PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;

Anggota

BackBufferWidth

Jenis: UINT

Lebar buffer belakang rantai pertukaran baru, dalam piksel. Jika WindowedFALSE (presentasi layar penuh), nilai ini harus sama dengan lebar salah satu mode tampilan enumerasi yang ditemukan melalui EnumAdapterModes. Jika WindowedTRUE dan BackBufferWidth atau BackBufferHeight adalah nol, dimensi yang sesuai dari area klien hDeviceWindow (atau jendela fokus, jika hDeviceWindow adalah NULL) diambil.

BackBufferHeight

Jenis: UINT

Tinggi buffer belakang rantai pertukaran baru, dalam piksel. Jika WindowedFALSE (presentasi layar penuh), nilai ini harus sama dengan tinggi salah satu mode tampilan enumerasi yang ditemukan melalui EnumAdapterModes. Jika WindowedTRUE dan BackBufferWidth atau BackBufferHeight adalah nol, dimensi yang sesuai dari area klien hDeviceWindow (atau jendela fokus, jika hDeviceWindow adalah NULL) diambil.

BackBufferFormat

Jenis: D3DFORMAT

Format buffer belakang. Untuk informasi selengkapnya tentang format, lihat D3DFORMAT. Nilai ini harus menjadi salah satu format target render seperti yang divalidasi oleh CheckDeviceType. Anda dapat menggunakan GetDisplayMode untuk mendapatkan format saat ini.

Bahkan, D3DFMT_UNKNOWN dapat ditentukan untuk BackBufferFormat saat dalam mode berjendela. Ini memberi tahu runtime untuk menggunakan format mode tampilan saat ini dan menghilangkan kebutuhan untuk memanggil GetDisplayMode.

Untuk aplikasi berjendela, format buffer belakang tidak perlu lagi cocok dengan format mode tampilan karena konversi warna sekarang dapat dilakukan oleh perangkat keras (jika perangkat keras mendukung konversi warna). Kumpulan kemungkinan format buffer kembali dibatasi, tetapi runtime akan memungkinkan format buffer kembali yang valid disajikan ke format desktop apa pun. (Ada persyaratan tambahan bahwa perangkat dapat dioperasikan di desktop; perangkat biasanya tidak beroperasi dalam mode 8 bit per piksel.)

Aplikasi layar penuh tidak dapat melakukan konversi warna.

BackBufferCount

Jenis: UINT

Nilai ini dapat antara 0 dan D3DPRESENT_BACK_BUFFERS_MAX (atau D3DPRESENT_BACK_BUFFERS_MAX_EX saat menggunakan Direct3D 9Ex). Nilai 0 diperlakukan sebagai 1. Jika jumlah buffer kembali tidak dapat dibuat, runtime akan gagal dalam panggilan metode dan mengisi nilai ini dengan jumlah buffer belakang yang dapat dibuat. Akibatnya, aplikasi dapat memanggil metode dua kali dengan struktur D3DPRESENT_PARAMETERS yang sama dan mengharapkannya berfungsi untuk kedua kalinya.

Metode gagal jika satu buffer belakang tidak dapat dibuat. Nilai BackBufferCount memengaruhi set efek pertukaran apa yang diizinkan. Secara khusus, efek pertukaran D3DSWAPEFFECT_COPY mengharuskan ada tepat satu buffer belakang.

MultiSampleType

Jenis: D3DMULTISAMPLE_TYPE

Anggota jenis D3DMULTISAMPLE_TYPE yang dijumlahkan. Nilai harus D3DMULTISAMPLE_NONE kecuali SwapEffect telah diatur ke D3DSWAPEFFECT_DISCARD. Multisampling hanya didukung jika efek pertukaran D3DSWAPEFFECT_DISCARD.

MultiSampleQuality

Jenis: DWORD

Tingkat kualitas. Rentang yang valid adalah antara nol dan satu kurang dari tingkat yang dikembalikan oleh pQualityLevels yang digunakan oleh CheckDeviceMultiSampleType. Meneruskan nilai yang lebih besar mengembalikan kesalahan D3DERR_INVALIDCALL. Nilai yang dipasangkan dari target render atau permukaan stensil kedalaman dan D3DMULTISAMPLE_TYPE harus cocok.

SwapEffect

Jenis: D3DSWAPEFFECT

Anggota jenis enumerasi D3DSWAPEFFECT . Runtime akan menjamin semantik tersirat mengenai perilaku pertukaran buffer; oleh karena itu, jika Windowedtrue dan SwapEffect diatur ke D3DSWAPEFFECT_FLIP, runtime akan membuat satu buffer back tambahan dan menyalin mana pun yang menjadi buffer depan pada waktu presentasi.

D3DSWAPEFFECT_COPY mengharuskan BackBufferCount diatur ke 1.

D3DSWAPEFFECT_DISCARD akan diberlakukan dalam runtime debug dengan mengisi buffer apa pun dengan kebisingan setelah disajikan.

Perbedaan antara Direct3D9 dan Direct3D9Ex:

  • Di Direct3D9Ex, D3DSWAPEFFECT_FLIPEX ditambahkan untuk menentukan kapan aplikasi mengadopsi mode balik. Artinya, whan bingkai aplikasi diteruskan dalam mode jendela (bukan disalin) ke Desktop Window Manager (DWM) untuk komposisi. Mode balik menyediakan bandwidth memori yang lebih efisien dan memungkinkan aplikasi untuk memanfaatkan statistik layar penuh saat ini. Ini tidak mengubah perilaku layar penuh. Perilaku mode balik tersedia dimulai dengan Windows 7.

 

hDeviceWindow

Jenis: HWND

Jendela perangkat menentukan lokasi dan ukuran buffer belakang di layar. Ini digunakan oleh Direct3D ketika konten buffer belakang disalin ke buffer depan selama Ada.

  • Untuk aplikasi layar penuh, ini adalah handel ke jendela atas (yang merupakan jendela fokus).

    Untuk aplikasi yang menggunakan beberapa perangkat layar penuh (seperti sistem multimonitor), tepat satu perangkat dapat menggunakan jendela fokus sebagai jendela perangkat. Semua perangkat lain harus memiliki jendela perangkat yang unik.

  • Untuk aplikasi mode berjendela, handel ini akan menjadi jendela target default untuk Present. Jika handel ini NULL, jendela fokus akan diambil.

Perhatikan bahwa tidak ada upaya yang dilakukan oleh runtime untuk mencerminkan perubahan pengguna dalam ukuran jendela. Buffer belakang tidak secara implisit mengatur ulang ketika jendela ini direset. Namun, metode Sajikan secara otomatis melacak perubahan posisi jendela.

Windowed

Jenis: BOOL

TRUE jika aplikasi berjalan berjendela; FALSE jika aplikasi berjalan layar penuh.

EnableAutoDepthStencil

Jenis: BOOL

Jika nilai ini TRUE, Direct3D akan mengelola buffer kedalaman untuk aplikasi. Perangkat akan membuat buffer stensil kedalaman saat dibuat. Buffer stensil kedalaman akan secara otomatis ditetapkan sebagai target render perangkat. Ketika perangkat diatur ulang, buffer stensil kedalaman akan secara otomatis dihancurkan dan dibuat ulang dalam ukuran baru.

Jika EnableAutoDepthStencil TRUE, maka AutoDepthStencilFormat harus berupa format stensil kedalaman yang valid.

AutoDepthStencilFormat

Jenis: D3DFORMAT

Anggota jenis enumerasi D3DFORMAT . Format permukaan stensil kedalaman otomatis yang akan dibuat perangkat. Anggota ini diabaikan kecuali EnableAutoDepthStencilADALAH TRUE.

Bendera

Jenis: DWORD

Salah satu konstanta D3DPRESENTFLAG .

FullScreen_RefreshRateInHz

Jenis: UINT

Laju di mana adaptor tampilan me-refresh layar. Nilai tergantung pada mode di mana aplikasi berjalan:

  • Untuk mode berjendela, laju refresh harus 0.
  • Untuk mode layar penuh, laju refresh adalah salah satu laju refresh yang dikembalikan oleh EnumAdapterModes.

PresentationInterval

Jenis: UINT

Tingkat maksimum di mana buffer belakang rantai pertukaran dapat disajikan ke buffer depan. Untuk penjelasan terperinci tentang mode dan interval yang didukung, lihat D3DPRESENT.

Persyaratan

Persyaratan Nilai
Header
D3D9Types.h

Lihat juga

Struktur Direct3D

CreateDevice

CreateAdditionalSwapChain

Hadir

Reset