Introduction to 3D Graphics Programming

By John Tsiombikas (Nuclear / the Lab)

Welcome reader, to this new short introductory course on 3D Graphics Programming! The goal of this series of tutorials is to teach the reader the theory behind 3D graphics, which of course will be presented along with practical examples since it is the actual implementation of the theory that we are mostly interested in. The topic of 3D graphics is very broad indeed and it is not possible to cover every aspect and technique. Our focus will be on real-time 3D graphics and thus we will concentrate on the typical polygonal approach that is so widely used for real-time visualization. I will try to present everything with accuracy and clarity, I hate spreading misinformation, thus everything I write here will be double checked, however to err is human and I would be grateful to let me know if you find any mistakes (contact info near the bottom of this page).

Course Requirements

It goes without saying that in order to understand the things that I will cover in this tutorial series, you have to have a certain knowledge background. The most important requirement is having a strong understanding of the C++ programming language. However you should be able to make it through even if you know C and pay close attention to the theory and convert the examples accordingly. The second requirement is that you have an understanding of some basic concepts of linear algebra such as matrices and vectors, which are essential for elementary 3D graphics. In any case, I’ll try to explain most of the math stuff a little bit, so you shouldn’t have any problems with that. Finally you should be able to draw pixels to the screen one way or another. I’ll make available for download a graphics library based on DirectDraw along with some win32 framework code to get you started.

Lessons index

(more to come)

Contact the author

If you have any trouble with the tutorials, if you find something wrong or you have thought of a better way to do something, do not hesitate to contact me. I would like to get any kind of feedback that you may offer. My email address is: