I'm attempting to say this in a nutshell: It's useful to learn fundamentals of graphics, though I wouldn't suggest doing it more than just academic or "possibly" emulator design purposes, or even making graphics hardware drivers at the very low level. Like everything, the more you know, the more you can understand and fix problems, especially in graphics programming. For 2d rasterizers, I recommend Tricks of the Windows Game Programming Gurus: 2nd Edition by Andre' LaMothe, and his Tricks of the 3D Game Programming Gurus: Advanced 3D Graphics and Rasterization. It's a little outdated using DirectX technologies, and some can't stand his sense of humor, and plenty of seasonal naysayers, but the fundamentals are all the same and he's easy to understand. It also doesn't matter using the latest and greatest when you're studying fundamentals. Among other game programming veterans, the creator of Call of Duty learned from his books. He designed classic consoles for academic learning which uses software rasterization probably, and you put together the thing. Point is, he knows his stuff. It's been very educational for me as well, and transitioning to modern APIs are easy to understand at the end. But it's just that, academic. Software rasterizers in today's world are not recommended for commercial games, and hardware far out-beats it in performance and algorithms.