Точные книги не назову, но вам надо изучить:
1. 2d геометрию
2. 3d геометрию
3. проекцию
4. физику распространения света, линзы
5. нормали, тангенцали (отдельно отмечу)
6. текстуры, вершины, триангуляция, обход вершин
7. развёртку текстур (особый вид проекции)
8. векторы, матрицы, координатные системы, афинные преобразования
9. main loop игры
10. система движков (рендеринг, физика и т.д) и их взаимодействие
11. main loop каждого движка
12. физику (для физического движка)
Ну примерно эти темы дадут базовое представление о том, как работает игровой движок. Советую вам просто написать небольшой 2d движок на, например, c# gdi+ или 3d на directx. Так вам будет, наверное, более понятно, откуда все эти вещи в движке берётся, и почему меняется FPS.
Дополнительно замечу, что на хабре были подобные статьи. Особенно понравилась стать разработчика крутого сэма, который объяснял баг, когда на сцене рисовалось будущее (я уже точно не помню).