PDA

View Full Version : 3D Stereo using eDimensional glasses and (non-game) OpenGL programs?


John G. Shaw
November 9th 03, 07:05 PM
The Problem:
I would like to use low-cost, eDimensional (E-D Glasses, LCD flipping
technology) stereo glasses with nVidia's stereo drivers in conjunction with
an OpenGL program (written by me, its not a game). So far, I have not had
any success in getting this to work. Any help would be appreciated.

Details:
The program displays a number O(10e2 - 10e5) of small particles as crudely
rendered spheres (~17 vertices) that are false colored and flat shaded. The
spheres move about in time in "animation mode", or can be rotated by a mouse
when the animation is not playing ("static mode"). The program starts in
static mode. The code is mature and works correctly under numerous Unix-like
OSes and Windows 2K/XP (compiled with Microsoft Visual C++ 6.0/sp5 using Qt
3.x for the GUI and Windows port). For an example of the types of animations
that are produced by this code, go to http://www.xipo.com/xpse and download
one of the ''Sample Animations" near the end of the page.

The test computer consists of a 933MHz PIII with a GeForce-2/GTS-Pro card
(good enough for this purpose) and nVidia's XP-30.87 drivers with the stereo
extensions installed. The glasses and drivers work GREAT with the driver
demo and several standard games (e.g., Quake 2, Unreal Tornament, ...). I do
not believe that I have any issues with the driver (as such) and hardware.

The (lack of) solution so far:
The problem is how to get my code to run as if it were a 3D game. I have
tired renaming the executable to an (unused) game in the driver's program
list that sets GL defaults. When I start my code with stereo enabled at the
driver level, the program runs, but VERY slowly (e.g., ~1 frame per
second!). There is absolutely no evidence that the image is being shifted
left/right on frame buffer flips. When I exit the program, the system is
generally unstable and I need to reboot after a short while!?! If I start
the code and run without stereo enabled, the program works perfectly, easily
achiving 10's of frames per second with 10e3 particles. I can easily vary
the complexity of the scene and the number of verticies per particle,as well
as add in additional geometric objects. Nothing has any effect on the 3D
stereo results. The folks at Trolltech (writers of Qt) believe that the way
they create the graphics widget and initialize GL is completely standard
under Windows. They have never encountered anyone trying for 3D stereo codes
with their product before.

When animating particles, I use standard double buffering with front and
rear buffers (NOT the stereo left/right buffers in GL). I doubt that regular
games do anything different (but I could be wrong!). Other than the
reference to the left-right stereo buffers, I see no other GL commands than
relate to 3D stereo. Looking at nVidia's description of how the stereo
drivers work, I see absolutely no reason why my code should not work
correctly. I have tried to contact nVidia (and join their developer group)
several times over the past year, but I have never had a response from them.

1. Does anyone have a small sample GL-based program that works with stereo
glasses?
2. Is there some sort of "undocumented" (at least to me!) system or OpenGL
call that can be used to toggle the glasses (flips) via the dongle?
3. As per 3, is there something I need to (or can) do in my code to
initialize or enable the stereo mode of the nVidia drivers?

tnx ... John G. Shaw