Jump to content

  • Log In with Google      Sign In   
  • Create Account


The state of Direct3D and OpenGL in 2012?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
11 replies to this topic

#1 keelx   Members   -  Reputation: 104

Like
0Likes
Like

Posted 13 May 2012 - 07:24 PM

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.

Sponsor:

#2 Promit   Moderators   -  Reputation: 6335

Like
1Likes
Like

Posted 13 May 2012 - 08:30 PM

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.

#3 swiftcoder   Senior Moderators   -  Reputation: 9759

Like
0Likes
Like

Posted 13 May 2012 - 08:34 PM

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 Posted Image

Edited by swiftcoder, 13 May 2012 - 08:35 PM.

Tristam MacDonald - Software Engineer @Amazon - [swiftcoding]


#4 bglanzer   Members   -  Reputation: 459

Like
0Likes
Like

Posted 13 May 2012 - 09:11 PM

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


#5 Promit   Moderators   -  Reputation: 6335

Like
2Likes
Like

Posted 13 May 2012 - 11:35 PM

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.

#6 MJP   Moderators   -  Reputation: 10577

Like
3Likes
Like

Posted 14 May 2012 - 12:03 AM

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. Posted Image Most people probably wouldn't care that much.

Edited by MJP, 14 May 2012 - 12:05 AM.


#7 Krohm   Crossbones+   -  Reputation: 3016

Like
0Likes
Like

Posted 14 May 2012 - 01:16 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.

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).

#8 l0calh05t   Members   -  Reputation: 669

Like
0Likes
Like

Posted 14 May 2012 - 06:54 AM

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...

#9 Krohm   Crossbones+   -  Reputation: 3016

Like
0Likes
Like

Posted 14 May 2012 - 07:39 AM

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.

#10 mhagain   Crossbones+   -  Reputation: 7592

Like
0Likes
Like

Posted 14 May 2012 - 08:38 AM

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.

It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.


#11 BornToCode   Members   -  Reputation: 915

Like
1Likes
Like

Posted 14 May 2012 - 08:11 PM

It is all about concepts. Once you know the concept an Api is just an Api.

#12 bobbias   Members   -  Reputation: 120

Like
0Likes
Like

Posted 15 May 2012 - 07:46 AM

It is all about concepts. Once you know the concept an Api is just an Api.


Agreed. I'm learning opengl because I want to write games that are capable of being played on many different platforms, but I suppose that once I've really gotten a grasp on the fundamentals, a switch over the D3D shouldn't be too difficult.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS