When I was a teenager who wanted very much to make videogames and demoscene productions (in the pre-ubiquitous-internet era of Wolfenstein), I had worked up through basic, and pascal, and finally arrived at c++ for speed. The C++ books dealing with graphics were all using really cheesy and slow libraries, totally inappropriate for games.
This covered how to write a simple flight simulator in C++ on the hardware of the time. It also gave a really good practical primer on the linear algebra needed for 3d graphics. Inline assembly and a bunch of fun algorithms for quick and dirty approximate math were there too.
That book, along with the free time and obsession that a 14 year old can muster, was probably what started me on my (in my opinion) successful hacking and optimization trajectory.
It's a bit dated now that most CPU's have amenities like built in floating point math but not too long ago I was doing embedded audio synthesis on an 8bit AVR micro and Bresenham's line drawing algorithm was just what I needed to efficiently generate saw waves.
The one book that really made everything come together was "Flights of Fantasy" https://www.amazon.com/Flights-Fantasy-Programming-Video-Gam...
This covered how to write a simple flight simulator in C++ on the hardware of the time. It also gave a really good practical primer on the linear algebra needed for 3d graphics. Inline assembly and a bunch of fun algorithms for quick and dirty approximate math were there too.
That book, along with the free time and obsession that a 14 year old can muster, was probably what started me on my (in my opinion) successful hacking and optimization trajectory.
It's a bit dated now that most CPU's have amenities like built in floating point math but not too long ago I was doing embedded audio synthesis on an 8bit AVR micro and Bresenham's line drawing algorithm was just what I needed to efficiently generate saw waves.