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

I'm a software engineer and I'm hoping to move my career towards game development. I'm reading a book right now on 2D using C++/DirectX. When I get into 3D I know I want to do it correctly. For example, I know nothing about 3d space. So if I learn only an API I might know it but I don't know if I can develop an interractive mini 3d world with it. I wouldn't call myself successful just having a rotating crate with the latest shaders etc. My math skills are up to trig/linear algebra and still in college. I know more math is to come. Should I be reading on 3D theory books before picking up on OpenGL/Direct3D, or any other suggestions? I just know an API isn't going to teach 3D game development and don't want to be lost afterward. I'm very book-oriented so that's fine if there's suggestions there too. Thoughts are welcome. Thanks!

share|improve this question

closed as off-topic by Byte56 Jan 20 '14 at 3:48

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions about "how to get started" or "what should I learn next" cannot reasonably be answered with anything other than opinion polling and therefore are off topic for the site. For more information on how to ask a better question, see the help center" – Byte56
If this question can be reworded to fit the rules in the help center, please edit the question.

Changes to the rules on the site since this question was asked now make it off topic. Not a problem, just closing it so others know what types of questions are off topic in the future. – Byte56 Jan 20 '14 at 3:49

12 Answers 12

up vote 10 down vote accepted

After dissing you on the other site I feel obliged to answer :)

I'm not any professional myself, but I did take a 3D Computer Graphics course in my university and it really helped me understand APIs I ended up using.

Among things I found especially useful:

  1. Transformation matrices and how they work, not only for object transformations but also for viewing transformation, perspective projection etc. That's probably the most important thing.
  2. The whole theory behind lightning and shadow, especially useful when you start dabbling into shaders.
  3. Texture sampling, mipmapping.
  4. Color theory and blending techniques is also useful.

And I definitely think that these are subjects that can be picked up from just reading a book or two on the subject, as long as you have the mathematical background.

share|improve this answer
Thanks. Have you heard of this book? I heard it teaches the 3d theory but focuses on 3d software rasterization too. I guess it may still help understand what's going on.… – Phil Aug 2 '10 at 17:16
@Phil rasterization is important, but I don't know if I would have started with a book called "tips" and addressing "advanced" 3D developers... sounds like something to read later on. – Oak Aug 2 '10 at 17:25
I'm reading volume 1 right now and this is volume 2. I'm guessing it merges you but I never looked at it. I know he says "advanced" but most say it's not. I'll keep it on the list :) – Phil Aug 2 '10 at 17:31
Ray tracing is also another interesting topic, but is much too slow for real-time games – Bryan Denny Aug 2 '10 at 18:31
@Byran +1 for mentioning it. It is used it pre-calculating lighting though. – Jonathan Fischoff Aug 2 '10 at 22:39

Start by doing. That way you'll discover what you don't know.

Then pick up a good book on 3D math.

I recommend '3D Math Primer for Graphics and Game Development'

by Fletcher Dunn and Ian Parberry. (Wordware)

Very clear, to the point, relevant - with C++ code and all.

It's very important to know about the basics of points, vectors, transformations, etc.

But that does not mean you should study it all before diving in. :)

share|improve this answer

I took an Intro to Computer Graphics class in college (1-2 years ago) and the course website is still up. Lots of PowerPoint slides are still up that you might find useful and helpful. Topics cover both 2D and 3D graphics theory.

share|improve this answer
Good resource! Thanks for sharing. – Phil Aug 2 '10 at 18:52

I'm in a similar boat to you (although I'm technically relearning stuff I vaguely knew in college), and my solution has been to check out several of the books mentioned over in the "Good 3D Math Theory Books" question here. If you're a book learner that may be a good way to go for you. Especially if your college doesn't actually have a good 3d graphics course (mine didn't).

share|improve this answer

Hmmm, when I had to make my first 3D game some 15 years ago (had to as it was my job, that helps persevering) I had no 3D knowledge whatsoever other than high school math. If you have a fondness for puzzle solving and reading up, you can reason most of it out yourself and with some help from the internet ( faq). I did read the openGL bibles and (warning oldskool) as they give valid background info. If you do it this way you might start off the wrong way but at a point you'll either dream up, or bump into, a better solution. Most of the 3d problems can be solved if your 2d grasp is good. Add to the general trig, pythagoras, matrices and inverses/transpose (for projection), dot&cross product and what you use em for, quaternions (don't have to understand em, just know how to use them - you can do without but they are nowadays part of the basic vocabulary), and you can solve most problems you come across. As you go you'll bump into better ways, but those few can solve anything. The best way is to set yourself a goal outside your grasp and force yourself to get there. The problems you run into are what you need to learn, and hey, you're on the site where they can help you solve em!

