DirectX 8 does not support Stereo ? Log Out | Topics | Search
Moderators | Register | Edit Profile

stereo3d.com webboard » General 3D Discussion » DirectX 8 does not support Stereo ? « Previous Next »

Author Message
Top of pagePrevious messageNext messageBottom of page Link to this message

David Sykes

Rating: N/A
Votes: 0 (Vote!)

Posted on Sunday, June 09, 2002 - 4:05 pm:   Edit PostDelete PostView Post/Check IPPrint Post

Well, I suppose it must really as presumably many games use it. I am completely confused !
Various documentation states stereo 'support' was added in DX7 (with DDSCAPS2_STEREOSURFACELEFT).
In DX8, stereo support was not included (lack of time?).
Does my GeForce2 GTS board support DX7 or only DX8 ? As Winx3D and maybe GLDirect use DirectX to 'wrap' OpenGL routines .... how does this all work ?

David Sykes
Top of pagePrevious messageNext messageBottom of page Link to this message

M.H.

Rating: N/A
Votes: 0 (Vote!)

Posted on Sunday, June 09, 2002 - 5:16 pm:   Edit PostDelete PostView Post/Check IPPrint Post

David: Both Winx3D and GLDirect use non-DX standardized methods of buffer flipping.
Microsoft have removed the stereo specification form DX probably from following reason - nobody
even nVida did not implement it in the drivers.
If you wan stereo for normal users - use Winx3D
If you want stable stereo for profesional usage use OpenGl and profesional graphic cards ...
Top of pagePrevious messageNext messageBottom of page Link to this message

David C. Qualman

Rating: N/A
Votes: 0 (Vote!)

Posted on Sunday, June 09, 2002 - 7:12 pm:   Edit PostDelete PostView Post/Check IPPrint Post

Michal is right - there are no specifications in DX8 that can provide for stereo.

As you mentioned, David, there are specifications in DX that could have supported stereo, all the way back to DX3. But, these were just specifications - it was up to the video card manufacturer to add the stereo support into their drivers. Only one company ever did, about 5 years ago. So, it makes sense that Microsoft would abandon a notion that no manufacturers are interested in.

Anytime that you see stereoscopic support with DX, it is with some sort of trick. WINx3D has some tricks to provide stereoscopic support under all versions of DX - but not with direct interaction with DX.
Top of pagePrevious messageNext messageBottom of page Link to this message

David Sykes

Rating: N/A
Votes: 0 (Vote!)

Posted on Sunday, June 09, 2002 - 7:46 pm:   Edit PostDelete PostView Post/Check IPPrint Post

Thanks Michal and David.
I notice that when I run the dxdiag.exe DX8 diagnostic under Windows ME and with the NVidia stereo enabled, the Direct3D test with software rendering produces a single spinning cube and the Revelator glasses are not activated.
In the same test with hardware rendering a stereo spinning cube is produced !
Any explanation ?

David
Top of pagePrevious messageNext messageBottom of page Link to this message

David C. Qualman

Rating: N/A
Votes: 0 (Vote!)

Posted on Sunday, June 09, 2002 - 10:52 pm:   Edit PostDelete PostView Post/Check IPPrint Post

I do not have inside information about nVidia's solution, so my comments are based on solutions publised for other companies. Often, the stereo is inferred by the wrapper from the Z-buffer data. This Z-buffer might not be constructed with software rendering. Thus, the software rendering may not yield a stereo effect. But, if the Z-buffer is created, as with hardware rendering, the stereo wrapper can construct the 3D scene.

As I mentioned, this is just a guess about nVidia's solution.
Top of pagePrevious messageNext messageBottom of page Link to this message

M.H.

Rating: N/A
Votes: 0 (Vote!)

Posted on Monday, June 10, 2002 - 6:00 am:   Edit PostDelete PostView Post/Check IPPrint Post

When you run the software emulation you are using Microsoft DX software emulators without stereo support. It is the same with OpenGl, Microsoft software only OpenGl does not have any stereo support - you must run graphic card specific HW OpenGl
Top of pagePrevious messageNext messageBottom of page Link to this message

David Sykes

Rating: N/A
Votes: 0 (Vote!)

