My study notes

I hope you will find my notes useful in case you intend to study more about engine and graphics programming.

C++

Marshall Cline’s C++ FAQ (29/07/2011)

Questions in round brackets are the ones I find more important or difficult to grasp at first.

  • Chapter 7: 7.7

  • Chapter 8: 8.3, 8.4, 8.6

  • Chapter 9: 9.1, 9.5, 9.6, 9.7, 9.8, 9.9

  • Chapter 10: 10.3, 10.4, (10.5), 10.6, 10.8, (10.9), 10.10, (10.14), 10.20, (10.22)

  • Chapter 11: 11.7, 11.10, 11.14

  • Chapter 12: 12.3, 12.4

  • Chapter 13: 13.9, 13.10, 13.14, 13.15

  • Chapter 14: 14.3, 14.5

  • Chapter 16: 16.4, 16.8, 16.10, 16.21

  • Chapter 17: 17.2, 17.3, 17.4, 17.8, 17.9, 17.10

  • Chapter 18: 18.5, 18.7, 18.10, 18.12, (18.13), 18.15

  • Chapter 20: 20.3, 20.4, 20.5, 20.6, (20.7), 20.8

  • Chapter 21: (21.4), 21.6, 21.8, 21.12

  • Chapter 22: 22.4, 22.5

  • Chapter 23: 23.1, 23.3, 23.4, 23.5, (23.9)

  • Chapter 24: 24.2, 24.3, 24.5, 24.6

  • Chapter 25: 25.4, 25.5, (25.9), 25.10

  • Chapter 26: 26.12, 26.13

  • Chapter 27: 27.10

  • Chapter 29: 29.5, 29.7, 29.17, 29.18, (29.19), 29.20

  • Chapter 35: 35.2, 35.3, 35.4, (35.7), 35.9, 35.11, 35.16, 35.18, 35.19, 35.22

Topics

A list of concepts, ideas, idioms, patterns and keywords to understand and remember. The numbers in round brackets are a reference inside Marshall Cline’s C++ FAQ.

  • Method chaining (8.4) / Named Parameter Idiom (10.20)

  • Conversion constructor and conversion operator

  • Operator overloading (ch. 13)

  • Explicit constructor (10.22)

  • const (29.7) / mutable (18.13) / volatile / restrict

  • v-table mechanism (20.4)

  • Pure virtual member functions (22.4), abstract base classes (ch. 22)

  • Covariant Return Types and "virtual constructor" (20.8, 22.5)

  • Object slicing (21.4, 31.8, 20.8)

  • Template Method pattern and private virtuals (23.4) (Virtuality by Herb Sutter)

  • Private inheritance (24.2, 24.3) (Uses and Abuses of Inheritance, Part 1 by Herb Sutter)

  • Static initialization order fiasco (10.14)

  • Meyer’s singleton (10.16)

  • One definition rule

  • Common subexpression elimination

  • Different kind of casts: C style, static_cast, dynamic_cast, const_cast and reinterpret_cast

  • Resource acquisition is initialization (RAII)

  • Run-time type information (RTTI)

More topics

A second list of concepts to keep in mind, only a bit harder this time. As before, the numbers in round brackets are a reference inside Marshall Cline’s C++ FAQ.

C++11

The book "Effective Modern C++" by Scott Meyers is a must-have.

Math and geometry

Books

Read about the same math concepts on more than one book. Some books are targeted to game developers, like:

  • "Essential Mathematics for Games and Interactive Applications" by James M. Van Verth and Lars M. Bishop

  • "3D Math Primer for Graphics and Game Development" by Fletcher Dunn and Ian Parberry

  • "Mathematics for 3D Game Programming and Computer Graphics" by Eric Lengyel and John Flynt

Algorithms and more

CPU

Important links from Wikipedia about the architecture of a CPU. One of the book you could read to learn more on the subject is "Computer Architecture: A Quantitative Approach" by David A. Patterson.

Multi-threading

One of the book on the topic is "The Art of Multiprocessor Programming" by Maurice Herlihy and Nir Shavit

Graphics

Mobile GPUs architecture

The book "OpenGL ES 3.0 Programming Guide" by Dan Ginsburg and Budirijanto Purnomo is a must-have.

More topics

Data Oriented Design