It’s the tenth anniversary of DirectX. In honor of this occasion we spoke with Chris Donahue, the group manager for Windows gaming and graphics. Chris discusses the evolution of DirectX, the impact of the next Windows (Longhorn) and 64-bit gaming, how XNA will help developers on Windows and Xbox, where Windows gaming is headed and much more.
Donahue deserves his title as an evangelist.
Barely any real information, instead much praising of his platform and it’s – of course unique – “gaming experience”.
Quite amazing how he manages to avoid any useful statement, but frankly, GD Biz also didn’t ask for it.
Definitely not worth reading.
Have to say I agree he didn’t give away a thing
I hate DirectX because just using creates vendor lockin.
I wish more developers would use things like SDL, so that their games are cross platform.
However, I believe DirectX will start to die off. As Mac OSX moves to Intel and Linux continues it’s slow and steady rise, DirectX will look less and less useful to publishers.
In essence, Microsoft is digging their own grave with DirectX (and other similarly placed technologies).
DirectX has transformed the industry with a common set of APIs (application programming interfaces) that support a wide range of hardware vendors making products with differing features, while making it easy for programmers to write their code for one common platform.
Not to turn this into another Linux vs Windows rant… Those that want to see Linux evolve into the next great gaming platform(I am one of those) need to taek to heart the above statement.
SQL is superior to DirectX because it is platform independant.
It also incorporates ppen architectures for things like graphics (OpenGL), sound (OpenAL), etc.
The “common platform” needs to be the gaming libraries themselves, NOT the operating system.
That should be “SDL” not “SQL”
The drivers and games patch will be god send. People shouldn’t be installing these things. Should be automatic.
yet another team at microsoft throwing money and people just to make sure you dont want to use the cross platform competition. theyll keep working hard at it, despite no ROI because they cant stand the thought that youll want to develop something that could possibly run on another platform…
its good for developers, this team of people who know the os constatnly helping them…
ive been wondering about this for some time now. what directx has on SDL, looking at a few code samples SDL looks simpler to use (though my familiarity with it may have something to do with that)
some people think its because directx has access to hardware features opengl does not, but nvidia provides the same support on all platforms. does ati do the same? supposedly Cg works on both, or is supposed to…
if a similar framework could be made for consoles and pcs, that might stand a chance of adoption…
Correct me if I’m wrong but doesn’t SDL run on top of the graphics API? So using SDL on Windows you have the additional overhead of having SDL make the DirectX calls instead of calling them directly. I know SDL is used in many emulators but I don’t think we’ll see SDL in any graphic intensive games anytime soon. The graphics API is just a small part of achieving cross-platform compatability.
A big clean up in OpenGL would be helpful. Not yet another set of Extensions.
I’d have to agree – even the Windows ports of Quake and Doom, which use OpenGL for graphics, use DirectX for other things (like input) afaik.
OpenGL stands for Open Graphics Library, so it is ment only for graphics manipulation. Libraries like SDL provide the rest.
Speaking of…what is the latest revision of the OpenGL cross platform standard? Wasn’t it meant to integrate a fully featured, platform independent single shading language for vertex and pixel shaders?
Do any of the major OS’es take advantage of them? More importantly, are the graphics card makers (ATI, nVidia, Intel, Via) taking advantage of them, or is everyone just waiting for the next DirectX update and backporting them all as OpenGL extensions?
Enlighten me, please or throw me some links
–JM
I’d rather they concentrate on making the XBox 360 better than the PS3.
SDL is mostly just a wrapper api, it uses what the host platform provides (i.e. drivers, low-level APIs, etc) and therefore it’s not as complete as directx.
Opengl is mess of vendor specific extensions, mostly because the ARB doesn’t seem to agree on anything. This makes developers prefer direct3D, hell, if it wasn’t for John Carmack opengl would be dead a long time ago.
In my crystal ball, I see people devloping an alternative to DirectX that allows game developers to use the exact same toolkit to develop games that run on both OSX-x86 and Linux with extremely minimal changes required between the two OS’s, say being able to nightly compile easily and produce binaries for both OS’s at the same time with simple compile switches.
Once OSX is on Intel, all the work required to port games to OSX that is due to the bigendian/littleendian stuff goes away since your running on the same platform/processor type, and it will only take about 30% of the work it used to take to port games(bascically its the same amount of work it takes to port to Linux).
Having a single toolset that would allow you to hit that 15% (or 20% in the future maybe) of PC users that are not running Windows by having a single set of source code would suddently become more attractive to game companies than it has traditionally been. Previously it took Xamount of time to port to OSX and get 5-7% of desktop users, and Xamount of time to port to Linux to get 5% of desktop users, so it took 2x amount of time to reach users on both platforms. If you could develop your game and only spend 1xamount of time and hit the full 10-15%+ desktops it will become more attractive.
I would not be suprised to see APPLE start to sponser some opensource project teams to develop a full blown integrated and nice alternative to DirectX. There are some good technologies already out there like OpenGL, OpenAL, SDL etc., they just need to be more integrated etc a little better, and maybe even have Apple do the documentation and marketing of said tools to their developer community.
The reason most games use DirectX when they use multi-platform APIs is because DirectX is the (surprisingly) easiest way to get decent mm functionalities out of Windows (example: decent timers). SDL uses it for the same reason and that doesn’t make it anyless portable.
OpenGL 2.0 has been out for some months and has pretty good support from major graphic board vendors. ATI and nVidia both provide very good implementation of OpenGL under Linux. Even if they do not always support the full feature set of OGL2 GLSL (high level shader language) is as well supported as under Windows and performances are comparable (in fact better under Linux with an ATI in my case). All nextgen titles can run using native Linux drivers right now.
DirectX, like “.net”, is a stupid technology; you use it and you are only helping Microsoft. Smart developers avoid closed stuff from Redmond like the plague.
if it wasn’t for John Carmack opengl would be dead a long time ago.
What makes you think who is only games who use opengl?! Almost 2/3 of all professional CAD and modeling/graphical software uses opengl…
Hard to disagree with that… OpenGL really missed the start, it was there first and lagged getting upto speed driver support (even the mini ICD took ages). In fact, OpenGL isn’t to blame, graphic vendors just waited for financial backup (M$) to start investing in writing 3d drivers.
Until version 8 DirectX was just several order of magnitude more complex than OpenGL with less functionalities.
It’s a shame that with both APIs now being roughly comparable with a few twists here and there (pbuffer/framebuffer object extension mess comes to mind) most developers still insist on using DirectX. Even if there is no reason behind it, not even the name hype.
On the contrary I find it very hard to except that.
Smart dev’s use the best tool for the job.
How on earth is OpenGL comparable to DirectX for game dev?
OpenGL might not quite have the functionality of DirectX yet and nVidia advertises their DirectX support because it still sounds good but overall OpenGL got strong support lately and all major graphics hardware vendors including nVidia and most developers are going with OpenGL now.
In terms of performance it really depends the particular implementation and there is alot of variation but e.g. with the new nVidia and ATI drivers you generally get slightly better performance with OpenGL.
Its probably fair to say that OpenGL is becoming the standard.
Opening up http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
and what do we find? For Version 2.0 a list of extensions that
have been integrated … again! Those provide shader programs etc. but all the obsolote functions are still in there.
Please stop the hype. Less talk, more code.
if it wasn’t for John Carmack opengl would be dead a long time ago.
What makes you think who is only games who use opengl?! Almost 2/3 of all professional CAD and modeling/graphical software uses opengl…
I think (correct me if I’m wrong) he was talking about graphics libraries specifically for games. Everyone knows they use OpenGL for CAD/CAM and even 3D modelling animation, but try to name 2 modern 3D engines coded for OpenGL. All I can think of right now is Doom 3.
In fact, OpenGL isn’t to blame, graphic vendors just waited for financial backup (M$) to start investing in writing 3d drivers.
And you have a prrof for this statement? Because in the documented history of (“desktop”) 3D graphics developers didn’t want to touch DirectX with a 6 feet stick. Even Microsoft’s own people admitted it was, well in short words, a pice of crap. There’s a famous Carmack vs MS chat somewhere on the net. But you’re right, it was not until v7.0 that they started to make progress and developers started to adapt it. v8.0 was a huge improvement and when v8.1 came, the history was sealed. No evidence whatsoever about Microsoft paying developers to code for DX.
btw, v8.0 was released when? 1999? And OpenGL was started like ’92 or something.
It’s a shame that with both APIs now being roughly comparable with a few twists here and there (pbuffer/framebuffer object extension mess comes to mind) most developers still insist on using DirectX. Even if there is no reason behind it, not even the name hype.
I personally preffer procedural programming, but I reckon most developers want a modern API with object-oriented programming, a consistent set of APIs and a strong company behind it to support it. Microsoft provides all that, while OpenGL is still programmed in C (procedural) and a complete mess with extensions. The ARB _tried_ to modernize it with v2.0 but we’ll see how that turns out. For the most part driver support is there, just nobody uses it.
How on earth is OpenGL comparable to DirectX for game dev?
– they are both graphics libraries. OpenGL is only a 3D library, while DirectX consists of DirectDraw (2D), DirectPlay (network), Direct3D (3D), DirectSound, DirectInput and a whole bunch of other stuff no one uses.
– they are both written in C, but DX uses COM to provide OOP.
– DX provides a common set of APIs for al hardware functions, while OpenGL provides (exposes should be the word) the functionallity through vendor specific extensions – which often means you have to write the same code for all (both) vendors. A typical example would be the Doom 3 engine which uses several different rendering paths (ARB, ARB2, NV10, NV20 and R200)
– as mentioned OpenGL provides only 3D functionallity and you are forced to use other libraries for input and sound (and more). Doom 3 on Windows uses DirectSound and DirectInput while on MacOS X it uses OpenAL (I think).
Microsoft has a reputation of delivering crappy products too fast. But with time and will they dominate it.
In terms of performance it really depends the particular implementation and there is alot of variation but e.g. with the new nVidia and ATI drivers you generally get slightly better performance with OpenGL.
First time I hear that one. There’s a common belief that ATI is ahead in DX, while NVIDIA tops at OpenGL.
In my crystal ball, I see people devloping an alternative to DirectX that allows game developers to use the exact same toolkit to develop games that run on both OSX-x86 and Linux with extremely minimal changes required between the two OS’s, say being able to nightly compile easily and produce binaries for both OS’s at the same time with simple compile switches.
Great idea. Now you only have to convince NVIDIA and ATI to rewrite their entire drivers to suport this API and convince developers to start coding for it.
Once OSX is on Intel, all the work required to port games to OSX that is due to the bigendian/littleendian stuff goes away since your running on the same platform/processor type, and it will only take about 30% of the work it used to take to port games(bascically its the same amount of work it takes to port to Linux).
Mac OS X laready has a DX wrapper for like 4 years which no one uses. Porting the engine is not a big problem. For example Unreal Engine 2 uses both OpenGL and DirectX (DX is default on Windows), there are no games for Linux because it’s not a viable market. According to Google Zeitgeist less than 1% of Google visitors use Linux (something like 95% for Windows). Even if half of those people would actually like your game and buy it, it wouldn’t even cover the porting expenses. Carmack made some comments about this on Slashdot regarding Q3 Linux.
Having a single toolset that would allow you to hit that 15% (or 20% in the future maybe) of PC users that are not running Windows by having a single set of source code would suddently become more attractive to game companies than it has traditionally been.
Read comment above about your fictional 15% non-Windows users.
3Dlabs has a very good proposal for opengl 2.0 but the ARB went the extensions thing again, too bad.
So ok great, listen I read almost every comment every day on most articles OS NEWS posts. I have to say usually it is the same old crap but people like you really need to stop.
What does “.net” being stupid have to do with DirectX.
Also people stop bitching. Why are you complaining about somethig you don’t use. This happens like all the time on this website. If you have linux great, if you have windows whoopee and etc.
I thought this article was lame, and I agree I want to see less talk and more code. I look forward to better games on Windows. Not linux, not OSX. Why? Because thats what I have.
Why don’t you people support those making games for your OS of choice and not complain about the one you dont use.
And you have a prrof for this statement?
No, not on the $ side, but that the only reason I can see since as you say it…
[…] in the documented history of (“desktop”) 3D graphics developers didn’t want to touch DirectX with a 6 feet stick. Even Microsoft’s own people admitted it was, well in short words, a pice of crap.
… yet we can see that they all did, and they did not wait for a decent API to start. when games dropped software for good they went to DirectX, not OpenGL. Why?!
But you’re right, it was not until v7.0 that they started to make progress and developers started to adapt it. v8.0 was a huge improvement and when v8.1 came, the history was sealed. No evidence whatsoever about Microsoft paying developers to code for DX.
No, I think you misunderstood my statement. I was talking about the graphic card companies that started providing semi decent OpenGL drivers once they had a Direct3D driver (with the exception of 3dfx). Matrox even had its OpenGL implementation as a wrapper around its Direct3D implementation… $ are the only difference I can make in favor of DX back in those days.
Having used DX from DX3 upto 8.1, I can sure testify that DX was ugly, far uglier than GL. In fact, the major improvement to DirectX, DirectX8 is due to a complete rewrite of the API (and devs felt the “complete rewrite of the API” bit) by nVidia when they got the deal to design the XBox graphic chip.
…DirectX exists to solve a problem that only exists on the Windows platform. Everywhere else, it was either never a problem, or there are other ways to deal with it.
In this case, the problem was that the standard Windows APIs were utterly useless for games. The graphics capabilities were substandard, very slow, and not at all suitable for games. Sound capabilities are laughable – you can play a MIDI file and a single sampled sound, but that’s about it. Joystick support is limited to two axis, four button joysticks (or two two axis, two button joysticks). There aren’t any reliable timers. And so on. You couldn’t directly access the hardware anymore (as you could in DOS, and even in Linux), so Windows games absolutely sucked.
DirectX is the only way (on Windows) to build games, because the rest of the operating system doesn’t provide the capabilities you actually need to do the job properly. On other operating systems, you don’t need something like DirectX.
If you wanted to write a game for MacOS X, for example, you’d use OpenGL for graphics, OpenAL for audio, and you’d have platform-specific event loops, window creation, and so on (you need these in DirectX apps as well). You have a nice API for input, you can use standard Unix networking, and all is good. Linux is much the same (except the X11 platform specific code is much uglier, although no worse than the Windows platform specific code would have been).
If you don’t want any platform specific code, you can use SDL. It’s controller support isn’t that great (no force feedback support of any kind), but if you leave OpenGL and OpenAL to handle everything else, it kicks seven kinds of ass. It’s so much simpler than DirectX could ever be, and almost completely isolates you from platform dependent stuff.
Stuff like OpenAL or SDL has to run over DirectX in Windows, because there is no other way to get the required hardware access. On MacOS X, it runs over Apple’s windowing system, and hardware APIs, because that’s how you access the hardware. On Linux, it runs over X11 and the Linux devices, because that’s how you access the hardware. It’s really no slower than DirectX code would have been, because doing a couple of additional function calls hardly makes any difference at all, especially if you’re not calling these functions a few million times a second (and you’re not going to be doing that – it’s more like once a frame).
OpenGL certainly isn’t inferior to Direct3D, no matter what you may have been told. Current OpenGL can do absolutely everything (useful) that current Direct3D can do. This has always been the case. Graphics card vendors tend to provide some new feature as OpenGL extensions first (which hardly anybody uses, for good reasons – they usually suck). Then Direct3D gets it as a “standard” feature (which also sucks – it’s basically a copy of on vendor’s way of doing things, isn’t implemented well, and just isn’t worth using). Then the Direct3D implementation is replaced one or more times, until it gets good, and it’s added to OpenGL as a real standard extension. The latter two are actually used, and it makes sod all difference if you’re using D3D or OpenGL.
I’m not too sure about DX9, but I know recently, D3D lacked standards on ways of representing data generated during the rendering. One example, getting the value of a pixel’s Z-value. Two different chips would report different values for the same input. The value is correct within the context of that specific chip, but don’t expect the same value from another chip.
And, the problem with OpenGL is that the ARB is run more by Marketing types than engineers. Each company wants to make the standard fit their products. Defining a sound standard THEN making the chips would be, well, fair, and fairness isn’t good for business.
I dislike proprietary APIs as much as the next guy, but it is hardly the fault of Microsoft for the slow as sludge progress it took for OpenGL 2.0 specification to be finally ratified.
DirectX is more than just graphics; once there is a complete, end to end gaming API solution for the *NIX world, you’ll see the games come. Until then, it’ll just be a matter of programmers going with the market with the largest number of users, and the easiest (lower cost) to write for.
I know that proposal and something exactly like this would be necessary! But it isn’t even close in getting reality.