CYAN MAGENTA YELLOW BLACK PANTONE 123 CV this print for content only—size & color not accurate 7" x 9-1/4" / CASEBOUND / MALLOY (0.75 INCH BULK 312 pages 60# Thor) THE EXPERT’S VOICE ® IN OPEN SOURCE Gregory Junker Foreword by Steve Streeting, Founder/Lead Developer of OGRE 3D Pro OGRE 3D Programming Leverage the Power of Modern Real-Time Hardware-Accelerated 3D Graphics with the Best-in-Class 3D Graphics Library BOOKS FOR PROFESSIONALS BY PROFESSIONALS ® Pro OGRE 3D Programming Dear Reader, 3D graphics should not be hard. OGRE 3D is a 3D graphics library that shares that sentiment. This book will teach you the essentials of leveraging OGRE 3D in your game or other 3D application, from obtaining and installing OGRE 3D through advanced topics such as real-time shadows, exploring all of the major parts of OGRE 3D along the way (such as its powerful material management system). I wrote this book to serve as a programming guide for the new OGRE 3D user, and the presentation is crafted to make it easy to grasp the high-level design philosophy of OGRE 3D as well as the low-level details you will need most as you learn how to develop with OGRE 3D. I find that the best way to introduce new concepts is to explain working examples, so plenty of practical code and script samples are analyzed to illustrate the topics being discussed. The book also discusses many best practices and gotchas, as well as points out common mistakes to avoid as you become proficient in your OGRE 3D coding skills. I hope that this book provides you the knowledge needed to become produc- tive with OGRE 3D quickly. Learning a powerful API can be a daunting task without a capable navigational aid, and this book serves as that aid for learning OGRE 3D: it will become an indispensable addition to your technical bookshelf! Gregory Junker Shelve in Game Programming User level: Beginner–Intermediate www.apress.com SOURCE CODE ONLINE forums.apress.com FOR PROFESSIONALS BY PROFESSIONALS ™ Join online discussions: Pro OGRE 3D Programming Junker ISBN 1-59059-710-9 9 781590 597101 90000 6 89253 59710 1 Companion eBook Available Companion eBook See last page for details on $10 eBook version RELATED TITLES Pro OGRE 3D Programming Gregory Junker 7109ch00FM.qxd 8/24/06 3:37 PM Page i Pro OGRE 3D Programming Copyright © 2006 by Gregory Junker All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13: 978-1-59059-710-1 ISBN-10: 1-59059-710-9 Library of Congress Cataloging-in-Publication data is available upon request. Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Matt Wade Technical Reviewer: Steve Streeting Editorial Board: Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick, Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser, Keir Thomas, Matt Wade Project Manager: Kylie Johnston Copy Edit Manager: Nicole LeClerc Copy Editor: Ami Knox Assistant Production Director: Kari Brooks-Copony Production Editor: Laura Esterman Compositor/Artist: Kinetic Publishing Services, LLC Proofreader: Lori Bring Indexer: Broccoli Information Management Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders-ny@springer-sbm.com, or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail info@apress.com, or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.com in the Source Code/Download section. 7109ch00FM.qxd 8/24/06 3:37 PM Page ii To Mom and Dad 7109ch00FM.qxd 8/24/06 3:37 PM Page iii 7109ch00FM.qxd 8/24/06 3:37 PM Page iv Contents at a Glance Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi ■CHAPTER 1 What Is This Ogre?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 ■CHAPTER 2 Capturing the Beast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 ■CHAPTER 3 Ogre Design Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ■CHAPTER 4 Ogre First Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 ■CHAPTER 5 Ogre Scene Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 ■CHAPTER 6 Ogre Materials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 ■CHAPTER 7 Resource Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 ■CHAPTER 8 Ogre Render Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 ■CHAPTER 9 Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 ■CHAPTER 10 Billboards and Particles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 ■CHAPTER 11 Dynamic Shadows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 ■CHAPTER 12 Ogre 2D and Compositing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 ■APPENDIX A Ogre Tools and Add-Ons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 ■APPENDIX B Script Attribute Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 ■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 v 7109ch00FM.qxd 8/24/06 3:37 PM Page v 7109ch00FM.qxd 8/24/06 3:37 PM Page vi Contents Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi ■CHAPTER 1 What Is This Ogre?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 The Ogre 3D SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Where Does It Fit?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Origins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Prerequisite Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 ■CHAPTER 2 Capturing the Beast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Platform Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Dependencies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Ogre Binary SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Ogre Source Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Installing an SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Microsoft Visual C++ .NET 2003 (VC 7.1) . . . . . . . . . . . . . . . . . . . . . . 11 Visual C++ 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Other Free IDE/Compiler Combinations on Windows. . . . . . . . . . . . . 21 Building from Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Graphics Drivers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Dependencies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ■CHAPTER 3 Ogre Design Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Design Philosophy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Design Highlights. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Subsystem Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 vii 7109ch00FM.qxd 8/24/06 3:37 PM Page vii Ogre Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 ■CHAPTER 4 Ogre First Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Ogre Initialization: Quick Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 plugins.cfg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Ogre.cfg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Ogre.log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Render Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Render Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Ogre Initialization: Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Main Rendering Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ■CHAPTER 5 Ogre Scene Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Scene Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Scene Manager Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Scene Object Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Spatial Relationships and 3D Transforms . . . . . . . . . . . . . . . . . . . . . . 82 Movable Scene Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 World Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Static Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Scene Management by Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 The Simple Things. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Scene Manager Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 ■CHAPTER 6 Ogre Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Materials 101. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Basic Object Shading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Texture Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Programmable Shading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Materials and Application Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Batching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Material Cloning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 GPU Shaders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Techniques and Schemes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 ■CONTENTSviii 7109ch00FM.qxd 8/24/06 3:37 PM Page viii Material Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Entities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Materials by Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Materials and the Fixed-Function Pipeline . . . . . . . . . . . . . . . . . . . . 121 Materials and the Programmable Pipeline . . . . . . . . . . . . . . . . . . . . 128 A More Complex Example: Offset (Parallax) Mapping . . . . . . . . . . . 134 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 ■CHAPTER 7 Resource Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Conceptual Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Resource Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Resource Management in Practice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Resource Locations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Resource Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Resource Unloading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Ogre Archives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Archive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 ArchiveManager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Custom Resource Loading via Archive Implementation . . . . . . . . . 157 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 ■CHAPTER 8 Ogre Render Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Conceptual Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Render Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Viewports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Render Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Render Target Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Render Window by Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Render-to-Texture by Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Demo_RenderToTexture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Demo_Fresnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 ■CHAPTER 9 Animation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Types of Animation Support in Ogre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Controllers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Animation vs. Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 ■CONTENTS ix 7109ch00FM.qxd 8/24/06 3:37 PM Page ix [...]... free to use the software produced by the Ogre project in your project, no matter what it may be School project or graduate research aid, go for it Personal learning or game project, code on Full-featured community game project, Ogre is there for you Even commercial game or other 3D applications can use Ogre, and many in fact do, including some award-winning titles The version of Ogre covered in this book... of rendering a 3D scene, and this is an accurate description of the role Ogre 3D plays within the larger context of a complete application With relatively few inputs, Ogre will invoke a staggering amount of processing on your behalf that enables your 3D scene actually to appear on a computer graphics display (or even in other places; we’ll get to that later) If you are familiar with programming directly... through an STL container is an extremely common task in modern C++ programs, and, put simply, you will get along easier in Ogre once you understand the basics A commonly asked question in the support forums is, “How do I run Ogre? ” Well, you don’t Ogre is not a program There is no Ogre executable” that you run You write programs that use Ogre As I explained earlier, it is a software development kit, which... as Ogre Chapter 4, Ogre First Steps”: You begin to see actual code in this chapter, which introduces a skeleton Ogre application and explains the various actions performed by all typical Ogre applications Chapter 5, Ogre Scene Management”: This chapter begins the Ogre in Detail” topics, starting with a discussion of scene management and scene graph usage in Ogre Chapter 6, Ogre Materials”: This... WHAT IS THIS OGRE? objects.” Object-oriented design (OOD) and programming (OOP) provide a more intuitive, “human” feel to programming and design, because its basis is in how humans perceive the real world If you are not familiar with OOD or OOP techniques and practices, you will probably want to become familiar before diving too deep into Ogre, because (a) I am not going to teach you OOD or OOP in this... area of Ogre functionality explored by this book is the 2D features of Ogre: overlays and the Compositor framework We fully explore the Compositor, breaking down the Demo_Compositor sample application at the code, script, and processing-flow levels for the HDR Compositor effect provided with Ogre Appendix A, Ogre Tools and Add-Ons”: This appendix briefly discusses the tools and add-ons for Ogre, as... “real-life” goals, they are evolving Ogre, and when they are not evolving Ogre, they are usually available to answer questions both in the Ogre community forums as well as the official Ogre 3D IRC channel on the Freenode network And when they are not available to answer questions, a very active and vibrant community is always eager to help those new to Ogre, or those old to Ogre with the memory loss that... research the topic Ogre 3D (or just Ogre I’ll use both names interchangeably throughout the book) enables you to deal with the three-dimensional graphical presentation of your particular application in a very object-oriented manner Ogre in fact stands for Object-Oriented Graphics Rendering Engine, and it is exactly this very thing The term Engine implies that Ogre 3D “powers” your 3D graphics application,... (http://www.zlib.net) On Windows, the Ogre Direct3D rendering subsystem requires that at least Microsoft’s DirectX Runtime be installed, and for building Ogre from source on Windows, you will need the DirectX SDK as well The DirectX home can be found at http://msdn.microsoft.com/directx And even though Ogre provides direct HLSL and GLSL GPU shader language support, Ogre (and definitely the Ogre demo applications)... containing the version of Ogre 3D covered by this book, in the Source Code/Download section of the Apress web site Contacting the Author The author may be contacted at gjunker@mind-control.com or gjunker@dayark.com, and can be found frequenting the forums at http://www .ogre3 d.org, under the name “Xavier” 7109ch01.qxd 8/24/06 3:41 PM CHAPTER Page 1 1 ■■■ What Is This Ogre? O gre 3D is a mature, stable, . OGRE 3D Pro OGRE 3D Programming Leverage the Power of Modern Real-Time Hardware-Accelerated 3D Graphics with the Best-in-Class 3D Graphics Library BOOKS FOR PROFESSIONALS BY PROFESSIONALS ® Pro. TITLES Pro OGRE 3D Programming Gregory Junker 7109ch00FM.qxd 8/24/06 3:37 PM Page i Pro OGRE 3D Programming Copyright © 2006 by Gregory Junker All rights reserved. No part of this work may be reproduced. PROFESSIONALS ® Pro OGRE 3D Programming Dear Reader, 3D graphics should not be hard. OGRE 3D is a 3D graphics library that shares that sentiment. This book will teach you the essentials of leveraging OGRE 3D in