Di d3d11, Anda dapat mengikat beberapa target render ID3D11DeviceContext :: OMSetRenderTarget . Tetapi mengapa Anda ingin melakukan ini?
Di d3d11, Anda dapat mengikat beberapa target render ID3D11DeviceContext :: OMSetRenderTarget . Tetapi mengapa Anda ingin melakukan ini?
Jawaban:
Ketika beberapa target render terikat, masing-masing dapat ditulis secara individual oleh pixel shader - bukan (tentu saja) bahwa semua target render akan mendapatkan gambar yang sama. Anda dapat menulis hanya komponen merah menjadi satu output, hanya biru menjadi yang lain, dan lain-lain.
Ini digunakan ketika menerapkan render yang ditangguhkan misalnya: informasi posisi, normal, warna, dan sebagainya masing-masing ditulis ke target render mereka sendiri.
Manfaat tambahan untuk menggunakan beberapa target render, seperti dalam rendering yang ditangguhkan seperti yang disebutkan Josh, adalah bahwa Anda mengirim geometri adegan ke vertex shader hanya sekali dan menerapkannya pada output pixel shader yang berbeda, daripada mengirim kembali geometri untuk setiap output yang Anda perlu. Ini menghemat banyak waktu komputasi untuk GPU. Pertukaran untuk kinerja GPU yang lebih cepat adalah konsumsi memori buffer bingkai yang lebih tinggi.