Is DirectX more advanced than OpenGL
Should I keep learning OpenGL or just switch to DirectX for a better chance of getting a job in the gaming industry? [closed]
I've been learning graphics programming with OpenGL and Linux for some time. I'm pretty familiar with most of the concepts, but I really want to expand 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 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 of the answers / comments, I've decided to dig deeper into the graphics with OpenGL / GLSL, but I'll try to play around with DX too just to have a basic understanding of the API. I want to thank everyone for the answers and insights you have given me.
It really doesn't matter. The core concepts are the same in both cases, especially now that pixel shaders are the norm. And since most games are multi-platform, they will likely use a subset of features that are similar in both languages. As long as you can write shaders in glsl or hlsl, everything is fine.
That being said, the number of "Game Engine Development" positions is small. Most companies use something off the shelf. There are even fewer newcomers to the existing positions. Most entry-level game programmers don't write graphics-related code (except maybe shaders) because everything has been abstracted away.
It all depends on the job you want / get. You're probably thinking of a job in the PC market where DX is king. Keep in mind that most AAA companies target the console market where APIs are very specific.
For example, the PS3 has proprietary enhancements for the OpenGL ES implementation.
OpenGL is growing in the mobile space. Now it's available on all modern platforms except Windows Phone 7.
Only OpenGL ES is currently available in this area. However, more powerful PowerVR chips are also supported by OpenGL 4 and DX11.
Your OpenGL knowledge is worth its weight in gold. You can return to DX for a job that requires it. In the meantime, however, keep in mind that OpenGL leads the way in terms of the number of devices and platforms it is available on.
To edit : Additionally, more and more companies are leaning towards using existing engines, and often even core game developers are increasingly being scrutinized by the low-level APIs. It is always better to have a good knowledge of native APIs if you encounter bugs and strange behavior on certain platforms. But it all comes down to the concepts, and as others have pointed out, DX and OpenGL essentially require knowledge of the same concepts.
To edit : Since you are already familiar with OpenGL, and probably with shaders, you should try OpenCL ... This API has the potential to be the next big thing in parallel computing.
I mention it because the OpenCL kernels use data types that are OpenGL compatible and easy to understand for OpenGL developers. Take a look at this and see if you can get experience with a great general computing solution (which is currently being built into missile physics for example)
I agree that it doesn't matter which API you learn. It is important to know the basic concepts.
Windows is not the only target platform when developing games. I heard Apple is growing as a target platform, but the consoles are also very important. Consoles usually have their own special graphics API (I think they just do this to annoy us). While the console APIs have more to do with OpenGL than DirectX, it's still not much of a difference.
Go with whatever works for you.
How about the perspective of a game development professor?
Once you know the basics of OpenGL, it is highly recommended that you delve into the world of DirectX (note that Dx9 is still used in development for compatibility reasons) as older platforms (especially XP) don't support the newer graphics pipeline in Dx10 and Dx11. (This should be taken as a recommendation to start in Dx9 and then note the differences in Dx10 and then 11 as you advance.) This will also make you rounder.
Ideally, you want to spend some time in HLSL and CG (note that these two seemingly different shader languages are actually the same language (one from Microsoft and the other from Nvidia) and understand how vertex and fragment (pixel) shaders are work Be a huge asset to you and any game company you want to work for (assuming you're working on rendering systems or subsystems, not AI code. ;-)
Ogre3D is an open source rendering engine that supports both graphics subsystems (OpenGL / DirectX) and is used in many games. Since the source is freely available, you can sift through it and compare how calls to OpenGL differ from calls to DirectX.
I would also recommend, because you've already spent some time in OpenGL, that you look to WebGL, which is set to explode in the near future.
Hopefully this helps!
I recently read that John Carmack recommends DirectX because Microsoft has been playing hookup with openGL for a while. That way they created a competitive product and moved the envelope while OpenGL folks spent time digging into DirectX and doing the design, getting polished and, I think, easier to work with, but at openGL too stay.
Perhaps another option to consider is if you like graphics in general and what is going on in embedded space.
I work in the embedded area with Linux and WinCE. I was a former Ford SYNC architect (was there 6 years) and now I'm working on GM's CUE (GM's answer to Ford SYNC). Ford SYNC does not use openGL or DirectX. Ford chose Flash & Action script instead; I'm not sure what Flash is doing under the hood, but it's damn slow. JD Powers got a bad rating. GM's CUE is all Linux and openGL ES, and although GM CUE has a newer iMX processor, the performance of animation in openGL on Linux is mind-boggling. CUE / openGL is much faster. Again, Ford crippled their system with Adobe Flash.
So, if you want to be successful at games but are worried about competition and still love this type of work, you should look into options that will add to your resume. In my experience, WinCE doesn't use DirectX too often, at least in the embedded world. (WinCE may have a slightly different API than NT). OpenGL is everywhere in the embedded world and people are doing more things like tablets, car infotainment is all the rage right now, and of course smartphones ...
I would say that on your resume it is probably good to be able to say that you have worked with both of them regardless of what you specialize in.
I say it because, as with anything, beyond a certain point, it's more about general techniques than API / syntax knowledge. You need to be able to do things and be familiar with them, but you don't need to have large chunks of things implemented in both APIs. (That is O (n * m), which does not scale ...). Knowing a little about the APIs and knowing different techniques (e.g. O (n + m)) works and will be helpful.
Of course you will get bonuses for doing something "advanced" in DX as it shows you have a little deeper API knowledge, but in any case you need some advanced techniques to prove that you know how the boxes are connected should be (ignoring) the specific magic words you need to say to get it done).
It's the same with any API (3D or otherwise) or any programming language.
I found DirectX to be more difficult to learn and therefore a better skill. Directx is usually better supported by board manufacturers, but Microsoft doesn't release as many updates to take advantage of these advances (and only a select subset of hardcore gamers actually use these boards). In terms of game development, all major gaming platforms use their own proprietary graphics engines ... xbox -> DirectX Box :) Knowing about 3D concepts, meshes, lighting, transformations, etc. is a skill that is the same for everyone.
Knowing one, it's easy to pick up the other.
If you know OpenGL, you can easily program for smartphones (Android and iPhone) as well as Win / Linux / Mac.
DirectX is only Win / Xbox. So if you don't want to target Xbox I would say stick with OpenGL as it can target more platforms.
I prefer OPENGL. For example, let's say Android, the mobile operating system, is using OPENGL. There are so many game engines based on the OPENGL platform.
- The Vikings occupied all of Scandinavia
- Anyone hates on Quora Quora answers
- What is the importance of theory and practice
- Why does Chicago have a high crime
- Where can I download free rock albums
- What annoys old people
- Were the Anunnaki gay
- What percentage is required for GST goods
- What are the disadvantages of meditation
- What does human evolution expect
- Ideas can be completely independent of the language
- What is the number zero
- Why does love cause physical pain
- Is it dangerous to keep old batteries?
- Where can I find Juul in Delhi
- Most ordinary printer paper is acid-free
- Why should I buy a MacBook Air?
- Where is Diagon Alley in London
- What fears a caligyphobe
- What is the most successful sales model
- Why did Carmelo Anthony choose number 7
- What is the future of zen cart
- Are accident reports classified as public records
- Can we stay at the Rohtang Pass?