The state of Direct3D and OpenGL in 2012?

Started by
10 comments, last by bobbias 11 years, 11 months ago
So, sorry if I'm posting in the wrong thread, or this question is off-topic or anything of the sort,
but,
What is the current state of the two major (and only, I'm pretty sure) graphics API's, direct3d and opengl? Which one is more popular among game developers? Or just developers in general?
I have seen more games being ported to Mac OS X, with the rise of Steam, games such as all the Valve games, and also many games are using OpenGL to be able to support mobile platforms such as Android and iOS as well. And while this isn't exactly prominent, WebGL is also seems to be slowly becoming popular (more popular than flash it would seem for games at least). But with Direct3D for both Windows platforms and the Xbox, not to mention XNA, there is also a lot to be seen in those areas.

So, my question is, is the market leaning to one API over the other? Which one? Is it shifting at all, or is it stagnant? Is there anything in either API that has promise for the future?

I basically am just curious about the current state of the two API's in comparison to the other.
Advertisement
Both work fine, D3D's much nicer, usually your platform dictates the choice. That's pretty much it. At the end of the day, learning modern GL (ie 4.0 and ES 2.0) prepares you for most of the non-Windows platforms you're likely to see, and that makes it a compelling choice even though the API itself is fairly shoddy.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
The API is largely irrelevant - if you learn one of (modern) OpenGL or Direct X, you should be able to pick up the gist of the other in a couple of days.

Provided, of course, that you actually learned the theory at the same time smile.png

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

In my own experience OpenGL is alot easier to learn for a beginner. DirectX is a little more diffucult. But like switftcoder said learn one and you should pick the other up pretty quickly.

Brendon Glanzer

I forgot to mention, also, that both APIs are essentially a minor part of your code these days. Once you've got the concepts down, it's more just a question of wiring up the API to do things the way you need. It seems like a really big deal as a beginner to be coding all this D3D or OGL stuff, but I can honestly say it's probably the most boring part of my graphics coding work. The API is just a machine I have to configure so that my CPU code and my GPU code talk to each other properly.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
I can't speak for every game developer, but we work with whatever API is available on the hardware. Windows is the only place we have a choice, and we happen to use D3D11. I'm sure other studios use OpenGL on Windows. Personally you'd have to pay me a *lot* of money to choose GL over D3D11 on Windows, but that's just me. smile.png Most people probably wouldn't care that much.

In my own experience OpenGL is alot easier to learn for a beginner. DirectX is a little more diffucult. But like switftcoder said learn one and you should pick the other up pretty quickly.
I disagree. Even comparing oldschool GL to D3D9, there are very few things where GL is truly easier. My transition from GL to D3D9 has been rough at best, mostly because GL actually shaped my line of thinking to its model. In the end this does not matter: D3D11 provides a much better environment for learning and it's not like writing a transform shader is a big problem.

I think the state of GL is pretty sad. Not as sad as it was a couple of years ago when Mt. Evans was not released and they gave us scraps but almost there. Well, at least they have feature parity. No wait, they don't (CS not part of the API as far as I understand).

Previously "Krohm"


No wait, they don't (CS not part of the API as far as I understand).


There is OpenCL which includes interop extensions for OpenGL...

Personally I very much prefer OpenGL (I hate the DX API, the left handed coordinate system, and the row vectors... why can't they use the same conventions used in pretty much every math book around?!), but considering the fact that nVidia has been crippling OpenGL performance on non-Quadro cards...
Bingo! Are GL and CL the same thing? No. Can they interop? Sure, that's pretty different thing from CS anyway. Learn an ecosystem instead of an API. And write the code interfacing them.
BTW, shader driven D3D is column-major as well. But anyway, personal opinions are thing we could discuss a long way.

Previously "Krohm"

These days there's very little difference at API level between modern OpenGL and modern D3D. They work in very much the same way and you'll be writing the same kind of code with each.

D3D has, at least since version 9, been column-major internally, and the D3DX matrix library has always been able to generate either LH or RH co-ordinate systems. These are complete non-issues.

OpenGL is certainly easier to get a first triangle on the screen, put a texture on it, light it and make it spin, but that pre-supposes that you're using immediate mode and the fixed pipeline. If you want to write high-performance code with non-trivial effects things become a lot more equal, with D3D edging ahead a little owing to less legacy API cruft and a cleaner, more sensible design (no bind-to-modify, separation of buffer/offset from vertex attrib definitions, explicit registers in shaders, etc). Nothing insurmountable, but somewhat annoying to have to deal with.

D3D still has better driver quality and better tools. Documentation is a mixed bag - the D3D9 documentation is excellent, D3D10 is mostly alright, and D3D11 has it's moments but can be quite dreadful in places, with some fundamental errors that persisted for far longer than they should have (I'm specifically thinking of DstX/DstY/DstZ in CopySubresourceRegion here). The GL documentation is quite good but lack of a downloadable SDK and searchable help file hampers it, IMO. The spec PDF is something, but not enough.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

This topic is closed to new replies.

Advertisement