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