Texture mit Fragment Shader verzerren

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
HellG
User
Beiträge: 1
Registriert: Mittwoch 28. September 2016, 13:42

Hallo,

ich versuche gerade das Bild einer WebCam als Textur auf eine Fläche (innerhalb von OpenGL) zu bekommen.
Das funktioniert soweit auch in folgenden Schritten:
  • Bild über gstreamer einlesen
  • Bild in textur wandeln mit glTexImage2D
  • Textur mittel glTexCoord2f auf Ebene aufbringen
Ich kann die Ansicht auch mit ein paar Tasten ändern und die Ebene wird korrekt verschoben / verzerrt dargestellt.

Das Kamerabild selbst ist jedoch bereits durch die Linse stark verzerrt. Meine Überlegung war es nun, die Textur vor dem Aufbringen auf die Fläche mit einem Fragment Shader zu "korrigieren". Ich habe auch ein passendes Shaderprogramm gefunden. Nun wollte ich also die folgenden Schritte durchführen.
[*] Bild über gstreamer einlesen
[*] Bild in textur wandeln mit glTexImage2D
[*] Textur mittels Fragment shader entzerren
[*] entzerrte Textur mittel glTexCoord2f auf Ebene aufbringen[/list]

Leider schaffe ich es nicht den Fragment Shader richtig zu verwenden. Er wirkt immer direkt auf dies Ausgabe anstatt nur auf die Textur. Ich habe auch probiert den Shader nur auf einen Framebuffer anzuwenden und dessen Ausgabetextur als neue Textur zu verwenden. Allerdings funktioniert das mal gar nicht.

Meine Frage:
Ist das überhaupt die richtige Vorgehensweise oder gibt es dafür eine bessere Lösung?
Hat jemand ein Beispiel zur Hand in welchem etwas ähnliches gemacht wird?

Danke!
Antworten