Sign in to follow this  

OpenGL/DirectX support in Vista?

This topic is 3859 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Thinking about a project I am working on and wether we need to create a interface for both DX9 and DX10 for our rendering engine since we are also going to have OGL support(mainly for Mac/Linux). I was thinking that we did not need DirectX9 support becuase OGL can support the cards(I think only 2 support it last i heard) and OS's(Vista does not support DX9 but thought it supported OGL). Now I have been told that OGL is not fully supported by Vista. I have been told that it is support through DX10 calls which mean to use OGL on Vista you need a card that support DX10. Is this true the OGL support on VIta is limited like that?

Share this post


Link to post
Share on other sites
Some of the common OpenGL extensions are not supported by "out-of-the-box" graphics drivers shipped with Vista, i.e. users would have to download and install latest video drivers provided by NVIDIA/ATI to be able to run an application that uses such extensions. Also, Aero can sometimes interfere with OGL application. I would suggest to keep DX9 support.

Share this post


Link to post
Share on other sites
It would just be nice, and save time if we did not have to support DX9, that would be one less interface to build for the rendering engine.

Also I don't see the sticky about OGL and Vista in the OGL forums, can someone link it?

Share this post


Link to post
Share on other sites
You seem to have more than a little confusion on the topic...

Vista supports D3D10, D3D9L, previous versions of Direct3D through a light emulation layer, and has built-in OpenGL 1.5 support through a similar emulation layer. It also supports Native OpenGL support through your video card's drivers. Basically, use whatever you like.

Many of the D3D10 features are exposed on non-Vista operating systems through OpenGL extensions, so its possible to use D3D10 features on Windows XP, for example.

Share this post


Link to post
Share on other sites
Quote:
Original post by RyanZec
I could of swear the DX10 is not supported on XP, is that wrong?


This is true. What ravyne2001 is describing is, features in DX10 which are also exposed through the OpenGL driver are available for use by accessing them via the extensions functionality in OGL.

Specifically, accessing the DirectX 10 interface in XP is not supported by Microsoft. However, the Alky project exists to combat this heavy-handed tactic.

Share this post


Link to post
Share on other sites
Well as it was just pointed out to me, Xbox360 only support DX9 and we want out engine to support XBOX360 so we need to develop a DX9 interface anyways.

Share this post


Link to post
Share on other sites
Quote:
Original post by DarkHorizon
Specifically, accessing the DirectX 10 interface in XP is not supported by Microsoft. However, the Alky project exists to combat this heavy-handed tactic.
Yeah, except the Alky project is nothing more than a bad joke.

Share this post


Link to post
Share on other sites
Quote:

Specifically, accessing the DirectX 10 interface in XP is not supported by Microsoft. However, the Alky project exists to combat this heavy-handed tactic.

Recall that this "heavy handed tactic" was used because of massive underlying driver model changes that have a very poor cost/benefit ratio to "back port" to XP.

Alky is a commendable attempt, but it's probably not going to be suitable for production use in non-trivial applications (hobbyist-level developers might be able to see some benefit, it's probably too early to tell, but there is an unfortunate lack of decent technical documentation about what exactly the compatibility libraries do).

The best option for DX10-class features on XP will be OpenGL. There are cost/benefit tradeoffs you have to make here. You can't afford to spend too much effort developing a render core that can have its underlying back-end switched out to any of the three primary APIs. If coverage of as many systems is an option, OpenGL or D3D9 is probably your best bet (360 is a pipe dream unless you're signed already, because you'll need some tweaks anyway, so don't worry about that at this stage in development). Multi-backend and multi-platform support are huge resource sinks, so its often best to refactor that kind of support in once you have the rest of the codebase moderately functional rather than blowing up-front development time trying to make it work for all possible (potentially untestable in some cases, like the 360) cases only to discover later that a good portion of that time was wasted.

Pick one, build with that, then consider refactoring the other support in later. It will be much easier that way, trust me.

Share this post


Link to post
Share on other sites
Well what we are planning to do it first support the PC. Ofcourse the to support the PC well(XP/Vista/Mac/Linux) we are going to need to build interfaces for DX10, DX9, OGL anyways. Of course the way the engine is going to be built, it will be easy to ad support for something else(just add a new interface).

Share this post


