Comme exercice d'apprentissage, j'ai écrit un moteur de rendu différé. Maintenant, j'aimerais ajouter un graphique de scène à ce moteur, mais je suis un peu perplexe sur la façon de procéder.
Sur un moteur normal (moteur de rendu vers l'avant), j'ajouterais simplement tous les éléments (tous implémentant IDrawable et IUpdateAble) à mon graphique de scène, puis parcourez d'abord l'étendue du graphique de scène et appelez Draw () partout.
Cependant, dans un moteur de rendu différé, je dois séparer les appels de tirage. Je dois d'abord dessiner la géométrie, puis les lanceurs d'ombres et ensuite les lumières (toutes vers différentes cibles de rendu), avant de les combiner toutes. Dans ce cas, je ne peux pas simplement parcourir le graphique de la scène et appeler simplement draw. De la façon dont je le vois, je dois soit parcourir le graphique de la scène entière 3 fois, vérifier le type d'objet à dessiner, soit créer 3 graphiques de scène distincts qui sont en quelque sorte connectés les uns aux autres. Ces deux solutions semblent médiocres, je voudrais gérer des objets de scène plus transparents.
Une autre solution à laquelle j'ai pensé était de parcourir le graphique de la scène comme d'habitude et d'ajouter des éléments à 3 listes distinctes, de séparer la géométrie, les roulettes d'ombre et les lumières, puis d'itérer ces listes pour dessiner les bonnes choses, est-ce mieux et est-ce sage de repeupler 3 listes à chaque trame?