View Single Post
Old 09-12-10, 11:07 PM   #6
Frédéric Lopez
Join Date: Sep 2010
Posts: 2
Default Re: 3D Vision and Linux

Originally Posted by Thunderbird View Post
In that I think a signal is generated by hooking in the calls which signal that a frame is ready (wglSwapBuffers in case of OpenGL and Present in case of Direct3D).
I don't think it does work this way, the buffer swapping should not occur when a new frame is ready but at each vertical retrace in order to be correctly synchronized with the glasses. And wglSwapBuffers can't do that since the rendering of a frame can take more time than the period between two consecutive vertical retraces.

Even if the duration of any frame rendering took less time than this period, you'd have no guaranty to be given a timely timeslice by the scheduler to send a signal to the USB emitter. You would miss a lot of retraces when the CPU is under heavy charge, which is often the case for games or scientific visualization applications.

Originally Posted by Thunderbird View Post
All that might be needed is someone to figure out what USB commands to send and then a basic GL wrapper like StereoGL might already work.
Some people on the MTBS3D forums did already find a solution to send commands to the USB emitter for frequencies equal to 120 Hz.
See :

Originally Posted by Thunderbird View Post
For professional use, I would still recommend a Quadro since even if this hack I propose works, timing can't be guaranteed in a very reliable way.
I think timing can be as good as with the old NVIDIA stereo driver by having a kernel module intercept the IRQ which occurs at each vertical retrace, the SoftGenLock/Genlock applications were doing this some years ago for scientific visualization. As their code is no more maintained, I posted an updated version of Genlock compatible with recent kernels here :

Originally Posted by cehoyos View Post
I don't think that is enough: On X, 3D can currently only be presented via OpenGL, and only Quadro cards support OpenGL 3D, iiuc. I believe your solution would only help make cheaper Quadro cards work.
It's possible to support stereo 3D OpenGL rendering on Geforce cards, I've tested it successfully on my Geforce 7600 GT with the technique presented in the last link. But I've yet to implement a working stereo driver using OpenGL calls interception to support any 3D game/application.
Fredz66 is offline   Reply With Quote