Lets sagen, ich habe eine Anwendung (die Details der Anwendung sollten irrelevent sein, um das Problem zu lösen). Anstatt auf den Bildschirm zu rendern, bin ich irgendwie in der Lage, die Anwendung zu zwingen, zu einem Framebuffer-Objekt zu rendern, anstatt auf den Bildschirm zu rendern (mit glew zu tun oder einen Anruf in einer DLL abzufangen).Anwenden eines Shaders auf Framebuffer-Objekt, um Fisheye-Effekt zu bekommen
Sobald die Anwendung ihren Inhalt auf den FBO übertragen hat, ist es möglich, einen Shader auf den Inhalt der FB anzuwenden? Mein Wissen ist hier begrenzt, daher sind nach dem, was ich in diesem Stadium verstehe, alle Informationen über Scheitelpunkte nicht mehr verfügbar und alle notwendigen Tests wurden angewendet, so dass im Puffer nur Pixeldaten verbleiben. Ist das richtig?
Wenn es möglich ist, einen Shader auf den FBO anzuwenden, ist es möglich, einen Fischaugeneffekt zu bekommen? (wie zum Beispiel: http://idea.hosting.lv/a/gfx/quakeshots.html)
Die Technik in der oben genannten Linke besteht darin, 6 verschiedene Ansichtsfenster zu erstellen und jedes Ansichtsfenster zu einem Cubemap Gesicht und dann die Textur auf ein Netz anwenden.
Dank
Ok, nachdem Sie ein renderbuffer-Objekt erstellt haben, erfasste die gerenderte Ausgabe der Anwendung, die als Textur verwendet werden soll, was ist der Zweck des Fragment-Shaders? Sie haben erwähnt, dass der Fragment-Shader programmgesteuert entscheiden kann, welche Position abgetastet werden soll. Kannst du bitte erklären, was du damit im Zusammenhang mit diesem Problem meintest? – Adham
Was Sie tun könnten, ist ein einzelnes Quad zeichnen, um die Fischaugenlinse zu enthalten.Jedes Fragment erhält eine Eingabe (x, y), aber anstatt nur das Pixel um (x, y) im Quellbild nachzuschlagen und das als Ausgabefarbe zu setzen, wird es eine Berechnung durchführen, um herauszufinden, wo die Eingabefarbe von, um das Bild Fisheye (wahrscheinlich so etwas wie Umschalten auf Polarkoordinaten und werfen einen Kosinus auf Distanz?) - genau wie Photoshop würde. Dann reichen Sie nur ein Quad ein und erhalten ein pixelgenaues Fischauge. – Tommy