I tried Google but found quite old articles, so I am in search of an answer in context to year 2012.

Hi all, I don't know if you will consider this question appropriate for this community but I am constantly searching for a perfect answer.What I have seen is that most of the games that are released these days are DirectX 1x based. Except for few games like Starcraft or Diablo which don't have high end graphics are using OpenGL.So I have few questions to ask.

The platforms i would like to target are PC (windows), Xbox 360 and PS3 (must).

Should I go with learning OpenGL to see my future in game development industry? Or should I shift to Directx?

If I learn OpenGL first, will it be difficult to learn direcx then?

If I try to stay an indie game developer, which API would be good?

Which one of the two API's are better from coder's (programmer's) point of view? Like OOP and style of coding.

Is openGL being cross platform should be the only reason to choose it over Directx? Even when vendors are not providing enough stable drivers for it.

1. Take a look in this Thread, since PS3 is a "must" for you. http://www.gamedev.net/topic/448798-opengl--and-ps3/2. Nope, it will be easier because you will know the "basics" behind 3D-programming.3. I would recommend you to learn XNA (c#) if you are going to be indie. It saves much more time. However, u can't programm games for PS3 with XNA.4.You should take a look in the docs of both and decide then.

Instead of worrying about where you'll be in the future, worry more about where you're at now. You have a whole heap of knowledge to learn and assimilate, and you'd be better served by focussing on that rather than on specifics of an API.

Either of OpenGL or Direct3D would serve you well with that goal. Concepts you learn in one will be easily transferrable to the other.

Learning OpenGL now will not lock you into "OpenGL always and forever and you don't go outside of those 4 walls".
Learning Direct3D now will not lock you into "Direct3D always and forever and you don't go outside of those 4 walls".

From a programmers point of view, OOP and style of the raw API doesn't matter too much. You'll likely be wrapping the raw API with your own drawing routines to a certain extent. What matters more - especially when learning - is quality, usability, tools, documentation, troubleshooting features and getting results quick. In the case of these, Direct3D is just so far ahead of what's available for OpenGL, so if it was down to a choice between the two (and it's not necessarily restricted to the two, but let's focus on them for now) my recommendation would be Direct3D.

Note that here I'm talking about the modern incarnations of each API, not the state they were in 15-odd years ago (where I would have made the opposite recommendation).

For the platforms you've mentioned, the only one of them you would really be using OpenGL on is the PC.

The 360 doesn't use OpenGL, it uses XNA (which is also available for PC).
The PS3 doesn't use OpenGL, it offers a choice of PSGL or LibGCM.
PSGL is not OpenGL, it's OpenGL ES 1.1 (quite different to desktop OpenGL) with some extra stuff bolted on.

Worrying about platforms at this stage is a non-starter. Worry about learning concepts and getting results first, then bring that knowledge to your chosen platforms.

So, XNA was mentioned up-thread, and that's another of those "there are not only two" options I mentioned myself here. I've no personal experience of it, but I do know that it is highly regarded and considered an excellent starting point. Based on that, it's my recommendation.

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.

I tried Google but found quite old articles, so I am in search of an answer in context to year 2012.

Hi all, I don't know if you will consider this question appropriate for this community but I am constantly searching for a perfect answer.What I have seen is that most of the games that are released these days are DirectX 1x based. Except for few games like Starcraft or Diablo which don't have high end graphics are using OpenGL.So I have few questions to ask.

The platforms i would like to target are PC (windows), Xbox 360 and PS3 (must).

Should I go with learning OpenGL to see my future in game development industry? Or should I shift to Directx?

If I learn OpenGL first, will it be difficult to learn direcx then?

If I try to stay an indie game developer, which API would be good?

Which one of the two API's are better from coder's (programmer's) point of view? Like OOP and style of coding.

Is openGL being cross platform should be the only reason to choose it over Directx? Even when vendors are not providing enough stable drivers for it.

Thanks in advance.

First of all ,you can't develop for the PS3 without a devkit anymore (since sony removed the OtherOS function (Which didn't support hardware acclerate graphics anyway and thus wasn't really suitable for games)). For the xbox360 XNA is the only option for indies, if you get a devkit you can use an API that is similar to D3D9 instead but devkits are expensive and Microsoft/Sony only sell them to established publishers/studios.

Thus you can pretty much forget about the PS3, leaving you with Windows and the xbox360 making C# and XNA the only available option. (If you cut out xbox360 support and only develop for Windows then you can use pretty much anything you can think of)

By the time you're at the stage where you could potentially work for a company that is capable of getting a devkit the PS3 and xbox360 will be replaced by a new generation of consoles which may or may not use vastly different APIs so if you are doing things for learning purposes then the choice of API is mostly irrelevant.

As far as performance and features goes OpenGL and D3D are mostly equal but there are two important differences:

1) Intel has pretty darn awful OpenGL drivers (on all platforms) (They got GPUs with drivers that support D3D11 but only OpenGL2.1 for example and their OpenGL performance is sub-par, If you want to support low end integrated GPUs on Windows then D3D is the better choice, (If you want to support them on Mac/Linux then you have no choice anyway)2) OpenGL works on Mac/Linux/BSD/Solaris/etc (Allthough Mac doesn't have OpenGL 4 support yet which is worth remembering if you're using OpenGL for portability reasons), Direct3D is only for Microsofts platforms.

also, OpenGL:ES is quite similar to OpenGL and works on Android/iOS.

In general the documentation for D3D is significantly better, (MSDN is a pretty awesome resource for all Microsofts APIs).

When it comes to picking an API for learning purposes i would have to recommend D3D over OpenGL simply due to the vast amount of really outdated OpenGL tutorials online (alot of them, even ones that are written recently use immediate mode which stopped being a good idea to use back when OpenGL 1.1 was released in 1997) by going with D3D you're pretty much forced to do things the right way (and this will be beneficial if you use OpenGL later aswell).

If you decide to go with OpenGL first anyway i'd recommend asking in the OpenGL forum on this site if the resources you choose to learn from are good or not.

I don't suffer from insanity, I'm enjoying every minute of it.The voices in my head may not be real, but they have some good ideas!