Disons que j'ai une application (les détails de l'application ne devraient pas poser de problème pour résoudre le problème). Au lieu de rendre à l'écran, je suis en quelque sorte en mesure de forcer l'application à rendre à un objet framebuffer au lieu de rendre à l'écran (jouer avec glew ou intercepter un appel dans une DLL).Application d'un shader à un objet framebuffer pour obtenir un effet fisheye
Une fois que l'application a rendu son contenu au FBO, est-il possible d'appliquer un shader au contenu du FB? Mes connaissances sont limitées ici, donc d'après ce que je comprends à ce stade toutes les informations sur les sommets ne sont plus disponibles et tous les tests nécessaires ont été appliqués, donc ce qui reste dans le tampon est juste des données de pixels. Est-ce correct?
S'il est possible d'appliquer un shader à la FBO, est-il possible d'avoir un effet fisheye? (comme ceci par exemple: http://idea.hosting.lv/a/gfx/quakeshots.html)
La technique utilisée dans le tableau ci-dessus consiste à créer 6 fenêtres différentes et à rendre chaque fenêtre à une face cubemap, puis à appliquer la texture à un maillage.
Merci
Ok donc après avoir créé un objet renderbuffer, capturé la sortie rendue de l'application à utiliser comme texture, quel est le but du fragment shader? Vous avez mentionné que le fragment shader peut décider par programme quel emplacement échantillonner. Pouvez-vous expliquer ce que vous vouliez dire par là dans le contexte de ce problème? – Adham
Ce que vous pourriez faire est de dessiner un seul quad pour contenir le cristallin.Chaque fragment recevra une entrée (x, y) mais au lieu de simplement regarder le pixel en (x, y) dans l'image source et en définissant cela comme la couleur de sortie, il fera un calcul pour savoir où obtenir le Couleur d'entrée pour faire apparaître l'image fisheye (probablement quelque chose comme passer à des coordonnées polaires et lancer un cosinus sur la distance?) - exactement comme Photoshop le ferait. Ensuite, vous ne soumettez qu'un seul quad et obtenez un œil de poisson parfait. – Tommy