Link to post
Share on other sites
To echo jpetrie: Pick one and run with it for now. Design for the future, but code for today.


Start with either D3D9 or OpenGL as they will give you the largest user-base off the bat. Once that's done, add the other. Then add more advanced OpenGL functionality or D3D10. Encapsulate the renderer into its own sub-system, but expect that the re-factored cross-API sub-system may look different than this first attempt to encapsulate the renderer; this first attempt should be viewed only as a means to enforce the separation between the game and renderer so that rendering API code doesn't bleed over into the game itself.

Depending on your design, you may find that the division of responsibility might even move slightly or that related subsystems will also need to be refactored. Theres a bit of an art involved in crafting solutions that are flexible, yet not over-engineered. Its simply unlikely that you'll get it right with an up-front design unless you've tackled the problem before.

Share this post


Link to post
Share on other sites
Regarding graphics performance with Windows Vista. Search comp.graphics.api.opengl for a thread I participated in, where I posted timing results for some of my Wild Magic samples. The frame rates were posted for both OpenGL and Direct3D 9, running on Windows XP and on Windows Vista. The conclusion of my experiments was that both APIs have significant performance loss. If I recall, my samples ran on Vista at a 50% loss from the frame rate of XP and D3D9 ran on Vista at a 25% loss from the frame rate of XP.

I imagine that the hardware vendors have been shipping incremental updates to drivers that might eliminate some of the performance problems. However, the performance loss (and the lack of Vista-ready software) have kept me from removing the dual-boot for XP and Vista. Compilation time of MSVC8, even with SP1, on Vista is much slower than on XP.

For the OP--the OpenGL support appears to be there (extensions I need exist in the Vista drivers), but the frame rates just are not like they were with XP.

Share this post


Link to post
Share on other sites
goto www.opengl.org on the front page theres a news item entitled

Windows Vista and OpenGL-the Facts

which should clarify any questions about gl support on vista

Share this post


Link to post
Share on other sites
Dave, if you wouldn't mind lending some of your expert oppinion...

I suspect that the performance issue on Vista is a multi-pronged problem due to the shake-up in both the software and hardware industries that is occuring.

Firstly, we have the new Windows Display Driver model that neither the driver manufacturers or 3rd party software developers are experienced with. In turn, we have drivers that are simply not as mature as their previous counterparts and software which likely doesn't make optimal use of the new driver model by making assumptions based on the old model.

Secondly, this latest round of new 3D hardware is radically different than the last generation with the move to a scalar, unified, generic shader model. If we stick to D3D9 hardware, we have that hardware bootstrapped onto a driver model built for D3D10. In either case, one side of the equation doesn't quite match up. Perhaps the next round of hardware will flush ou these issues.

Thirdly, we have an OS which devs, and I'd say game devs in particular, are unfamiliar with its performance quirks and inner workings.


What are your thoughts on these issues and how they effect graphics development in the near term?

Share this post


Link to post
Share on other sites
As with any OS shipped by Microsoft, over time many of the problems are fixed. My objection to Vista is simple--it was shipped prematurely. Moreover, it is difficult to purchase a new PC *without* Vista. Like most consumers, I prefer to have choices.

Quote:
Original post by ravyne2001
Firstly, we have the new Windows Display Driver model that neither the driver manufacturers or 3rd party software developers are experienced with. In turn, we have drivers that are simply not as mature as their previous counterparts and software which likely doesn't make optimal use of the new driver model by making assumptions based on the old model.


Even if the graphics drivers improve as the driver writers gain experience with the inner workings of Vista, the desktop composition is going to suck down the cycles. The fact that you have to "turn off" an OS feature such as this is offending. But as we all know, the OS is written for the masses, and Vista LOOKS REALLY GOOD! As a developer, I could care less about the fancy window effects that the OS provides. However, I do like the development tools that are available on the PC. Instead of versions like "Home", "Media Center", "Ultimate", etc., what I want is "Windows for Smart People" and "Windows for Everyone Else". The Smart version will let folks turn off all the eye candy and other irrelevant features.

Quote:

Secondly, this latest round of new 3D hardware is radically different than the last generation with the move to a scalar, unified, generic shader model. If we stick to D3D9 hardware, we have that hardware bootstrapped onto a driver model built for D3D10. In either case, one side of the equation doesn't quite match up. Perhaps the next round of hardware will flush ou these issues.


