Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
Hallo,
seit einiger Zeit bin ich Besitzer eines stereoskopischen Bildschirms mit passiver Brille (Polfilter), bei dem alle ungeraden Pixelzeilen auf das linke Auge und alle geraden Pixelzeilen auf das rechte Auge gehen. Ich wollte nun ein wenig mit OpenGL dafür programmieren. Irgendwo im Internet wurde gesagt, dass sich für ein solches Verfahren der Stencilbuffer empfiehlt. Ist das hier das Mittel der Wahl oder gibt es eine effizientere Methode mit Shadern? Für Anregnungen wäre ich sehr dankbar.
Gruß Joni.
Zuletzt geändert von Joni am Do Mär 04, 2010 17:08, insgesamt 1-mal geändert.
Stencilbuffer geht natürlich prinzipiell auch.. aber da brauchst du, sobald du den StencilBuffer auch für andere dinge noch benötigst in der Scene auch 2 FBOs.
Und Shader hat den vorteil das du auch alle anderen arten der stereoskopischen darstellung (Rot/Cyan etc) damit einfach abhandeln kannst.
Bei Aya's Methode sollte man nur ein FBO verwenden. Das wechseln zwischen zwei FBO dauert länger als das tauschen zweier Texturen innerhalb des FBO. Aber das sind Kleinigkeiten.
Der Vorteil des Stencilbuffers ist, das Pixel nicht unnötig gerendert werden. Dafür gibt es natürlich Probleme wenn man irgendwelche PostProcessing-Effekte wie z.B. Glow/Blur etc. anwenden will. In dem Fall braucht man die "unnötigen" Pixel nämlich.
Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
Hallo,
danke erstmal. Ayas Methode klingt sehr vielversprechend, wobei man dort zumindest bei einfacher Zeilenverschachtelung dahingehend doppelte Pixel vermeiden kann, dass man die Szene einfach mit halber Vertikalauflösung rendert. Bei Post-Processing-Effekten muss man das dann natürlich berücksichtigen (obwohl ich intuitiv sagen würde, dass das Ergebnis unter Berücksichtigung der "unnötigen" Pixel qualitativ etwas besser wird). Zu Ayas Methode: Ist der Wert glFragCoord.x/y in Pixeln angegeben?
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Hallo Joni, meinst du nicht, es macht Sinn, das Programm so zu schreiben, dass es nicht nur mit deiner sondern mit eigentlich allen 3D-Display-Lösungen funktioniert? Bin mal im heise-Forum auf diesen Post gestoßen, der mich gleich neugierig gemacht hat (hab dann als mrtrain nachgefragt). Wenn das stimmt, was da geschrieben wurde, sollte dein Display-Treiber das mit den Zeilen also automatisch regeln.
Gruß mrtrain
Zuletzt geändert von mrtrain am Mi Aug 31, 2011 17:55, insgesamt 1-mal geändert.
Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
Hallo,
das funktioniert dass so, dass man beim Erstellen des Pixelformats das Flag PFD_STEREO setzt und über glDrawBuffer(GL_BACK_LEFT) bzw. glDrawBuffer(GL_BACK_RIGHT) die beiden Bilder ansteuert. Ich habe jedoch keine Quadro Karte und auch keine sonstige Treiberlösung, die mir einen OpenGL Quadbuffer anbietet.
Registriert: Di Okt 13, 2009 17:25 Beiträge: 365
Programmiersprache: C++
Hmm, schade. Ich dachte, dieses Feature würde von allen gängigen GeForce- und Radeon-Grafiktreibern unterstützt. Hoffentlich ändert sich das noch während dem 3D-Boom...
mrtrain
Zuletzt geändert von mrtrain am Mi Aug 31, 2011 17:55, insgesamt 1-mal geändert.
Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
Hallo,
danke für die rege Beteiligung ich kann gerne mal ATI kontaktieren, ich bezweifele aber, dass ich da weiterkomme, da sowohl ATI als auch NVIDIA bei ihren FireGL/FirePro bzw. Quadro Serien mit der Quadbuffer-Unterstützung werben und es so wirkt, als sei dieses Feature (noch) diesen Karten vorbehalten.
Registriert: So Okt 21, 2007 14:16 Beiträge: 123
Programmiersprache: Delphi
kleiner Nachtrag: Habe es jetzt mit Ayas Methode geschafft und mehrere Methoden ausprobiert, kann auch bei Interesse was in die Shadersammlung stellen:
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.