• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

What is DX9-DX-8?

DX stands for Direct-X. This is an Application Programming Interface (API). But not just any API... it's Microsoft's API. An API is a standard to which software programmers program to and to which hardware programmers program to. By having an API, it eliminates the need for a software programmer to program an application for multiple pieces of hardware. This way they just write it once and then any hardware that supports the API can use it.

Another API is OpenGL which stands for Open Graphics Library. This is not Microsoft only. It is open source software controlled by many different video companies including Nvidia, possibly ATI and Microsoft. They form up a group called Architectural Review Board (ARB).

Both API's are capable of similar effects, but work differently, however, DX9, which is the current version, is favored by many more programmers. When you are with Microsoft, you are safe.
 
Ok I see good answer
Now why do people wait eagerlyfor new versions like dx9.0c to come out?
What advantages to the consumer do these newer updated versions provide?
 
Let's use Pixel Shaders as an example.

DX9b uses Pixel Shader 2 (PS2).

DX9c uses Pixel Shader 3 (PS3).

PS3 does the same thing as PS2 only it's easier on the programmers and on the hardware. This means more performance. More performance means, IQ increase because the power is there to do so.
 
I know this is probably a stupid question, but I've always wonder....what exactly is Direct3D? Does it have anything to do with DirectX?
 
As a slightly more thorough answer, "DirectX" is Microsoft's whole suite of interface APIs -- it includes things like DirectDraw (2D graphics), DirectPlay (universal joystick/gamepad support), DirectShow (video codec support), and DirectSound (uh, sound playback), as well as Direct3D (hardware or software-based 3D graphics). The pieces other than Direct3D change pretty slowly, though -- I mean, joysticks haven't changed much in the last decade...
 
each version is backwards compatible right? so a game programmed for dx90c will still work on geforce3?

then why don't developers adopt the latest hardware/api quicker? you always read about developers waiting for enough of a hardware install base before they utilize features. if they just program for best, shouldn't game still work for lesser hardware but simply without latest features (shaders/lighting, etc)
 
Originally posted by: hahher
each version is backwards compatible right? so a game programmed for dx90c will still work on geforce3?

Yes and no. Each version is a *superset* of the previous one -- that is, no functionality is ever taken away. So a DX8 game (and/or video card) will work fine with DX9. A DX9 game will work fine on a DX8 card as long as it doesn't *need* any of the DX9-specific features. For instance, many games made in the last year *require* DX8.1 hardware support and hardware transform and lighting. You can't just turn those feature off -- they *have* to be there for the game to work. This is why a TNT2 or an Intel Extreme Graphics integrated chip (both DX7 parts) can't run BF1942, for instance.

then why don't developers adopt the latest hardware/api quicker? you always read about developers waiting for enough of a hardware install base before they utilize features. if they just program for best, shouldn't game still work for lesser hardware but simply without latest features (shaders/lighting, etc)

Because it takes a lot of extra effort to do all those neat, fancy features. Why would they spend a huge amount of time and money writing extra DX9 shader code when you know that 90% of the people that buy your game won't even have a DX9 graphics card? It's always like this -- software developers don't want to write for the new hardware until enough people own it, but nobody wants to buy fancy new graphics cards until there are games that use the new features.
 
You can't just turn those feature off -- they *have* to be there for the game to work

can't they design the api so that it can be backwards compatible. meaning, a dx90 game calls for a shader. api designed so that in absence of dx90 shader it will use an alternate dx80 path? and as new features added to api, there's also info on how to handle command for new feature in lower hardware

so instead of shiny wavy water, api will make it simply flat and transparent?

Why would they spend a huge amount of time and money writing extra DX9 shader code when you know that 90% of the people that buy your game won't even have a DX9 graphics card?

graphics sell. doom3 isn't hyped for its gameplay or storyline 🙂 but if api were designed so that it'll always be backwards compatible (can make game use latest features, and api will let it still run on older hardware) then it's win-win situation for everyone
 
