Comment puis-je dessiner un miroir de mise en miroir de quelque chose en OpenGL?
À partir de ma compréhension est que le miroir en OpenGL, vous fondamentalement dessiner la scène, puis vous retournez tout dessiner à nouveau, à l'exception seulement de le rendre visible à travers le miroir, créant ainsi une parfaite image réfléchie dans le miroir. Mais le problème que je vois, c'est que lorsque vous faites cela, la seule miroirs qu'on peut voir d'autres miroirs sont rendus après la précédente miroirs. Donc, si j'ai rendu miroir 1 miroir 2, miroir 1 ne peut pas voir le miroir 2, mais le miroir 2 pouvez voir miroir 1. Comment puis-je efficacement miroir un miroir sans ce qui se passe?
OriginalL'auteur | 2013-12-11
Vous devez vous connecter pour publier un commentaire.
Il y a deux façons de se rendre réflexions avec plusieurs/récursive réflexions...
Rendre à une texture et d'application de la texture de la surface du miroir.
Un avantage de ceci est que vous pouvez utiliser le miroir de textures d'autres miroirs à partir de l'image précédente. Tout cela introduit un peu de retard, il ne fait pas de mal de performances lorsque vous voulez voir à travers de nombreux miroirs. Si c'est une question que vous pourriez rendre à nouveau à la réflexion des textures un peu de temps avant de l'appareil photo principal de rendu.
Vous pouvez également utiliser cette méthode si le miroir n'est pas parfaitement plane, par exemple cela fonctionne bien pour des ondulations dans l'eau. En fait, cela peut même être étendu avec le cube de cartes à l'appui approximative arbitraire réflexions.
Portail rendu où, comme vous le dites, utilisez la stencil buffer pour masquer la surface du miroir, flip la scène autour du miroir plan, et un nouveau rendu.
Miroir, le rendu est juste un cas particulier de portail de rendu. Cela peut être fait de manière récursive, mais il devient assez compliqué comme vous l'avez à gérer le tampon de profondeur correctement. Vous aurez également besoin de données spatiales de la structure de votre scène, de sorte que vous n'avez pas à faire une complète re-rendre et que rendre ce que vous pouvez voir à travers le miroir (ou il devient très lent très rapidement). Si vous allez dans cette voie, je vous suggère de le prendre lentement et inclure beaucoup de débogage visual et utiliser une interface simple et intuitive scène de test.
(Il y a beaucoup de pages sur une seule réflexion stencil buffer utiliser, mais ce n'est pas ce que vous êtes après, alors je ne vais pas la peine de l'inscription de certaines)
*Veuillez noter que ces liens sont seulement le résultat de quelques minutes de recherche sur google. N'hésitez pas à modifier et de supprimer/ajouter.
OriginalL'auteur jozxyqk
La façon la plus simple est d'utiliser le stencil buffer. Découvrez ce page.
L'idée de base est:
Si vous avez des miroirs reflétant les miroirs que vous avez à faire toutes les combinaisons possibles (d'abord rendu miroir 1, puis dans le miroir 2 en miroir 1 de la réflexion, puis afficher miroir 2 dans la scène d'origine, puis de la réflexion du miroir 1 miroir 2 de la réflexion, et ainsi de suite...).
Vous ne pouvez pas faire infini miroir réflexions avec cet algorithme (seulement un limitted montant de réflexions). Seulement de ray-tracing peut le faire.
OriginalL'auteur Sorin