3D Games: Real-Time Rendering and Software Technology, Volume 1 (With CD-ROM)
The book can be read forwards or backwards.  For example, if you wish to build up detailed implementation experience, you could start with Chapter 21 (Engine Architecture) familiarise yourself with the engine and development environment, and start writing new plug-ins using the theoretical chapters for reference when required. Alternatively you could take a more conventional approach studying the theoretical aspects first before moving onto to implementation.Chapters are grouped into sections that are more or less self contained. These are:Modelling and Foundation MathsThis section deals with the basic mathematics required to handle objects in three-dimensional space and the theory of object representation.Classical 3D GraphicsAlthough much of the material in this chapter has migrated onto hardware, it is still necessary to have an appreciation of what the hardware does to be able to use it effectively.Real-time renderingThis section deals with the technology developed by the games industry and the virtual reality industry which enable complex scenes to be rendered, to a reasonably high quality, in real time on a low cost graphics processorControl of ObjectsMainstream techniques used to control the movement of objects are descried in this section. This ranges from simple low level control through to behavioural animation using AI technology.  The material on AI is in the form of a debate concerning the potential use of the technology in the future.2D TechnologyA potentially important solution to the complexity problem in 3D graphics, both in terms of the creation cost and the rendering cost is the use of image based rendering techniques.Software technologyThis section deals with the techniques needed to write a multiplayer game using the currently popular 1st person shooter genre as an example. We examine the software architecture of a games engine and look at the design of the engine. Finally a comprehensive reference manual for the engine is given.The book is not intended to be a 'how to program' in C++ and OpenGL text and we assume a reasonable knowledge of C or C++. Detailed examples of various algorithms implemented in C++ are sprinkled throughout the text. These are extracted from the engine and are reproduced in the text for convenience. A quick read will give some feel for the structure of the algorithm. In most cases to fully comprehend the code requires them to be studied in conjunction with Chapter 21 and the Reference Manual.The graphics API/library used is OpenGL. Pentium 3 code is given alongside the C++ equivalent for efficient matrix operation in Chapter 1 and DirectyPlay utilities are used in Chapter 20. Clearly these facilities need separate study and the purpose of the examples is to give a 'flavour' of their use in the applications.