Posted on Monday, June 10, 2002 - 5:59 pm:   Edit PostDelete PostView Post/Check IPPrint Post

Thanks Michal.
A Google search revealed that you asked this forum in September 2000 whether any manufacturers supported the DX7 stereo specification (http://www.stereo3d.com/bbs/messages/4922.html).
David Qualman correctly predicted that this did not have a future. (David may be interested in http://www.stereoscopic.org/1998/sd98phdi.html second picture down ).
I have just downloaded and installed StereoGraphics ParallaxPlayer Preview (due for release June 23rd). I have now removed it (crashed my computer) but it states DX8 must be installed ! So, are we saying that when an application issues a DirectX or OpenGL command it is normally picked-up by Windows, but can also be intercepted directly by the NVidia driver or even by a second application, such as Winx3D, which then passes on some other lower-level commands to the NVidia driver ?
Are these commands part of Win32 and GDI and do they support stereo in a window ?
Is the interception determined by a registry entry or some other mechanism ?
These questions are purely out of interest, the effort involved in developing the likes of Winx3D is obviously considerable.

David Sykes
Top of pagePrevious messageNext messageBottom of page Link to this message

David C. Qualman

Rating: N/A
Votes: 0 (Vote!)

Posted on Monday, June 10, 2002 - 6:28 pm:   Edit PostDelete PostView Post/Check IPPrint Post

Some brief answers to several questions:

DX and OGL communicate with the video card driver provided by the manufacturer. As such, these commands are "picked up by windows".

nVidia's driver is this windows driver. Thus, it doesn't really intercept the commands - the commands are given to nVidia's driver, so it can do anything with the commands that it wants before generating the display.

WINx3D does not intercept the commands. The application must directly communicate with WINx3D.

But, VRCaddy has the ability to intercept these commands. It has some kind of intercepting magic. Once it has intercepted the commands, VRCaddy consructs the stereo scene, and passes it directly to WINx3D for display. Thus, VRCaddy intercepts the commands, and uses WINx3D for display.

I don't think that any commercial solution provides stereo in a window. This is presently only available for professional systems.
Top of pagePrevious messageNext messageBottom of page Link to this message

M.H.

Rating: N/A
Votes: 0 (Vote!)

Posted on Tuesday, June 11, 2002 - 8:23 am:   Edit PostDelete PostView Post/Check IPPrint Post

David:
I do not now how it works for DX.
For OpenGl the code call directly the OpenGl
drivers provided by graphic card manufacturer
skipping evrything else (including DX).
The drivers are implemented as a standrd C
dll library without any additional magic
(the Windows are involved only in skipping
the default Windows OpenGl emulation dll).
Both full screen and in window stereo works execelent and stable - but you must have GeForce
hacked to Quadro, true Quadro , some of the 3D profesional graphic cards or GLDirect instaled.
Top of pagePrevious messageNext messageBottom of page Link to this message

David Sykes

Rating: N/A
Votes: 0 (Vote!)

Posted on Tuesday, June 11, 2002 - 5:49 pm:   Edit PostDelete PostView Post/Check IPPrint Post

Thanks Michal.
I do run a Soft Quadro under Windows 2000 and quad-buffered stereo works with most applications I have tried (I can no longer locate your stereo panorama programme).
I am beginning to think stereo with DX is a 'black art'.
Consider Stereographics ParallaxPlayer.
It requires DX8, DX8 does not support stereo so what is going on ?
GLDirect uses DirectX to emulate OpenGL calls which presumably allows stereo in a window.
We are told DirectX does not support stereo in a window !

However DirectX is used for stereo it must involve a lot of effort by the vendors.

David Sykes
Top of pagePrevious messageNext messageBottom of page Link to this message

M.H.

Rating: N/A
Votes: 0 (Vote!)

Posted on Tuesday, June 11, 2002 - 6:16 pm:   Edit PostDelete PostView Post/Check IPPrint Post

Parallax player use DX8 services probably for movie decompression. Direct Show (movie decompression part of Windows) is a part of DX instalation. It needs DX8 probably for the nVida
non OpenGl stereo modes as well ...
My server is down now (hacking attack).
My OpenGl stereo-tutorials and codes will be back on line during 2 weeks or so ...
Top of pagePrevious messageNext messageBottom of page Link to this message

Devil Master

Rating: N/A
Votes: 0 (Vote!)

Posted on Monday, December 02, 2002 - 9:52 pm:   Edit PostDelete PostView Post/Check IPPrint Post

(I'm a complete newbie to 3D)
Okay... if DirectX8 doesn't support stereo, how would I proceed to make a 3D device work? (for example the Elsa 3D Revelator which I want to buy)
Top of pagePrevious messageNext messageBottom of page Link to this message

David Sykes

Rating: N/A
Votes: 0 (Vote!)

Posted on Thursday, December 05, 2002 - 1:33 am:   Edit PostDelete PostView Post/Check IPPrint Post

DirectX8 may not support stereo directly but as indicated above the NVidia 'games' driver does under Windows9x but in fullscreen mode only.
Top of pagePrevious messageNext messageBottom of page Link to this message

sdy

Rating: N/A
Votes: 0 (Vote!)

Posted on Monday, December 09, 2002 - 2:09 am:   Edit PostDelete PostView Post/Check IPPrint Post

I write my own stereo 3d programs in VisualBasic using DX8 by using page flipping mode on the glasses. I render an image from one eye location, move over and render it again. On each new render call, the glasses flip.
It's my understanding that the VRCaddy is using the DX8 Z-buffer depth data to generate the other eye view and passing that to the Win3d driver. VRCaddy acts as wrapper intercepting the data, creating the other view, and passing it to the Win3D driver.
Top of pagePrevious messageNext messageBottom of page Link to this message

David Sykes

Rating: N/A
Votes: 0 (Vote!)

Posted on Saturday, December 21, 2002 - 6:17 pm:   Edit PostDelete PostView Post/Check IPPrint Post

> On each new render call, the glasses flip.

That is very interesting sdy.
Does it rely on the NVidia stereo 'games' driver being enabled to do this ?
If so, then I guess that WINx3D is no longer required for developing your own applications as long as NVidia support your graphic card and viewing hardware.
Is that correct ?

If you are not relying on the NVIdia driver then how do you do it ?
As I understand it, WINx3D takes the pair of 'views' to be rendered and handles the tricky business of communicating with the graphic cards video-memory address-toggler and generates the page-flipping signal for the glasses (both synchronised to vertical-synch in some way).

Presumably, if your left and right views of a static scene (from scanned transparencies) are rendered to a pair of buffers once, they continue to be page-flipped by NVidia software or however you do it ?

David Sykes
Wales, UK
Top of pagePrevious messageNext messageBottom of page Link to this message

David C. Qualman

Rating: N/A
Votes: 0 (Vote!)

Posted on Tuesday, December 24, 2002 - 8:58 am:   Edit PostDelete PostView Post/Check IPPrint Post

It is important to be clear that the DX8 interface does not support stereo. As shipped, DX8 has all the DX interfaces included, 1 to 8. Thus, unless you are specifically creating a DX8 interface, you are not using "DX8" for stereo.

Early experiments during the development of WINx3D showed that just using the DX Flip() command was inadequate. The timing is not guaranteed, a busy system can causes flips to be skipped, and it does not generate any glasses control, such as DDC signals. Thus, a fuller solution offered by WINx3D was required.

But, as David Sykes alluded to, using nVidia stereo "games" driver is yet another method to display stereo. Even here, however, you do not get stereo directly with any of the DX interfaces. nVidia does their own magic behind the scenes.

BTW - the last information that I received from nVidia was that the DX8 interface of their stereo drivers did not provide stereo. Only interfaces up to DX7 (even if you have DX8.1 installed) can provide stereo. Does anyone have different information?
Top of pagePrevious messageNext messageBottom of page Link to this message

David Sykes

Rating: N/A
Votes: 0 (Vote!)

Posted on Wednesday, December 25, 2002 - 12:52 am:   Edit PostDelete PostView Post/Check IPPrint Post

sdy said :-
"I write my own stereo 3d programs in VisualBasic using DX8 by using page flipping mode on the glasses. I render an image from one eye location, move over and render it again. On each new render call, the glasses flip."

David Qualman said:-

"As shipped, DX8 has all the DX interfaces included, 1 to 8. Thus, unless you are specifically creating a DX8 interface, you are not using "DX8" for stereo."

and :-

"Only interfaces up to DX7 (even if you have DX8.1 installed) can provide stereo. "

and:-

"... the DX8 interface does not support stereo."

So, if sdy's programme really does work does it mean he is using DX7 'commands' in his DX8 programme and NVidia's Games Stereo (if enabled) is automatically taking care of page-flipping and glasses control ?

I still do not see how you could present a stereo-pair this way (as opposed to a Direct3D scene which NVidia could somehow generate the other-eye view from).

As you cannot revert to an earlier version of DirectX (without special fixes) how do you use DX7 features from DX8.1 ?
Obviously they are not in the DX8.1 documentation.

I see DX9.0 SDK was released a few days ago but at about 90Mb for the C++ version and the same for the runtime it would take me 12 hours to download !
Time for a Xmas visit to a certain relation !
Top of pagePrevious messageNext messageBottom of page Link to this message

David C Qualman

Rating: N/A
Votes: 0 (Vote!)

Posted on Thursday, December 26, 2002 - 11:48 pm:   Edit PostDelete PostView Post/Check IPPrint Post

David Sykes asks: "how do you use DX7 features from DX8.1"

It is up to the application developer to select the features that they want in their application. If they want DX3 features, they create a DX3 interface. If they want DX7 features, they create a DX7 interface. Or, they could create a DX8 interface. All interfaces are available with the latest version of DX. Remember that DX uses the COM interface model, so new versions always will include the previous interfaces.

DS: "I still do not see how you could present a stereo-pair this way"
You can't using DX, as it is defined by Microsoft. You need to use extensions to the API - the WINx3D SDK or techniques used by nVidia.

Also, DS, you were right about distinguishing D3D as the technique used by nVidia. I meant to imply this when refuering to DX (instead of just DirectDraw.) If one is using DD to render two images, and use the DD Flip() command to page-flip, the results can not be considered as reliable. The Flip() command is defined to take at least one frame period between flips. It is not defined to take exactly one frame period.
Top of pagePrevious messageNext messageBottom of page Link to this message

Anonymous

Rating: N/A
Votes: 0 (Vote!)

Posted on Wednesday, July 20, 2005 - 7:25 pm:   Edit PostDelete PostView Post/Check IPPrint Post

good URL!!!!!!!!!!!!
Top of pagePrevious messageNext messageBottom of page Link to this message

Anonymous

Rating: N/A
Votes: 0 (Vote!)

Posted on Thursday, July 21, 2005 - 4:31 am:   Edit PostDelete PostView Post/Check IPPrint Post

What a nice site, been surfing on it for the whole night and day and i neva got bored for a single minute. Keep up your good work and all of the best in everything you do! :-)
Top of pagePrevious messageNext messageBottom of page Link to this message

Gary Gray

Rating: N/A
Votes: 0 (Vote!)

Posted on Tuesday, March 07, 2006 - 12:40 am:   Edit PostDelete PostView Post/Check IPPrint Post

I've used the NVidia code in both DX7 & DX8 (NVidia provided examples for those), and made a DX9 version myself. All work as advertized. However, and for me it is a BIG however, it's not a true hardware controlled flip. They must be flipping on a vertical blank interrupt, or something like that. If you have bus-mastering activity, or devices that hold the interrupts for a relatively long time, the image can be corrupted pretty badly.

For those who don't know what they're doing, it's basically adding a special "footer" to the surface to be displayed. You make a surface 2x as wide as the backbuffer, with the left and right images side by side. You then lock it, add the footer, unlock it and blt it to the backbuffer. Hey presto stereo, all the controls to set it up are in the ControlPanel applet.

My question is: if I go buy a FireGL or QuadroGL; both of which support hardware stereo 3D, will DX7 report YES when I query for DDSCAPS2_STEREOSURFACELEFT ? or does it only work for OpenGL.

Gary

Add Your Message Here
Post:
Bold text Italics Underline Create a hyperlink Insert a clipart image

Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Enable HTML code in message
Automatically activate URLs in message
Action:

Topics | Last Day | Last Week | Tree View | Search | User List | Help/Instructions | Program Credits Administration