[D3D9] Nativ Shutterbrillen/HMD unterstützen
Verfasst: 05.07.2011, 13:54
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
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