Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I've been learning graphics programming for some time now using OpenGL and Linux. I'm pretty familiar with most of the concepts, but I would really like to further my knowledge and eventually pursue a career in game development, especially game engine development.

So far it seems to me that the majority of game studios make games for Windows using DirectX.

Edit: I know that the OpenGL vs DirectX question has been asked here before, but I haven't found an answer in the perspective I want.

Edit 2: After reading all the responses/comments I've decided to continue diving deeper into graphics with OpenGL/GLSL, but I'll try to play around with DX as well, just to have a basic understanding of the API. I'd like to thank everyone for the answers and insight you've given me.

share|improve this question

closed as primarily opinion-based by Byte56, bummzack, Sean Middleditch, Josh Petrie, Anko Jun 29 '13 at 19:18

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

    
A generalized version of this question might yield some good answers at programmers.stackexchange.com ... –  Macke Oct 26 '11 at 19:26
    
I've basically been taught the finer points of DX shaders by an OpenGL guy that has never done HLSL. As long as you know that "fragment shader" means "pixel shader", the concepts are pretty much the same ;P –  drxzcl Oct 27 '11 at 7:41
    
IIRC, DirectX was made a fair bit more OpenGL-like in version 8 or 9. Before then, DirectX was sometimes criticized as being unnecessarily hard to use. The APIs are still different, but the general approaches should be pretty similar. Disclaimer - I'm not an expert on either. –  Steve314 Oct 27 '11 at 8:12
    
@Macke - Career advice is off topic @ Programmers. This is probably too specific but general career questions will be on topic @ Professional Matters (Currently proposed in area 51) Please go and commit to supporting this SE –  Chad Oct 27 '11 at 16:52
    
Overwhelming odds are even if you get into the industry you won't be a graphics programmer and it won't matter in the least if you know one API, the other, both, or none. Beyond that, depends on the company and project. D3D is way more commonly used in the PC space, GL|ES is completely dominant in the mobile space, and the consoles all use proprietary APIs you can't really learn on your own. –  Sean Middleditch Jun 24 '13 at 23:22
add comment

9 Answers 9

up vote 24 down vote accepted

It really doesn't matter. The core concepts are the same in both, especially now that pixel shaders are the norm. And since most games are multiplatform they're probably going to use a subset of features that are similar in both languages. As long as you can write shaders in glsl or hlsl, you'll be fine.

That being said, the number of "game engine development" positions out there are small. Most companies use something off the shelf. For those positions that exist, even fewer of them are entry level. Most entry level game programmers don't write any graphics-related code (other than maybe shaders) because it's all been abstracted away.

share|improve this answer
1  
What do the most entry level programmers do? In large, medium or small studios? –  iamcreasy Oct 26 '11 at 20:46
    
That's a separate question. gamedev.stackexchange.com/questions/5538/… –  Tetrad Oct 26 '11 at 20:57
1  
Just to add a more general answer, in my experience junior programmers tend to start off in gameplay, ui, hud and work up from there, gameplay is a popular entry point. –  JuniorDeveloper1208 Oct 27 '11 at 1:32
    
Asset integration menus and UI are even more common entry points from my experience. –  Coyote Oct 27 '11 at 12:44
    
Guys, let's not start a long thread about that particular question in the comments here. Those are perfectly good answers to the question I linked to. –  Tetrad Oct 27 '11 at 16:15
add comment

It all depends on the job you want/will get. You probably think about a job in the PC market where DX is king. Just remember that most AAA companies aim for the console market where APIs are quite specific.

The PS3 for example has proprietary extensions to its OpenGL ES implementation.

OpenGL is growing in the mobile space. Now it's available on all modern platforms but Windows Phone 7.

Currently Only OpenGL ES is available in this space. But more Powerful PowerVR chips are coming with support for OpenGL 4 and DX11.

Your OpenGL skills are gold. You can reconvert to DX to land a job which requires that. But in the meantime remember that OpenGL is king on the quantity of devices and platforms where it is available.


