Thursday, March 17, 2011

Carmack on Direct3D

Direct3D supposedly better than OpenGL
Gallium3Ds D3D state tracker might make it easier to convince others to switch to my favorite platform: Linux

John Carmack is a very well known name in the gaming industry. He's co-funder of id Software, famous for the Quake and Doom series (where he was lead programmer), which is supported by the in-house produced id Tech engines, which themselves are also well known.

Carmack is also an advocate of free software. While not releasing it immediately (or before) the release of the software, after around 6 years passing he has taken care. Examples include the id Tech 3 engine and promises, that id Tech 4 will be open source somewhat soonish.
He also contributed to open source projects.

In the past, Carmack has complimented OpenGL as being superior to Direct3D, though the tides have turned.
I can't make a statement on my own, since I've only gotten my hands dirty with some basic OpenGL, but from what I hear and deducing via common sense it really seems that Direct3D and the related DirectX helper libraries have become the stronger competitor.
OpenGLs strong point is still that it's an open API, but if you look solely at the interface, Direct3D got ahead.

From what I gathered, OpenGL has been superior and faster, Direct3D had to catch up. When then OpenGL froze at 2.1, Direct3D could take a leap forward.
Major API changes, making the OpenGL interface easier, were promised for OpenGL 3, but after two years it turned out to be just another revision. The reason given was backwards compatibility and I believe this is what gave Direct3D another advantage.

Instead of leaving the backwards compatibility to using an old OpenGL version, the features were left and a deprication model was designed. Basically, the application will warn the developer of features that are getting removed and in the next revision they might not be present.
The though is very sensible of course, but IMO this is not a reason not to 'restart' OpenGL.

afaik Direct3D does not care that much about backwards compatibility. If you want to use old stuff, use an old version. Makes sense, really.
And now OpenGL is the one playing catch-up to Direct3D.

I wonder when the tides will turn again. I'm stubborn and will be staying on Linux. This will probably not make it easier to get a job when I finished university.
I'm not saying develop solely for Linux, I think the sensible route is to develop using open APIs and cross-platform code and libraries, only using platform-specific code where you need it or you gain reasonable benefits, while keeping code-switches (hidden behind a uniform interface) to target different platforms.

All the new AAA games (with exception of Rage if we're lucky) use Direct3D, which I believe is the main blocker for potential Linux portage.

Sure, the WinAPI is also a bigger deal, but apart from graphics, we've got left sound, input and filesystem I/O.
I don't think sound is a big deal, for the input you merely need to change to different functions to get the current key states and filesystem I/O also can't be that big of a deal. All if they were properly abstracted of course.

Of course the market is orientated to where they can get the most money out of, which Linux is certainly not.

The best I can do is try to promote Linux, but how do you convince the average Joe that free software is better than his software that 'just works'?
Saying you won't catch much viruses and your system won't get slower the longer you use it probably won't outweigh his software not running on Linux.
Wine is the best bet here, but it's certainly not an option for gamers. Gallium3Ds D3D state tracker might come in useful here. Let's hope they'll get somewhere!

Damn, that was a huge rant. I did not intend that. I actually just wanted to post that link:
Well, I added a tl;dr up there; if you read through till here, I hope you enjoyed it!

No comments: