Dans d3d11, vous pouvez lier plusieurs cibles de rendu ID3D11DeviceContext :: OMSetRenderTargets . Mais pourquoi voudriez-vous faire cela?
Dans d3d11, vous pouvez lier plusieurs cibles de rendu ID3D11DeviceContext :: OMSetRenderTargets . Mais pourquoi voudriez-vous faire cela?
Réponses:
Lorsque plusieurs cibles de rendu sont liées, elles peuvent chacune être écrites individuellement par le pixel shader - il n'est pas (nécessairement) le cas que toutes les cibles de rendu obtiennent la même image. Vous pouvez écrire uniquement le composant rouge dans une sortie, uniquement le bleu dans une autre, et cetera.
Ceci est utilisé lors de l'implémentation du rendu différé, par exemple: les informations de position, de normal, de couleur et ainsi de suite sont écrites chacune sur leur propre cible de rendu.
L'avantage supplémentaire d'utiliser plusieurs cibles de rendu, comme dans le rendu différé comme l'a mentionné Josh, est que vous n'envoyez la géométrie de la scène au vertex shader qu'une seule fois et ne l'appliquez à différentes sorties pixel shader, au lieu de renvoyer la géométrie pour chaque sortie que vous avoir besoin. Cela économise beaucoup de temps de calcul pour le GPU. Le compromis pour des performances GPU plus rapides est une consommation plus élevée de mémoire tampon de trame.