Quote:Original post by GameCat
In general I'd say that in the beginning OpenGL is easier to learn but when doing advanced stuff D3D is slightly better.
Oh, you'd say that. So, tell us, what exactly makes it slightly better for advanced stuff ?
It's always the same pattern: "both are perfectly equal, it doesn't matter which one you choose, blablabla, BUT, is slightly more advanced."
No offense, but that is bullshit. I'm seriously getting sick of it. As a matter of fact, both APIs are *NOT* equal at all, both have their very specific strengths and drawbacks. It DOES matter which one you choose, depending on the domain you want to apply it to and depending on the application you develop.
Let's clear up a few "facts" (read: misinformation) that is often posted in such threads, shall we ?
-> OpenGL does in fact support double precision access points. It's incorrect to assume that no 3D hardware uses them. That's maybe the case for consumer level gaming hardware, but OpenGL is available for very expensive highend 3D system which in fact support double precision math in hardware.
-> In terms of cutting edge features, OpenGL has the lead due to the extension mechanism. Vendors can add new features to OpenGL by using an extension, instead of waiting a year for MS to update D3D. HOWEVER, often these features end up being vendor dependent (not always, though, for example render-to-vertex-array). So if you want to play around with the most cutting edge technology available right now, use OpenGL. If you prefer perfect vendor independence on a slightly lower technological level, use D3D.
-> D3D has the advantage of (almost) perfect standarization across all chipset manufacturers, since it is being developed by a single third party company. If feature A works on chipset X, then you can be pretty sure it will also work on chipset Y without maodifications. That's not always the case with OpenGL (although it's getting a lot better recently). On the other hand, MS does a lot of changed from one version to the next, which might break compatibility. OpenGL has always been backwards compatible.
-> Multiplatform argument. Everybody knows this one. D3D = Windows + Xbox, OpenGL = Windows + Linux + Mac + Unix* + various consoles - Xbox (unless it's hacked).
-> In the industrial, R&D, manufacturing, and military sectors, D3D is almost unheard of. OpenGL totally dominates these sectors. The reasons are historical for one, but also because D3D has this stigmata of a "video game API". That's partially true. Heavy duty OpenGL applications by highend vendors (eg. 3DLabs and SGI) are stress tested under conditions not even imaginable for D3D (due to its closed source nature). OpenGL is better suited for security critical and fail safe applications. Also, industrial applications often run on non-Windows systems, and/or use professional high end 3D chipsets without (or only with very basic) D3D support.
-> Easier to learn argument: irrelevant. Both are easy, if you're ready to learn a 3D API. If you don't understand either of them, then you should ask yourself if you shouldn't be learning programming basics instead of jumping into 3D graphics.
So at the bottom line, don't just pick one. You might regret it later. Analyze your requirements, make some research about the strengths of each API, make a PRO and CONTRA list. Discuss it with your team and select based on all these inputs, instead of basing your decision on the personal preference of anonymous (the irony...) OGL/D3D zealot number #549870-C.