<p><pre><code> API use was shifted in favor of DirectX
by Microsoft's two-pronged DirectX
campaign around the launch of XBox
360 and Windows Vista, including the
spread of FUD (fear, uncertainty and doubt)
about the future of OpenGL, and wild
exaggeration of the merits of DirectX.
</code></pre>
I thought it was because that, at the time, the OpenGL API was shit [1].<p><pre><code> By the time of OpenGL 2.1, OpenGL was
running into a problem. It had a lot of
legacy cruft. The API wasn't easy to
use anymore. There were 5 ways to do
things, and no idea which was the fastest.
</code></pre>
And really, the author of the blog post should have known this when the blog post was written...<p><pre><code> By David Rosen on January 8th, 2010
</code></pre>
OpenGL 2.1 came out in 2006 [2].<p>[1] <a href="http://programmers.stackexchange.com/a/88055/7067" rel="nofollow">http://programmers.stackexchange.com/a/88055/7067</a><p>[2] <a href="http://en.wikipedia.org/wiki/OpenGL#OpenGL_2.1" rel="nofollow">http://en.wikipedia.org/wiki/OpenGL#OpenGL_2.1</a>
Again that post. Spreading the lie that all game consoles support OpenGL.<p>Yes, OpenGL is a great API if one cares about portability and FOSS.<p>Reality, the game industry cares about their IP and getting games released no matter what technology stack is used.<p>Many AAA studios don't even develop for all platforms, rather target a main one, leaving the port to subcontractors.<p>Back in the golden days of the arcades, many subcontractors were not even given source code. There are plenty of subcontractor stories about having to play through games while taking pictures or recording on tape.<p>When you have development processes like this in place, the gaming API doesn't matter that much.
Isn't mobile and the web the decider these days? Article is from 2010, but consider if you want to develop 3D on any of these platforms:<p>iOS - OpenGL ES<p>Android - OpenGL ES<p>Mac - OpenGL<p>Linux - OpenGL<p>HTML5 - WebGL (based on OpenGL ES) - even in IE!<p>Emerging platforms like Tizen, Firefox OS - OpenGL ES/WebGL<p>DirectX is just for Windows and Windows Phone. Isn't it getting to the point where the bother of having to write a DirectX port might cause developers to skip the Windows platforms, or stick to OpenGL on Windows desktop? Windows isn't as overwhelmingly important as it used to be, and couldn't the fact that DirectX is different start to work against MS? Imagine if Blackberry came out with their own custom 3D API - wouldn't that only serve to hurt them?
Isn't this more or less a problem of the past?<p>Today with tools like Unity3d, UDK, CryEngine, Shiva Engine, MonoGame etc, game developers are at a point where they can pretty much stop worrying about the OpenGL/DirectX layer beneath their engines. Those Engines have become so powerful and affordable that it hardly makes any sense to roll your own. In fact, imo you would need a very strong reason to build your own engine these days instead of focusing on your product.<p>Soon all of these will support WebGL/HTML5 as a target and even render most of the (still very basic) WebGL engines obsolete.<p>Now if you were in the business of creating your own tools or engine, you would need to support both of OpenGL and DirectX to be able to support all the major platforms anyway.
This articles is from 2010 and is really dated.<p>Even Microsoft supports WebGL (based OpenGL ES 2) in Internet Explorer 11.<p>Beside that the article doesn't mention that OpenGL 2 came late (and 1.x is way outdated). And to bootstrap OpenGL 2+ on Windows you still need a OpenGL 1.4 context to create an OpenGL 2+ context. So not so trivial at all :/<p>As the article is pre-smartphone era: the future for OpenGL/WebGL is very good now. You can run WebGL on every device/OS (beside Windows, OpenGL 2/3 but no ES driver).
this is old, its also wrong in many ways. i keep hearing 'OpenGL' is cross platform.<p>This is a quantifiable lie. I have written cross platform rendering engines and worked with many, I can tell you right now that platform and vendor specific hacks for OpenGL are a necessary evil if you want your stuff to work properly.<p>If you are working in a cross platform environment you abstract away rendering then whether you are using DX or OpenGL (or anything else - RSX, or whatever...) is not really important.<p>The question I always wonder is why OpenGL isn't this... if I can make it so can anyone else, absolutely. Its not hard or especially time consuming and gives you the power of actually being cross platform.<p>This is a constantly improving situation though... for example I no longer need to tell a large number of Intel graphics cards that clockwise is infact counter-clockwise for face winding - because they are obsolete and the drivers have improved. There are still many problems of that nature though... you might not realise that the driver is processing your vertex shader on the CPU for instance which makes for a significantly different performance profile to similar hardware in that class...
The big problem for OpenGL was (a) Windows platform dominance, particularly in gaming, and (b) weak support for rapidly improving 3D hardware (but that was largely a case of already in progress network effects -- OpenGL drivers suck because very few people care, so even fewer people use OpenGL).<p>OpenGL was kept on life support in the aughts by high-end 3D products which are often cross-platform (e.g. Maya), and Apple (which switched to OpenGL from QuickDraw 3D after the spectacular failure of the latter -- incidentally OpenGL being "open" was SGI's proactive defense against QuickDraw 3D), and then rebuilt the entire Mac UI architecture on top of it.<p>OpenGL ES and iPhone have completely revived OpenGL's fortunes -- there's nothing much to worry about now unless Android and iOS both fail in the marketplace.<p>(It's entertaining that the Stackexchange post linked elsewhere was written more-or-less as a final "this is why OpenGL died" -- it's not dead yet... getting better...)
It feels like a lot and nothing has changed since that 3.9 year old blog post. On one had webGL, steamOS, Mac games, iOS games, and Android Games. On the other hand gaming PC is still a windows PC. What are your thoughts?
A series of relevant tweets from <a href="https://twitter.com/wolfire" rel="nofollow">https://twitter.com/wolfire</a> :<p>My old OpenGL vs Direct3D post is #1 on hacker news! <a href="https://news.ycombinator.com/item?id=6852961" rel="nofollow">https://news.ycombinator.com/item?id=6852961</a> Maybe time for a 2013 update -- a lot has changed since then.<p>1. D3D 11.1+ only supports Windows 8, which only 20% of Steam users have. OpenGL 4.4 works on all versions of Windows.<p>2. NVIDIA and ATI both now have good profiling and debugging tools for OpenGL that were formerly only available for DirectX<p>3. OpenGL Core is now lean and mean, making it easier for hardware vendors to create efficient and correct drivers.<p>4. Valve now strongly supports OpenGL with their own games and with SteamOS -- helps ensure the future of OpenGL itself, and vendor support.<p>5. Humble Indie Bundle creates an extra commercial incentive for indies to support Mac and Linux, which is much easier if you use OpenGL.<p>6. All the old points still stand -- OpenGL works on Mac, Windows, Linux, Web, iOS and Android. Direct3D only works on Windows and XBox.
One of my friend, a game developer, said that, once you get familiar with the DirectX 11, you will not want to use any other APIs. They look outdated.<p>And seriously, the GNMX API (a high level wrapper of GNM) of PS4 has more similarity to DirectX than OpenGL.
I'm amazed at the comments here on this thread... Personally OpenGL is strictly superior to DirectX, solely due to being cross platform. With the release of the Steam Box and a push from Valve to look at Linux as a first class target for games, hopefully we'll see development proceed to create better tooling to rival that and exceed DX.<p>This is good for all of us consumers, as the lock in inherent to the technology choices made my game devs will be diminished. I can only see that as a good thing.<p>And besides, middleware is getting so good, how many of us really need to hack on an engine anyway. My games logic is done in Lua, not C/OpenGL :)
For a 4-year-old post about the progress of Overgrowth, it doesn't really convince me to use OpenGL, considering that Overgrowth is still in alpha. It's a 4-person team and an ambitious game, so I'm sure it's not related to OpenGL use, but it's still kind of funny.
Portability etc notwithstanding and purely from an API point of view, there's no question that DirectX is superior to OpenGL. There are lots of examples, but the mere fact that you need _another_ 3rd party API such as GLEW even to be able to use OpenGL's latest features in the first place should speak volumes.
As a sidenote, Wolfire is currently working on <a href="http://www.wolfire.com/overgrowth" rel="nofollow">http://www.wolfire.com/overgrowth</a> which is quite impressive in terms of game mechanics.
They also post development videos on Youtube regularly which i find highly interesting: <a href="http://www.youtube.com/WolfireGames" rel="nofollow">http://www.youtube.com/WolfireGames</a>
>However, there's one big problem: they don't work on Windows XP! Half of PC gamers still use XP, so using DirectX 10 or 11 is not really a viable option.<p>This problem does not exist anymore.
Why does Unity use DirectX on Windows, and OpenGL elsewhere?<p>You'd think once they went to the expense of porting to OpenGL, they'd re-use that code on Windows? Or is it because they get better performance with DirectX on Windows?
Microsoft use to be on the OpenGL board (I believe in the 90s?). OpenGL was geared towards scientific development, and we know Bill Gates wanted PC to be gaming platform. OpenGL at the time wasn't good enough, nor were they willing to make the necessary changes to meet Microsoft's goals.<p>DirectX was born out of necessity, not proprietary greed.<p>Edit: Maybe its time to take another look at OpenGL - open is better than closed, especially for the multi-platform aspect. But does it have the same features as DirecX? Tesselation, shader programming, etc.
Please cite that this was from 2010 in the title. [1] There is a reason why openGL is the primary library used in research, it is awesome.<p>[1] - <a href="http://www.gamasutra.com/blogs/DavidRosen/20100108/86330/Why_You_Should_Use_OpenGL_And_Not_DirectX.php" rel="nofollow">http://www.gamasutra.com/blogs/DavidRosen/20100108/86330/Why...</a>
Could anyone recommend a book on programming shaders for OpenGL? I know the shader language is not OpenGL, but I never knew where a good point to start was.
Honestly, up until IOS and Android there wasn't a large "cross platform" gaming market. Now there is and OpenGL is starting to gain more use...the good thing there is that there are more people writing, buying, and playing games. (Not that OpenGL is being used.)<p>These vehement kinds of slashdotty style articles about MS's being this controlling conspiracy...you would almost think that...gasp...its a large corporation doing everything it can to make money for its shareholders. I mean, if the roles were somehow different and Apple were the market leader for the most popular gaming platform they would be all sweetness and light and no one would have any reason to complain. (Oh wait...)<p>It turns out that businesses in that position tend to make "lock in" plays. This post kind of glosses over SGI's history with OpenGL as if they were only ever kind and loving shepherds of an open standard that was created to help children.<p>Don't use directx cuz "evil" is stupid. If you were writing an application that needed to be cross platform...like a 3D authoring environment...you would probably want to look at opengl. (instead of writing your own...) If you were targeting the windows ecosystem directx has some platform integration features that are interesting. Tooling and developer experience also matter.<p>This kind of breathless nonsense is boring and silly.