|Authored by: Anonymous on Monday, November 19 2012 @ 12:37 AM EST|
|Hi, I'm a game dev. I know it looks like Microsoft uses DirectX upgrades to|
drive adoption of its new versions of Windows, but I think thats only part of
the story. The other part is that graphics hardware continues to evolve and
improve, and Microsoft helps standardize that hardware and "steer" its
development direction by choosing what they standardize as part of DirectX. And
with DX10/11, they standardized some new features that required a new driver
model for display drivers--thats why those were only available for Vista
onwards, and were not made available on Windows XP. It would have required not
just a bunch of work from Microsoft to backport it to XP, but all-new drivers
for XP for all of the graphics cards from all of the manufacturers. Thats a lot
of expensive, time-consuming work for them with no benefit to them (they already
sold those cards, they would not be able to make any more money from them to
offset the cost of writing those new drivers).
DirectX 9 was a bit of an anomaly, being the primary target of developers for
years and years. DX 11 is now taking over as the "version that everyone
targets for a few years". If 11.1 only supports Windows 8, that just means
developers will mostly ignore it. In a few years when half of all users are on
Windows 8 or newer, then DirectX 12 may become a popular target.
Here's a little story about the popular versions of DirectX. (Maybe not all
details are correct, but that shouldn't get in the way of a good story.)
Once upon a time, Microsoft was putting out versions of Windows every couple
years with genuine improvements in them, and DirectX was also in its infancy and
rapidly improving too. So we saw DX 3, then DX 5, then DX 7 and DX 8 all
offering significant improvements over previous versions, and PC devs mostly
upgrading to target them within a year or so of their release.
This kind of stabilized with DirectX 9.0 and 9.0c which targeted Windows XP.
There were three main reasons for this:
(1) DX 9 programmable shader support was pretty good, and (unlike previous
versions of DirectX) all DX9-class hardware pretty much supported all of the
interesting features that developers wanted to use on it. (Before this, there
was a big problem with lots of optional features; nice if you have them, but for
cards without them you had to have some alternative methods to get the job done.
So having so much stuff "standardized" and guaranteed to be available
in DX9, was a big improvement.)
(2) Windows XP gradually became more stable, and better-supported by drivers,
and its install base gradually became most of the Windows audience (especially
the game-playing audience, back then).
(3) DX 9.0-class hardware was widely available, and also the two high-end
"current gen" game consoles (Xbox 360 and PS3) have similar-class
rendering hardware. The Xbox 360 in particular, offers DirectX APIs that are
essentially 9.0c plus a few extensions. (Sony's PS3 uses a different set of
APIs called gcm, and it offers OpenGL but most AAA devs skip the OpenGL part and
target their PS3 3D code directly at gcm for best performance). So
multi-platform games needed DX9-like rendering paths anyways for those consoles,
and could often use the same rendering paths, or very similar ones, for PC too.
Then Microsoft released DirectX 10 and 10.1, but because of some new video
memory virtualization features that required a new driver model, they only made
it for Windows Vista and not for XP. Fair enough. Most developers either
ignored it outright, or just made small extensions to their DX9 code to take
advantage of one or two features if they were on Vista.
Then Microsoft released DirectX 11, and by now Windows 7 was out and many people
were now switching. Windows XP started to dwindle in marketshare, and game
developers were now much more interested in writing DirectX 11 code for the PC
games in order to take advantage of all the great new features in the available
graphics cards (even for 10.1-class cards, those are easy to target with DX11
too). So a lot of renderers that targeted DX9 have now been rewritten to target
DX11 instead/also. AAA games still need a DX9-like rendering path for the
current-gen consoles, but they also need a DX11 rendering path for
"modern" PC games--which means they won't run on Windows XP anymore,
but most gamers have already upgraded to Vista or Windows 7. There will also be
some new consoles from Sony and Microsoft eventually, and while all of the
details of those consoles are still proprietary, its obvious they will be more
like DX11 than the old DX9 stuff. So a few years from now when AAA devs have
stopped targeting the old consoles, they will be able to drop the old DX9-like
code paths completely. But for now, developers are stuck maintaining two
rendering paths in multiplatform engines and games: a DX9-like path for the
current-gen consoles (whose graphics hardware was not top-of-the-line back in
2005, and is getting pretty dated now in 2012!) and a DX11-like path for PCs and
future consoles that contain more modern graphics hardware.
[ Reply to This | Parent | # ]