If the solution is that your computer must have a D3D10-based graphics card in order to get performance, then I as a developer am not a happy camper. I use D3D on PCs and Xbox360. And I use OpenGL on PCs, Linux, Mac, and PS3. Having the ability to use OpenGL on PCs is a good cross-check when developing on PS3. If I cannot do this, because Vista prevents me by having poor performance, then my development environment becomes problematic. Of course, MS could care less about my development woes on PS3 :)

Quote:

Thirdly, we have an OS which devs, and I'd say game devs in particular, are unfamiliar with its performance quirks and inner workings.


I do not believe this is an issue. I guarantee you that I am doing my utmost to get the fastest graphics I can on Vista. Oops, I meant doing my utmost *other than* getting a D3D10 graphics card :)

A few ramblings. The graphics problems are just one aspect of the premature Vista.

* I had to uninstall DevPartner Studio, because it caused VC8 to crash (Compuware is shipping a Vista-ready version soon).

* WS_FTP failed to work (they now have a Vista-ready version).

* 3dsmax 9 works when run as administrator. Maya 7 works as is.

* Norton's Ghost does not work, but Symantec is working on it. NIS did not work either, but they had a download fix.

* MSVC8 is slow to compile, and I've had apparent threading problems when the manifest file is written (the linker fails, maybe two threads trying to write out files). A "build" after this does not work. You have to "rebuild" and cross your fingers that the same problem does not occur.

* In order to continue supporting folks who use MSVC6 and MSVC7.1, I have to boot to an XP partition.

* I turned off the User Account Control, because I got tired of the "Are you sure you want to run this?". The deciding factor, though, was when I tried to edit autoexp.dat (to tell MSVC how to display some of my class information in the debugger). I could not save the changes, because I did not have permissions (I am the administrator). There is a "Run as Administrator" option, but no "Edit as Administrator".

* When UAC was enabled, double-clicking on a *.sln or *.vcproj would not work. You had to run devenv.exe, and then open a project or solution file.

* The OS no longer asks you about sending data to Microsoft when an application encounters a problem. It just automatically goes out to the web and "searches for a solution". The OS collects information about when programs fail, and it appears to actually transmit this.

* Windows Explorer dies more often than you would expect, although it restarts itself (and a few tray icons disappear).

* On shutting down, the machine locks on a frequent basis, and I have to do a cold boot.

* With UAC enabled, attempts to bring up Task Manager many times led to a black screen and a dialog about failure to get a security lock.

---
Well, in the long run I am certain Vista will improve and so will the software vendors attempts at interfacing with it. For now, I am disappointed that my dual-core 3Ghz + 4GB mem machine + NVidia GeForce 7600 GT run very slowly. I must admit, though, that Windows Mail and Internet Explorer work just great! Just what the general consumers will be happy with :)

Share this post


Link to post
Share on other sites
Ouch that seems pretty harsh Dave. I can honestly say that I have not had that much trouble with Vista (although I'm back on XP)

I had two BSOD in Vista, caused by faulty hard drives. I still have the problem now in XP except the PC hangs instead.

MSVC8 slow to compile? I never had that problem, although my applications are mostly under 2Mb when built and I never got corrupted builds.

I agree about the lack of privacy in Vista. It seems to be transmitting crash reports without express authorisation (although it is covered in the End User License Agreement, along with something similar to "anything you create or develop using Vista may be taken by Microsoft if we think it will make money" ;) )

