OpenGL vs DirectX?

So I got the Humble Bundle 8, which includes AwesomeNauts. When I started it, I noticed that it had the option of using OpenGL (which was recommended) or DirectX.

I was wondering if any of you fine TekSyn members could tell me what the differences are between them, both when playing and developing a game.

Thanks in advance.

OpenGL/OpenCL/OpenAL are open source API's, supported on both open source and closed source graphics drivers and on both open source operating systems and operating systems that have things to hide for the user.

DirectX is the microstufft proprietary API that only works on windoze (in)stalls, only supported by proprietary (closed source) graphics drivers.

Is there an advantage (graphical-wise) using one or the other on a Windows system?

I know that often openGL runs faster.

About what percentage faster? And I assume that OpenGL/CL/AL is easier to code, due to it being open source?

Like Knight says, OpenGL often runs faster. The advantage of the OpenGL API is that the source is visible to anyone, so anyone can compile a software product that uses that API to benefit from all the possibilities the API offers, just because you can see everything it does. With a closed source API, you have to work together with the owner of the API, he will sell you a software you have to use to enable the API in the software you're developing, and he might tell you everything the API can do, or he might not, or he might make it dependant on whether or not he can make a deal with you. For example: if it's a game that's going to be on Windows Live Games, Microsoft will probably tell the developer how to make use of the API so the game runs faster, but if it's a humble bundle game or another indie title, microsoft will not, and the directX API will perform much worse than the OpenGL/OpenAL API's.

The percentage faster is not determinable, because DirectX is closed source, we don't know what it does, so there is no comparison possible.

It's a shame to develop with expensive microstufft software to get a result that will only run on the windoze platform, it's better to develop for the open source platform and have a result that runs on all platforms.

So, why would anyone want to use DirectX?  Why is it the choice for a lot of AAA games (Assassin's Creed, Borderlands, Mirror's Edge to name a few)?

A lot of AAA games are windows-only, hence directX.

There are other factors. For instance, the graphics drivers of gaming grade graphics cards are not as highly developed as the windows drivers, just because the graphics card manufacturers don't want to make their source code open, because they think someone will steal something from them or some other archaic way of thinking that makes no sense, because what happens now, is that for instance the nVidia cards are clean room reversed engineered (which means shaving off microlayer per microlayer of material from the nVidia chip and making electron microscope pictures of that, then analysing the pictures and reverse engineering the technology, just to be able to figure out how these things work, so that an open source driver can be written for them), which wouldn't be necessary if nVidia would simply submit code to the linux foundation to be merged into the kernel, like Intel does for example, or AMD does for it's professional range graphics cards.

The end result is that the graphics drivers on faster open source operating systems are actually slower than those on the slower closed source operating systems, because of commercial bigotry. With nVidia, that's mostly because the clean room reverse engineering can figure out how the chip works, but not what it takes to make the chip shift up to a higher GPU frequency, so that the open source drivers for nVidia cards always make the card run at the lowest powersaving frequency and you have to install the nVidia proprietary drivers to make the GPU run fast, which is not always possible on all systems (for instance there are a lot of users that can't take the risk of installing software they check for themselves on whether or not it's spyware or malware of some kind, because for all anyone knows, proprietary software can contain hidden trojans, spyware, or other malware), whereas the AMD commands to ramp up the GPU frequency are known to the open source community, so that the open source AMD drivers perform very close to the AMD proprietary drivers, and will overtake these in the very near future.

So in short: because the GPU code is not open sourced or not fully open sourced, even if the OpenGL/CL API's are much more efficient than DirectX and the Open Source operating system is much much more efficient than windoze, the graphics card might not perform as well, depending on the drivers that are used.

A lot of AAA games are windows-only, hence directX.

This is only partially true. Most engines can run on both OpenGL and Direct3d. The reason why they don't support Linux or Mac is often more complex.

manufacturers don't want to make their source code open, because they think someone will steal something from them or some other archaic way of thinking that makes no sense

I don't think this is true. It's copyright and licensing issues that prevent them from open sourcing their drivers. If AMD could OS their driver, they would do it but they can't so they started the OS driver. Nvidia on the other hand didn't start with a OS driver, so I don't even care for them.

The end result is that the graphics drivers on faster open source operating systems are actually slower than those on the slower closed source operating systems, because of commercial bigotry

Amen to that!

so that the open source AMD drivers perform very close to the AMD proprietary drivers, and will overtake these in the very near future

That's very optimistic imho. I'm currently stuck with the radeon 4580 on linux 3.5 and I get roughly half of the fps on the OS driver. I hope they will overtake fglrx soon, but I think this won't happen in the next 2 years at least.

 

This is more ontopic: The source engine was ported to linux. They translated d3d calls to ogl calls and even with the overhead of using another abstraction layer it performed 20% better (this is just one sytem, though so don't take the number too seriously).

Valve: https://developer.nvidia.com/sites/default/files/akamai/gamedev/docs/Porting%20Source%20to%20Linux.pdf

Others: http://www.extremetech.com/gaming/133824-valve-opengl-is-faster-than-directx-even-on-windows http://www.phoronix.com/scan.php?page=news_item&px=MTE1NzE

so how is it that we can't opt for opengl in steam games like we could back in the quake days?