share|improve this answer

The Wolfire Games blog has had a really excellent series of tutorials on linear algebra for game developers recently.

It really is important to understand the math behind it before you bother starting to learn an API. Otherwise, the order and purpose of the API calls won't make a whole lot of sense to you. You need to understand what they're doing for you on a math level first.

share|improve this answer

I suggest you enroll at Game Institute, specifically the Graphics Programming with DirectX 9 courses.

You don't need to take part in the interactive classes if you just want to self-learn.

By the way, there is an option to also get printed books for a very low additional amount. They are well worth it.

I did a lot of their courses a few years ago and the courses, although a little old-skool are really quite good and I can't recommend them highly enough - plus Gary Simmons is a really nice guy.

share|improve this answer
There must be some kind of easier way to learn that stuff than taking an expensive course. – The Communist Duck Aug 2 '10 at 17:19
That suggestion is stupid... Taking a course to learn math? I stand with Einstein: Some stuff are better learned from books. (not a direct quote... I saw only the portuguese version anyway, the translation would be different) – speeder Aug 2 '10 at 20:02
@speeder How exactly is the suggestion "stupid". Since you're so keen to learn from books like your peer Einstein, perhaps you should read about manners. – octonion Aug 2 '10 at 21:03
I upvoted this. It's not stupid to take a course. What works for one person, doesn't always work for everyone. Some people, like me, prefer books and self-study; others need a course. IMO, you can do worse than taking a course from GI. – jacmoe Aug 3 '10 at 9:46
Upvoted - "One Size doesn't fit all" . taking a course is not stupid thing! – Ayyappa Sep 3 '11 at 11:51

Above all else just try to make stuff. First and foremost jump in. Otherwise you will become an expert at theory but not practice.

If you think that you are truly passionate about graphics, then imagine that you will continue to learn new material most of your life. Its not like you can learn everything you need before you start. It just doesn't work that way.

As you learn more and more about the mathematics of 3D graphics, you will realize that there is no mathematics of computer graphics, there is only math. Learn how to teach yourself mathematics on your own. Then you will be able to digest new techniques as they are presented in literature.

As graphics technologies evolve we will borrow different mathematic techniques. What is popular today might not be popular tomorrow.

Here are some things that are going to stay the same.

Right now I am finding the material in Geometric Algebra for Computer Science very interesting, and think that it might be better to start with the approach they layout for computer graphics.

The book explains things like quaternions in a much simpler way, and might be helpful for you depending on your mathematical background and interests.

share|improve this answer

Don't go for "computer graphics" books. Start with linear algebra - it lays the foundation for everything you need. MIT has a good video course:

From there, it should be straight forward to pick up any introductory text on computer graphics. UoWashington has a course online (no video, though):

If you're impatient you can start with the graphics course without linear algebra, but believe me when I say it will come back to bite you :)

share|improve this answer

If you want to understand how a traditional software rendering pipeline works (and things haven't changed that much even with the introduction of programmable hardware pipelines), one book I'd definitely recommend would be Jim Blinn's: A Trip Down The Graphics Pipeline.

Unlike some of the other suggestions, it's not particularly comprehensive, but it is very readable and I think if you're just getting started with 3D, it's a good introduction. And it's written by Jim Blinn, who is one of the founding fathers of computer graphics, and thus is written from the perspective of someone who actually invented/discovered these techniques.

share|improve this answer

I'm currently doing the same as you, and found (CSCI 234 Introduction to Computer Graphics on iTunesU) to be really helpful after I read a few books on computer graphics and math.

share|improve this answer

I was the TA for the graphics course at my university for several years. I set the syllabus, and covered things like software rasterizations and shading, Java3D, OpenGL, etc. Some time after this, in my own time I decided to write a ray-tracer for my own edification. This was an incredible experience - with a frame buffer and a putpixel(x,y, color) routine, in 500 lines I had code to generate an image with spheres, triangles, per-pixel shading, shadows, etc. If I had to redo the pracs for the courses, I would insist that the students do a ray-tracer. It is way to easy to get caught up in the details of a scanline algorithm when building a rasterizer, or feel like you're working through a black box using a 3D API.

For quick, solid access to a graphics sandbox, I recommend writing your own ray-tracer. Obviously, this is a far cry from what is commonly used in production real-time 3D graphics, but it is a really intuitive and compact way to see and learn the theory.

share|improve this answer

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