Graphics wise, Vista is slower by about 20% on OGL/D3D9 with the 158 drivers from nVidia. (can't speak for ATI)

The main reason I left Vista (apart from the Licence Agreement) was due to the sound API and the way that Creative imparticular were dealing with their driver issues, giving a beta release driver as a final with no future development plans.
This combined with DirectX10 where there is no longer and hardware sound support through DirectSound, which means if you want hardware sound support you need an OpenAL driver. Although Vista comes with a driver, it doesn't fix the problem if you're still using the DirectSound layer. Creative imparticular, are releasing ALchemy which supposedly will give hardware OpenAL support through DirectSound, or at least that's the way it was explained.

I do not plan, as a developer, on moving to Vista for at least 2 years. (Which was about the same amount of time it took for XP to settle down)

Share this post


Link to post
Share on other sites
Quote:
Original post by ravyne2001
You seem to have more than a little confusion on the topic...

Vista supports D3D10, D3D9L, previous versions of Direct3D through a light emulation layer, and has built-in OpenGL 1.5 support through a similar emulation layer. It also supports Native OpenGL support through your video card's drivers. Basically, use whatever you like.

The API is limited to DX7 last time I checked. Everything below that is removed.

Quote:
Original post by ravyne2001
Many of the D3D10 features are exposed on non-Vista operating systems through OpenGL extensions, so its possible to use D3D10 features on Windows XP, for example.


Yes, but those are vendor specific extensions: nVidia
ATI doesn't have anything plus their hw is behind.

Share this post


Link to post
Share on other sites
Quote:
Original post by DarkHorizon
Quote:
Original post by RyanZec
I could of swear the DX10 is not supported on XP, is that wrong?


This is true. What ravyne2001 is describing is, features in DX10 which are also exposed through the OpenGL driver are available for use by accessing them via the extensions functionality in OGL.

Specifically, accessing the DirectX 10 interface in XP is not supported by Microsoft. However, the Alky project exists to combat this heavy-handed tactic.


shakes his head.
terrible idea.

Share this post


Link to post
Share on other sites
Quote:
Original post by Ehrys
This combined with DirectX10 where there is no longer and hardware sound support through DirectSound, which means if you want hardware sound support you need an OpenAL driver. Although Vista comes with a driver, it doesn't fix the problem if you're still using the DirectSound layer.

You do realize that doing sound in software is much better these days compared to doing it on dedicated hardware right? You are no longer tied to hardware specific features/DSPs and limitations.

"A software mixer can mix 100 voices at once in about 1% of the CPU these days on a Core 2 Duo. EAX quality reverb is something we have and can be done in about another 2% of that CPU," says Paterson*. "This will still come out faster than using hardware accelerated audio."

* (Brett Paterson, CEO and Lead Programmer at Firelight, the people behind the third party audio middleware, FMOD)

Share this post


Link to post
Share on other sites
Quote:
Original post by Saruman
Quote:
Original post by Ehrys
This combined with DirectX10 where there is no longer and hardware sound support through DirectSound, which means if you want hardware sound support you need an OpenAL driver. Although Vista comes with a driver, it doesn't fix the problem if you're still using the DirectSound layer.

You do realize that doing sound in software is much better these days compared to doing it on dedicated hardware right? You are no longer tied to hardware specific features/DSPs and limitations.

"A software mixer can mix 100 voices at once in about 1% of the CPU these days on a Core 2 Duo. EAX quality reverb is something we have and can be done in about another 2% of that CPU," says Paterson*. "This will still come out faster than using hardware accelerated audio."

* (Brett Paterson, CEO and Lead Programmer at Firelight, the people behind the third party audio middleware, FMOD)


That's the same argument we heard from Intel for why we didn't need separate graphics cards. Time proved that completely wrong. The only difference in this case is that due to a lack of competition for Creative, there's nobody pushing them to actually provide useful features. Hardware DSP is leagues ahead of software DSP if you want to do something more complex than simply add a few voices together. (eg. doppler shift, muffling/occlusion effects, small speedups/slowdowns without artifacts, compression/expansion, arbitrary eq, convolution reverbs, etc etc.)

Share this post


Link to post
Share on other sites
Quote:
Original post by V-man
Quote:
Original post by ravyne2001
You seem to have more than a little confusion on the topic...

Vista supports D3D10, D3D9L, previous versions of Direct3D through a light emulation layer, and has built-in OpenGL 1.5 support through a similar emulation layer. It also supports Native OpenGL support through your video card's drivers. Basically, use whatever you like.

The API is limited to DX7 last time I checked. Everything below that is removed.

Quote:
Original post by ravyne2001
Many of the D3D10 features are exposed on non-Vista operating systems through OpenGL extensions, so its possible to use D3D10 features on Windows XP, for example.


Yes, but those are vendor specific extensions: nVidia
ATI doesn't have anything plus their hw is behind.


Uhm, GL_EXT_geometry_shader4 and GL_EXT_gpu-shader4 isn't vendor specific. (they have been around for a very long time aswell)

Share this post


Link to post
Share on other sites

This topic is 3859 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this