METODE ID3D11DeviceContext::OMSetRenderTargets (d3d11.h)
Ikat satu atau beberapa target render secara atomik dan buffer stensil kedalaman ke tahap output-merger.
Sintaks
void OMSetRenderTargets(
[in] UINT NumViews,
[in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
[in, optional] ID3D11DepthStencilView *pDepthStencilView
);
Parameter
[in] NumViews
Jenis: UINT
Jumlah target render untuk mengikat (rentang antara 0 dan D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Jika parameter ini bukan nol, jumlah entri dalam array yang titik ppRenderTargetViews harus sama dengan angka dalam parameter ini.
[in, optional] ppRenderTargetViews
Jenis: ID3D11RenderTargetView*
Penunjuk ke array ID3D11RenderTargetView yang mewakili target render untuk mengikat perangkat. Jika parameter ini adalah NULL dan NumViews adalah 0, tidak ada target render yang terikat.
[in, optional] pDepthStencilView
Jenis: ID3D11DepthStencilView*
Penunjuk ke ID3D11DepthStencilView yang mewakili tampilan stensil kedalaman untuk mengikat perangkat. Jika parameter ini NULL, tampilan stensil kedalaman tidak terikat.
Nilai kembali
Tidak ada
Keterangan
Jumlah maksimum target render aktif yang dapat diaktifkan perangkat pada waktu tertentu diatur oleh #define di D3D11.h yang disebut D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. Tidak valid untuk mencoba mengatur subsumber daya yang sama ke beberapa slot target render. Target render apa pun yang tidak ditentukan oleh panggilan ini diatur ke NULL.
Jika ada subsumber daya yang saat ini terikat untuk membaca dalam tahap atau penulisan yang berbeda (mungkin di bagian yang berbeda dari alur), titik ikat tersebut akan diatur ke NULL, untuk mencegah sub sumber daya yang sama dibaca dan ditulis secara bersamaan dalam satu operasi penyajian.
Metode ini akan menyimpan referensi ke antarmuka yang diteruskan. Ini berbeda dari perilaku status perangkat di Direct3D 10.
Jika tampilan target render dibuat dari jenis sumber daya array, semua tampilan target render harus memiliki ukuran array yang sama.
Pembatasan ini juga berlaku untuk tampilan stensil kedalaman, ukuran arraynya harus cocok dengan tampilan target render yang terikat.
Shader piksel harus dapat dirender secara bersamaan ke setidaknya delapan target render terpisah. Semua target render ini harus mengakses jenis sumber daya yang sama: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, atau TextureCube. Semua target render harus memiliki ukuran yang sama di semua dimensi (lebar dan tinggi, dan kedalaman untuk ukuran 3D atau array untuk *Jenis array). Jika target render menggunakan anti-aliasing multisample, semua target render terikat dan buffer kedalaman harus berupa sumber daya multisample yang sama (artinya, jumlah sampel harus sama). Setiap target render dapat memiliki format data yang berbeda. Format target render ini tidak diperlukan untuk memiliki jumlah bit-per-elemen yang identik.
Setiap kombinasi dari delapan slot untuk target render dapat memiliki set target render atau tidak diatur.
Tampilan sumber daya yang sama tidak dapat terikat ke beberapa slot target render secara bersamaan. Namun, Anda dapat mengatur beberapa tampilan sumber daya yang tidak tumpang tindih dari satu sumber daya sebagai beberapa target render secara bersamaan.
Perhatikan bahwa tidak seperti beberapa metode sumber daya lain di Direct3D, semua target render yang saat ini terikat akan tidak terikat dengan memanggil OMSetRenderTargets(0, nullptr, nullptr);
.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d3d11.h |
Pustaka | D3D11.lib |