Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Do you think it's possible to go straight from Experienced C++ programming (5 or so years) straight into learning DirectX 3d?

I mean....i'd be starting with the basics, im more interested in setting up Demos (like getting a good water demo and such) than actually doing a full fledged game.

Do you think this is possible?

share|improve this question
Possible, yes. Easy? No way. – The Communist Duck Apr 1 '11 at 16:08
up vote 17 down vote accepted

Absolutely it's possible. A great starting point Introduction to 3D Game Programming with DirectX 10 by Frank D. Luna. It is very easy to read, allows you to quickly implement a lot of common functions, and serves as a great base to learn more about DirectX and game programming.

share|improve this answer
Thats the exact book I was gonna start with lol. – user6465 Apr 1 '11 at 15:25
Another +1 for that book, very good read. From there I would recommend books by Wolfgang F. Engel. his Shader X books especially have been very useful over the years. – James Apr 1 '11 at 16:43
This is an excellent book which I have also recommended. – reverbb Apr 2 '11 at 0:26

Of course, though I recommend starting with a very, very simple 2D app since the initial learning curve (just getting a DX app running can be a chore) can be quite steep, and it's helpful to know whether the problems you're seeing are 3D-specific, or if you're just missing something very basic.

Implement Pong - you'll learn basics such as getting a DX app up and running, input processing, basic collision detection and, most importantly, how to draw stuff on the screen.

If it's your first app, it should take you less than a week to get that running. At that point, you should understand the basics of the DX framework, and be ready to start another project where you can focus on the 3D aspects - transformation matrices, object/state management, culling, lighting, etc. Maybe implement 3D pong, or racquetball.

share|improve this answer

Of course it's possible. It's also possible to learn C++ as your first programming language. But it's probably not the fastest way to get there.

Going from "programming" to "game programming" requires learning a few things regardless of graphics: game loops, realtime input, and so on. Those are MUCH easier to learn if you don't have to deal with learning a new graphics library at the same time. Learn one thing at a time and you'll probably have a much easier time of it. (And if you're an experienced programmer, learning the 2D stuff should really not take that long anyway.)

share|improve this answer

What does 2D have in common with 3D? Not much. 2D is either a flat world or a faked 3D that, while having a visual appearance somewhat resembling 3D, has very different code from true 3D.

Even for the stuff that they have in common, such as collision detection, how hard is it to extend the code into 3D? Pretty easy.

Simply put, learning 2D won't help you as much as you might think in your journey to learn 3D game or engine design. They have little in common, and for what they do have in common, 2D isn't really an easy "stepping stone" to get you up to 3D.

As David Lively suggested, you might want to start out with a very basic 2D game such as Pong, but don't think that you'll have to recreate Final Fantasy, Super Mario Brothers, Zelda, etc. before you can move on to tackling 3D. Even introductory work such as this is not for the purpose of acquiring lots of 2D experience, but rather for the purpose of making everything as simple as possible so that you can see basic concepts & methods (collision detection, getting the graphics library initialized, etc.,) which have as much to do with 3D as they do with 2D, as quickly as possible so that you can move on to the next step. The next step might be creating a "New/Save/Load/Exit" menu, which you'll once again make as simple as possible, and then you just keep adding stuff (+1 dimension to movement, models, and collision detection, then jumping, anti-aliasing, mipmapping, shadows, reflections, particles, liquids, etc.) until there's nothing more to add, and then you go back and make it fancy, filling it with content.

Let's just put it this way, though. After learning some theory in a college course about game design, we were tasked with making a 3D engine. I made it in about a week. It drew 3D objects, cast shadows, drew textures, did mipmapping, detected collisions, allowed you to jump, and brought up a menu if you right-clicked or hit {ENTER} or {ESC}.

The time-consuming part is making it fancy... whether it be fine-tuning the engine or making models/textures/animations, game content, etc.

share|improve this answer

Yes. Since you already know C++, now you just have to learn an API and theory. The main hurdle in learning 3D specifically is probably the math involved. While 2D math is pretty easy to understand at a minimum level, 3D requires a more complex understanding. There's also a ton of stuff like shaders that are definitely more relevant to 3D as opposed to 2D. If you do plan on making a game though, I would take a quick 2D route just to get the feel for making a game from start to finish (and maybe get a working GUI system that you can port over!) before going into 3D.

share|improve this answer
IME, the biggest hurdle in learning a 3d api is getting to the point where you qctually have something to look at. I spent a bit of time trying to figure out why i couldn't see anything in early opengl; it's hard to debug a blank screen. – StarWeaver Jul 30 '14 at 13:48

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.