Edit: Additionally more and more companies tend to use existing engines and often even core game developers are more and more screened from the low level APIs. It's always better to have a good knowledge of native APIs when you are facing bugs and strange behavior on specific platforms. But it all comes down to the concepts, and as others pointed out DX and OpenGL at the core will require knowledge of the same concepts.


Edit: As you are already familiar with OpenGL and probably shaders you should try OpenCL... This API has the potential of becoming the next big thing in parallel computing.

I'm mentioning it as the OpenCL kernels use datatype that are interoperable with OpenGL and are simple to understand for OpenGL devs. Have a look at that and see if you can acquire some experience with a great general computing solution (currently being integrated into bullet physics for example).

share|improve this answer
    
OpenGL being an industry standard it inspired other libs and APIs. You shouldn't neglect its importance. But on the other hand you should not stop at one thing and if I were you I would have a look at higher level APIs and engines which abstract OpenGL and DirectX. –  Coyote Oct 27 '11 at 13:09
    
I am familiar with OpenCL. I've been working on a side project, building a physics engine(rudimentary, mostly for learning purposes) and I've used a little bit of OpenCL to make it faster but haven't gotten amazing results yet(in some cases I even made it worse) –  adivasile Oct 27 '11 at 13:16
    
That's a sign of a good try ;) Have a look at the implementation in the bullet engine. Anyhow, good luck with your projects. –  Coyote Oct 27 '11 at 13:22
    
Thank you. I wish you the same. –  adivasile Oct 27 '11 at 13:24
add comment

I agree, that it doesn't really matter which API you learn. It's important to know the basic concepts.

When looking at game development, Windows is not the only target platform. As I've heard, Apple is growing as a target platform, but the consoles are really important as well. Consoles normally have their own specialized graphics API (I think they're doing that just to bother us). While the console APIs tend to have more in common with OpenGL than with DirectX, it's still not a huge difference.

Go with whatever works for you.

share|improve this answer
    
XBox probably does stuff the DirectX way... ? –  Macke Oct 26 '11 at 18:58
    
Yes, PS3 uses PSGL. But, X360 used DirectX as they are on PC, though not sure about it, just a guess. –  iamcreasy Oct 26 '11 at 20:48
    
I have not experience on the Xbox, but according to Wikipedia its API is based on DirectX. On PS3, PSGL is only one of the available APIs. –  mrbinary Oct 27 '11 at 6:24
    
X360 uses an API that is close to DX9, with a few quirks to accommodate the fact that it has a relatively small amount of relatively fast memory. –  drxzcl Oct 27 '11 at 7:43
add comment

How about the perspective of a Game Development Professor?

If you have the basics of OpenGL down then by ALL means venture into the world of DirectX (note going into DX) that Dx9 is still being used in development for compatibility reasons, as older platforms (specifically XP) don't support the newer graphics pipeline in Dx10 and Dx11. (that should read as a recommendation of starting in Dx9 and then noting the differences in Dx10 and then 11 as you progress) That will also make you more rounded.

Ideally you will want to spend some quality time in HLSL and CG (Note that these two seeming different shader languages are actually the same language (one is branded by Microsoft and the other by Nvidia) understanding how vertex and fragment (pixel) shaders work will be a huge asset to you and any game company that you go to work for (assuming that youre working on rendering systems or subsystems and not AI code. ;-)

Ogre3D is an open source rendering engine that supports both graphics subsystems (OpenGL / DirectX) and is used in many games... because the source is freely available you may enjoy digging through it and seeing by comparison how calls to OpenGL differ from calls to DirectX.

I would also recommend that because you have already spent some time in OpenGL that you poke at WebGL which looks like its going to blow up in the very near future.

Hope that Helps!

share|improve this answer
    
I wouldn't say WebGL would blow up in the future, at least not in any near future. Its just another way to render 3d on browsers without any plugin. –  iamcreasy Oct 26 '11 at 20:51
    
With major vendors adding HTML5 and JS support to their products (Visual Studio) and companies like Adobe rolling out Edge (HTML5 JS Flash killer?) I think that were going to see a lot more web based content that takes advantage of the hardware acceleration. –  Robert French Oct 26 '11 at 21:13
add comment

I read recently that John Carmack recommends DirectX for the simple fact that Microsoft, for awhile, played catch-up to openGL and by doing so they created a competitive product and pushed the envelope while openGL folks spent time arguing and doing design by committee allowing DirectX to become polished and, I guess, easier to work with but sticking with openGL.

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html

Maybe another option to consider if you like graphics in general and for what it's worith is what's going on in the embedded space.

I work in the embedded space using both Linux and WinCE. I was former Ford SYNC architect (was there for 6 years) and now I work on GM's CUE (GM's answer to Ford SYNC). Ford SYNC doesn't use openGL or DirectX. Ford, instead, opted for Flash & Action script; what Flash does under the hood I'm not sure but it's slow as hell; JD Powers gave it poor rating. GM's CUE is all Linux and openGL ES and although the GM CUE has a newer iMX processor the performance of animations in openGL on Linux are staggering. CUE/openGL is much faster. Again, Ford crippled their system with Adobe Flash.

