TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page i TLFeBOOK This page intentionally left blank TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page iii TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page iv © 2004 by Premier Press,a division ofCourse Technology.All rights reserved. Senior Vice President, Nopart ofthis book may be reproduced or transmitted in any form or by any Course PTR Group: means,electronic or mechanical,including photocopying,recording,or by any AndyShafran information storage or retrieval system without written permission from Publisher: Course PTR,except for the inclusion ofbriefquotations in a review. Stacy L.Hiquet The Premier Press logo and related trade dress are trademarks ofPremier Press Senior Marketing Manager: and may not be used without written permission. Sarah O’Donnell OpenGL is a registered trademark ofSGI. Marketing Manager: glFont © 2004 Brad Fish,[email protected]. Heather Hurley GLee © 2004 Ben Woodhouse,[email protected],with parts copyright by SGI. Manager ofEditorial Services: All rights reserved. Heather Talbot All other trademarks are the propertyoftheir respective owners. Senior Acquisitions Editor: Emi Smith Important: Course PTR cannot provide software support. Please contact the appropriate software manufacturer’s technical support line or Web site for Associate Marketing Manager: assistance. Kristin Eisenzopf Course PTR and the authors have attempted throughout this book to distin- Project Editor: guish proprietary trademarks from descriptive terms by following the capital- Sandy Doell ization style used by the manufacturer. Technical Reviewer: Information contained in this book has been obtained by Course PTR from Ben Woodhouse sources believed to be reliable.However,because ofthe possibility ofhuman or Retail Market Coordinator: mechanical error by our sources,Course PTR,or others,the Publisher does not Sarah Dubois guarantee the accuracy,adequacy,or completeness of any information and is not responsible for any errors or omissions or the results obtained from use of Interior Layout Tech: such information. Readers should be particularly aware of the fact that the Marian Hartsough Internet is an ever-changing entity. Some facts may have changed since this book went to press. Cover Designer: Steve Deschene Educational facilities, companies, and organizations interested in multiple copies or licensing ofthis book should contact the publisher for quantity dis- CD-ROM Producer: count information.Training manuals,CD-ROMs,and portions ofthis book are Brandon Penticuff also available individually or can be tailored for specific needs. Indexer: ISBN:1-59200-369-9 Katherine Stimson Library ofCongress Catalog Card Number:2004090734 Proofreader: Printed in the United States ofAmerica Gene Redding 04 05 06 07 08 BH 10 9 8 7 6 5 4 3 2 1 Course PTR,a division ofCourse Technology 25 Thomson Place Boston,MA 02210 http://www.courseptr.com TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page v For my family and friends —Kevin For my crash of rhinos —Dave TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page vi Acknowledgments F irst and foremost,I want to thank my wife Melissa and my kids,Rebi,Evan,Ellie, Tyler,and Nate,for all of your support throughout this project,and for dragging me away from the computer just often enough for me to retain most ofmy sanity. I love you all. I’d also like to thank Kevin, my partner and collaborator, without whom I never would have done this.I can’t imagine finding a better teammate. Big thanks to everyone at Premier Press/Course Technology.You’re a great group of peo- ple to work with,and I genuinely appreciate the confidence you place in me. Ben Woodhouse deserves special mention for his efforts as technical editor.He provided valuable feedback that helped make this book much better than it would have been oth- erwise.Thanks also to The Mighty Pete for allowing us to use his skybox images in many of the example programs,and to Jeff Royle from ATI Technologies for providing us with graphics hardware for testing purposes. Finally, I want to thank everyone who has taught me in some way, including Chuck Hansen,Robert Kessler and my other professors at the University of Utah,my coworkers at Avalanche Software and Qualcomm, the denizens of the GameDev.net forums, and everyone else who has taken the time to share their knowledge and experience via a Web site or book. —Dave Astle vi TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page vii Acknowledgments vii I’d like to thank Dave,for his work as a good teammate,motivator,and friend.Chances are you would not be holding this book in your hands if he had not used a little friendly coercion on me.I’m amazed at what we were able to accomplish with this project,and a good deal of its success is due to our ability to work together as a team. I also want to thank my family for their constant support for me in everything I do. Oftentimes they don’t get as much credit as they should be getting. Myfriends and coworkers also deserve a share ofthe thanks.Whether they know it or not, I’ve learned from all ofthem in some form or another and value their friendships:Tucker, Tom, Christie, Mike, Rael, Kristin,Vivian, JP,Andy, Greg R., Greg S., Bill, Kyle, Randall, Jordan,Hack,Justin,Nate,Luke M.,Mike M.,Johnny Y.,Nick M.,and so many others that wedon’t have the space for here.Also,thank you to the Premier Press group for the oppor- tunity to do this project and for maintaining a high degree of support and confidence in both Dave and me,and in GameDev.net. And finally, I want to thank everyone who has provided me with the ability and talent, directly or indirectly,that has allowed me to create this book,including the professors at Embry-Riddle,my baseball coaches and teammates,Chris Hargrove,Seth Robinson,Jeff Molofee,Rich Benson,and a host of software engineering colleagues. —Kevin Hawkins TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page viii About the Authors DAVE ASTLE has been programming games professionally for several years, working on titles for the Xbox,PlayStation 2,GameCube,PC,and various wireless devices.Currently, he is a lead engineer in the Gaming and Graphics group at Qualcomm, Inc. He is the cofounder and executive producer of GameDev.net, the leading online community for game developers.He has authored or contributed to several game development books and has spoken at industry conferences, including the Game Developers’ Conference. He received his bachelor’s degree in Computer Science from the University ofUtah,where he specialized in graphics,artificial intelligence,networking,software engineering,and com- piler theory and design. KEVINHAWKINSis a lead software engineer at Raydon Corporation where he designs and develops training simulations for a variety of customers, including the U.S. military. In addition,Kevin is the cofounder and CEO of GameDev.net,the leading online commu- nity for game developers.He holds a master’s degree in Software Engineering and a bach- elor’s degree in Computer Science from Embry-Riddle University, where he also played intercollegiate baseball and was drafted by the Cleveland Indians in the 2002 amateur baseball draft. viii TLFeBOOK 00 BOGL_GP FM 3/1/04 2:14 PM Page ix Contents at a Glance Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvii Part I OpenGL Basics . . . . . . . . . . . . . . . . . . . . . . . .1 Chapter 1 The Exploration Begins . . . Again . . . . . . . . . . . . . . . . . . . . . . . . . .3 Chapter 2 Creating a Simple OpenGL Application . . . . . . . . . . . . . . . . . . . . .13 Chapter 3 OpenGL States and Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Chapter 4 Transformations and Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . .67 Chapter 5 Colors, Lighting, Blending, and Fog . . . . . . . . . . . . . . . . . . . . . . .99 Chapter 6 Bitmaps and Images with OpenGL . . . . . . . . . . . . . . . . . . . . . . .133 Chapter 7 Texture Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 Part II Beyond the Basics . . . . . . . . . . . . . . . . . . .183 Chapter 8 OpenGL Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185 Chapter 9 More on Texture Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197 Chapter 10 Up Your Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Chapter 11 Displaying Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249 Chapter 12 OpenGL Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 Chapter 13 The Endgame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 Part III Appendices . . . . . . . . . . . . . . . . . . . . . . . . .283 Appendix A Answers to Review Questions and Exercises . . . . . . . . . . . . . . . .285 Appendix B Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295 Appendix C What’s on the CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .301 ix TLFeBOOK