Huhu!
Ich habe mir eine Z800 von 3D Visor gegönnt, Head Mounted Display. Leider unterstützten NVidias Stereotreiber solche Gerätschaften nur bis GeForce 7, danach supporten die nur noch ihre eigene 3D Vision Shutterbrillen.
Allerdings klappt es so einigermaßen mit den IZ3D Treibern, zumindest für DirectX Spiele. Da ist allerdings das Problem, wenn die Framerate unter den Wiederholfrequenz fällt, kann es sein, dass das Bild für das Linke und Rechte Auge vertauscht sind. Mit einem Knopfdruck lässt sich das aber wieder beheben.
Wie funktioniert das ganze? Soweit ich weiß muss eine Auflösung von 800 x 600 @ 60 Hz gegeben sein. Dann kann man in den Treibern für das HMD einstellen, dass nun die Bilder abwechselnd an die beiden Monitore gesendet werden ( flackerfreies 3D! Wahnsinn!! ).
Nun mein Problem... wie programmiere ich nativen Support? Stereotreiber sind ja eigentlich nur Hacks und keine echten Treiber. Deswegen wird ein nativer Support, in dem man genau programmiert, was für die beiden Bilder gerendert werden soll garantiert besser.
Meine erste Lösung war, einfach jedes Bild abwechselnd auszugeben. Damit habe ich aber dann das gleiche Problem, wie die IZ3D Treiber. Dass bei niedrieger Framerate die Bilder vertauscht werden können. Ich hatte an meinem Zweitrechner das ganze mit StereoTreiber von NVidia unter entsprechnender Grafikkarte am laufen, aber da war das Problem nicht, also dass bei niedriger Framerate die Bilder vertauscht werden.
Meine zweite Lösung war dann, einen HighFrequencyCounter mitlaufen zu lassen und dann anhand der Zeit zu entscheiden, welches Bild gerendert wird. Natürlich ist das alles nicht so ganz trivial, weil ja während des Renderns die Zeit weiter läuft und man dann nicht gewährleisten kann, dass das Bild trotzdem zum richtigen Zeitpunkt ausgespuckt wird. Nun habe ich bei voller Framerate allerdings den Effekt, dass die Bilder abwechselnd richtig falsch richtig falsch, dargestellt werden in Intervallen von schätzungsweise 3 Sekunden.
Kennt sich jemand mit dieser Thematik aus oder kann mir sonst irgendwie einen heißen Tipp geben??
Viele Grüße
Zudo
[D3D9] Nativ Shutterbrillen/HMD unterstützen
- Krishty
- Establishment
- Beiträge: 8355
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [D3D9] Nativ Shutterbrillen/HMD unterstützen
Das interessiert mich auch. Mein Eindruck ist, dass es tatsächlich komplett von der API wegabstrahiert wird und das auch schon eine Design-Entscheidung war – wegen des zarten Hinweischen, dass die IDirect3DDevice9::GetBackBuffer()-Methode bewusst Zugriff auf die linke oder rechte Seite des Back-Buffers erlaubt; man bei der Erzeugung des selbigen keine Kontrolle whatsoever hat.Zudomon hat geschrieben:Wie funktioniert das ganze?
Was ich bisher so in Foren gehört habe geht ebenfalls in die Richtung, dass Stereoprogrammierung tatsächlich nur in OpenGL steuerbar ist und bei allen Direct3D-APIs ausschließlich durch entsprechende Treiber realisiert wird.
Gruß
- Chromanoid
- Moderator
- Beiträge: 4287
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: [D3D9] Nativ Shutterbrillen/HMD unterstützen
Ihr könntet mal schauen ob Systeme wie VR Juggler DirectX unterstützen und wenn wie die das machen. Damit kann man ja auch 3D Caves usw. betreiben. Aber wahrscheinlich bauen die eher auf mehrere Videoausgänge.
Re: [D3D9] Nativ Shutterbrillen/HMD unterstützen
Könnte man eventuell ein VSync machen, aber so, dass er im Hintergrund fleißig weiter rendert?
Also angenommen man hat 180 FPS... bei 60 Hz würde er dann 2 Bilder rendern und verwerfen und jeweils das dritte Bild darstellen.
Also angenommen man hat 180 FPS... bei 60 Hz würde er dann 2 Bilder rendern und verwerfen und jeweils das dritte Bild darstellen.