So, if you're looking to make it in games but are concerned about the competitive nature but still love this type of work, maybe look at options that broaden your resume. It has been my experience that, at least in the embedded world, WinCE doesn't seem to use DirectX all that much. (WinCE has slightly different API than NT might be part of that reason). OpenGL is everywhere in the embedded world and people are doing more things such as tablets, automobile infotainment is hot right now, and of course smart phones...

share|improve this answer
    
+1 for mentioning the embedded space. I hadn't thought about going into graphics for embedded systems(except for mobile platforms), but after doing a little research I found it to be choice worth considering. I did have an interest for embedded platforms a few years ago, but other stuff got in the way, so I wound up abandoning it pretty early on. –  adivasile Oct 27 '11 at 16:04
    
+1 for interesting insiders view of SYNC/CUE ;) –  user_123abc Oct 27 '11 at 16:13
add comment

I'd say it probably good on your resume to be able to say you have worked with both, regardless of which you've specialized in.

I say so because, as with anything, it's more about general techniques than API/syntax knowledge beyond a certain point. You need to be able to do stuff, and know your way around, but you don't have to have implemented huge pieces of stuff in both API:s. (Thats O(n*m), which doesn't scale...). Knowing the APIs a bit, and knowing different tecniques (i.e. O(n+m)) works, and will be helpful.

Of course, you will score bonuses for doing something "advanced" in DX too, since it shows you have some deeper API knowledge, but you need some advanced techniques in any case, to prove that you know how the boxes should be connected (ignoring the specfic magic words you have to say to get it done).

It's the same with any API (3d or otherwise), or any programming language, really.

share|improve this answer
add comment

I found that DirectX is harder to learn and therefore a better skill. Directx usually has better support from board manufacturers, however, microsoft does not release that many updates to take advantage of those advances (and only a select subpopulation of hardcore gamers really use those boards). Regarding game development, all the major game platforms use their own proprietary graphics engines ... xbox -> DirectX Box :) Knowing 3D concepts, meshes, lighting, transformations, etc, is a skill that is the same for all of them.

share|improve this answer
    
I have found very little conceptual difference between DX9-ish and "modern" openGl (without using glBegin). I would appreciate your thoughts as to why one of the two is "easier" or "harder" than the other. –  drxzcl Oct 27 '11 at 7:49
1  
I actually find that OpenGL is easier to pick up the really fundamental basics in, but as soon as you move on to VBOs and shaders, D3D becomes much easier (the lack of extensions makes it more consistent across a broader hardware base too). –  Jimmy Shelter Oct 28 '11 at 12:09
    
That's my experience too, hence the question. –  drxzcl Nov 1 '11 at 20:43
add comment

If you know one you can easily pick up the other.

If you know OpenGL you can easily program for smart phones (android and iPhone) plus win/Linux/mac.

DirectX is only Win/Xbox. So unless you want to target Xbox, I'd say stay with OpenGL since it can target more platforms.

share|improve this answer
add comment

I prefer OPENGL. Consider for example, Android the mobile operating system uses OPENGL. There are so many game engines that are developed based on the OPENGL platform.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.