Speaking to Bit-Tech, AMD GPU division worldwide developer relations manager Richard Huddy explained why PC games' graphics aren't much better than consoles' graphics even though the GPUs available for PC are several orders of magnitude more powerful than those found in consoles.
"It's funny, we often have at least ten times as much horsepower as an Xbox 360 or a PS3 in a high-end graphics card, yet it's very clear that the games don't look ten times as good," he noted. "To a significant extent, that's because, one way or another, for good reasons and bad -- mostly good -- DirectX is getting in the way."
Huddy then explained that the overhead imposed by the DirectX implementation is the reason why PC games are limited to 2000 or 3000 draw calls per frame while the average console game can issue 10,000 to 20,000 draw calls per frame.
"Wrapping it up in a software layer gives you safety and security," he explained. "But it unfortunately tends to rob you of quite a lot of the performance, and most importantly it robs you of the opportunity to innovate."
The problem with the DirectX API is that each draw call needs to be passed to the CPU before translates it before passing it to the GPU. This method allows developers to write their code once for the DirectX API which handles the translation to whatever instructions set the installed GPU uses. On the other hand, console developers can avoid all translation overhead by addressing the console's GPU directly since it doesn't change.