In d3d11, è possibile associare più destinazioni di rendering ID3D11DeviceContext :: OMSetRenderTargets . Ma perché dovresti farlo?
In d3d11, è possibile associare più destinazioni di rendering ID3D11DeviceContext :: OMSetRenderTargets . Ma perché dovresti farlo?
Risposte:
Quando sono associate più destinazioni di rendering, ognuna può essere scritta individualmente dal pixel shader: non è (necessariamente) il caso in cui tutte le destinazioni di rendering avranno la stessa immagine. Potresti scrivere solo il componente rosso in un output, solo il blu in un altro, eccetera.
Questo viene utilizzato quando si implementa il rendering differito, ad esempio: le informazioni relative a posizione, normale, colore, eccetera sono scritte sulla propria destinazione di rendering.
Il vantaggio aggiuntivo dell'utilizzo di più target di rendering, come nel rendering differito come menzionato da Josh, è che si invia la geometria della scena allo shader di vertice una sola volta e la si applica a diversi output di pixel shader, anziché inviare nuovamente la geometria per ogni output bisogno. Ciò consente di risparmiare molto tempo di calcolo per la GPU. Il compromesso per prestazioni della GPU più veloci è il consumo maggiore di memoria buffer dei frame.