As a slightly more thorough answer, "DirectX" is Microsoft's whole suite of interface APIs -- it includes things like DirectDraw (2D graphics), DirectPlay (universal joystick/gamepad support), DirectShow (video codec support), and DirectSound (uh, sound playback), as well as Direct3D (hardware or software-based 3D graphics). The pieces other than Direct3D change pretty slowly, though -- I mean, joysticks haven't changed much in the last decade...
Good answer. This is the other parts that I forgot to mention, but they didn't really deal with graphics anyway. DirectDraw is no longer one of the pieces, Direct3D took over that.

software developers don't want to write for the new hardware until enough people own it, but nobody wants to buy fancy new graphics cards until there are games that use the new features.
The never ending circle of life.

can't they design the api so that it can be backwards compatible. meaning, a dx90 game calls for a shader. api designed so that in absence of dx90 shader it will use an alternate dx80 path? and as new features added to api, there's also info on how to handle command for new feature in lower hardware

so instead of shiny wavy water, api will make it simply flat and transparent?
If the hardware cannot be used dx9 effects it will use dx8.1, if not, then dx8, if not... etc.

graphics sell. doom3 isn't hyped for its gameplay or storyline but if api were designed so that it'll always be backwards compatible (can make game use latest features, and api will let it still run on older hardware) then it's win-win situation for everyone
Doom3 is hyped for specifically because Doom was a killer series, the graphics, Carmack. They already do that. For future reference, make complete sentences. It's easier to understand.
 
Originally posted by: hahher
You can't just turn those feature off -- they *have* to be there for the game to work

can't they design the api so that it can be backwards compatible. meaning, a dx90 game calls for a shader. api designed so that in absence of dx90 shader it will use an alternate dx80 path? and as new features added to api, there's also info on how to handle command for new feature in lower hardware

so instead of shiny wavy water, api will make it simply flat and transparent?

Obviously, for simple things like water effects, yes -- games already do this (see, for sample, Far Cry). But at some point you have to draw a line and say "We can't support anything below this level of DirectX". Right now that line is at DX8.1 for most new games. Currently, shaders are used mostly for special effects and other 'add-ons', so there is no real need to build a ground-up DX9 game engine that can't run on DX8 hardware. But in a year? Two years? I don't know. If ATI and/or Intel and/or NVIDIA put out integrated graphics chips that can support SM2.0/3.0, you'll likely start seeing games that make extensive use of it, and *require* a DX9-compliant card to even run.

Why would they spend a huge amount of time and money writing extra DX9 shader code when you know that 90% of the people that buy your game won't even have a DX9 graphics card?

graphics sell. doom3 isn't hyped for its gameplay or storyline 🙂 but if api were designed so that it'll always be backwards compatible (can make game use latest features, and api will let it still run on older hardware) then it's win-win situation for everyone

Maybe I'm in the minority, but *I* don't buy games for pretty graphics -- at least not JUST pretty graphics. In any case, pretty graphics don't help you nearly as much if most of the people who buy the game won't ever see them.

Supporting older AND newer hardware is win-win for the consumer, but costs the developers extra time and/or money, since they have to write multiple codepaths, and make sure that it can run on a slower graphics card without looking like crap. Should they support DX8.0 (as opposed to 8.1)? DX7? DX6? Should they use DX9/SM2.0 features, even though most people won't see them? If they do, how much time should they spend on them? What about SM3.0 for upcoming titles?

Game engine design is, at one level, basically a large series of tradeoffs.
 
For instance, many games made in the last year *require* DX8.1 hardware support and hardware transform and lighting. You can't just turn those feature off -- they *have* to be there for the game to work. This is why a TNT2 or an Intel Extreme Graphics integrated chip (both DX7 parts) can't run BF1942, for instance.
Standard T&amp;L is part of DirectX 7 and the TNT2 or i810 are DirectX <=6 parts.
 
Back
Top