This truly is an excellent book. Split into roughly three sections, the first one deals with general optimisation principles and some more in detail low-level techniques. The second section concerns itself with the hardware of the VGA card, ModeX etc. Whilst this is of general interest its not very relevant by today's standards. The final part is all about 3D graphics rendering principles, most of which are derived from the development of the Quake game, which is also excellent.
A number of years ago, I was developing an object oriented Ray Tracer for my thesis. I read every book on the subject, but practically none gave any form of advice as to how to render the results of my tracings on an SVGA powered 386. If only I had this book at hand back then! While today's PCs have grown well beyond VGA, and are largely well catered for via the likes of DirectX etc., this book still presents the base set of knowledge (from 8086 -> Pentium, from VGA -> Acellerated cards) that any programmer involved in the development of graphics oriented software should have. Combined with Michael's treatment of fast 3d scenery management, texture mapping and lighting models, this book really does become a bible. But this is not all... It's not been all that many years since every time Borland released a new compiler that MS would follow (or vice-versa). Dr. Dobbs would then review the two packages and present accurate results as to which compiler generated the fastest or smallest code. How times change! The relevance to this book is that the first 20 chapters should be read by EVERY hard-core developer: Why are compilers never going to generate code as optimally as a good developer can write assembler? Want to know why your code is not executing at least one instruction every clock cycle? Ever wondered how to time your code effectively? So just how would you optimize a particularly efficient string searching algorithm into a neat 7 instruction operation? It's all here - one of the most readable exposes onto the nasty features of the 80x8x processor families (why oh why didn't IBM wait for the 680x0?) and how to overcome these problems. BUY IT NOW!
This book is in two parts. The first part is 22 chapters long and is an in-depth look at code optimisation. I guess I should really say program optimisation. The second part covers graphics programming from a very low level review of the basic VGA controller working up through 2D and on to 3D techniques and spans chapters 23 to 70. There is a lot of assembler code in this book so it may not suit unless you have a bit of knowledge in this area. In part 1 the author stresses the importance of choosing the right approach for the problem at hand rather than diving straight into writing ultra sneaky, ultra tight code but using a poor initial algorithm. He then goes on to show how to use this approach and from there takes you all the way down into optimising in assembler for the 80X86 processor family. He covers the family from 8088 to the Pentium processor and gives a good deal of insight into how to get the best out of each processor type. If you want to take part 1 further you are going to need to get a serious book on the processor for which you plan to write code. Part 2 is a pretty good introduction to graphics programming at a number of levels. I was looking for a book which would teach me enough to begin to understand some of the other information I have been trying to get into on 3D graphics. This book resolved a lot of questions for me. The graphics section is aimed pretty well at games graphics rather than say the techniques which would be applied to CAD work, though some would apply to general graphics programming The author ends with some chapters on the development of QUAKE by Id Software,in which he was involved, and his thoughts on some of the issues and trade offs which face graphics programmers. Some of the material is a little dated as few people get into such low level programming these days and I suspect that in most cases even games writers tend to use a 3D engine rather than write their own but you will come away from this book with a much better understanding of what goes on "under the hood" of 3D graphics programs. The book covers enough math to get you by but the author refers to plenty of other books which will fill in gaps for the reader who needs to really get into the theory. The author's immense enthusiasm for the subject comes through all the time and he has managed to make what would otherwise be very heavy reading (I joke not. Its a big, big book) into a pretty enjoyable experience. Most of his anecdotes (he tends to start each chapter with one) are pretty good and he manages to keep them fully in context with the point he makes in each chapter. I will not pretend that I understood the whole thing but I got a lot out of this book and it is one of the best and most readable on a computing subject that I have ever bought. I would buy it again and I can't say the same for a lot of books I have bought in the past. Only problem is, I now know enough to realise that, large though this book is, its just the beginning.
Unlike my expectations, this book is not really a teach yourself type thing, all examples are in C/C++ or assembly language and solid knowledge is required in it. I learnt more from this book than any other, its about the size of the bible and contains considerably more useful information, it is well worth the money and the service I received because of a problem with the included CD was second to none.
This book, or tome, as i discovered when it arrived in the mail, is really a textbook of graphics in general. The first half is more of a history book, detailing earlier, now obselete video modes, which makes it interesting but at the same time feels like a few hundred pages of filler. HOWEVER, any gripes or ill-feelings are instanty made up for and then some when you get to the 3d stuff. He goes into all the 3d math you won't be taught in context otherwise, he goes into virtually every aspect of scene rendering and csg, including such advanced topics as overdraw and bsps. I highly recommend it.
This is one of the best books I have EVER read! It has everything a new/advanced graphics programmer could want. Optimising, graphic routines, etc. Be warned though, it's not for the newest of new. Learn the basics of C\C++ and ASM.
Even though the early chapters in this book are filled up with details of how to squeeze performance out of a VGA card, most of the book is still relevant. Abrash's advice about optimisation are excellent, and his fanatical devotion to squeezing just one more clock cycle out of his code is thrilling to read. Buy this book not just to do graphics programming, but any programming.