Get Started Fast with Modern OpenGL ES Graphics Programming for iPhone, iPod touch, and iPad
OpenGL ES technology underlies the user interface and graphical capabilities of Apple's iPhone, iPod touch, and iPad-as well as devices ranging from video-game consoles and aircraft-cockpit displays to non-Apple smartphones. In this friendly, thorough introduction, Erik M. Buck shows how to make the most of Open GL ES in Apple's iOS environment.
This highly anticipated title focuses on modern, efficient approaches that use the newest versions of OpenGL ES, helping you avoid the irrelevant, obsolete, and misleading techniques that litter the Internet. Buck embraces Objective-C and Cocoa Touch, showing how to leverage Apple's powerful, elegant GLKit framework to maximize your productivity, achieve tight platform integration, and deliver exceptionally polished apps.
If you've written C or C++ code and know object-oriented programming basics, this title brings together everything you need to fully master OpenGL ES graphics for iOS-including downloadable examples specifically designed to jumpstart your own projects.
* Understanding core OpenGL ES computer graphics concepts and iOS graphics architecture
* Integrating Cocoa Touch with OpenGL ES to leverage the power of Apple's platform
* Creating textures from start to finish: opacity, blending, multi-texturing, and compression
* Simulating ambient, diffuse, and specular light
* Using transformations to render 3D geometric objects from any point of view
* Animating scenes by controlling time through application logic
* Partitioning data to draw expansive outdoor scenes with rolling terrain
* Detecting and handling user interaction with 3D geometry
* Implementing special effects ranging from skyboxes to particles and billboards
* Systematically optimizing graphics performance
* Understanding the essential linear algebra concepts used in computer graphics
* Designing and constructing a complete simulation that incorporates everything you've learned
Erik M. Buck is a serial entrepreneur and author. He co-wrote Cocoa Programming in 2003 and Cocoa Design Patterns in 2009. He founded his first company, EMB & Associates, Inc., in 1993 and built the company into a leader in the aerospace and entertainment software industries. Mr. Buck has also worked in construction, taught science to 8th graders, exhibited oil on canvas portraits, and developed alternative fuel vehicles. Mr. Buck sold his company in 2002 and took the opportunity to pursue other interests, including his latest startup, cosmicthump.com. Mr. Buck is an Adjunct Professor of Computer Science at Wright State University and teaches iOS programming courses. He received a BS in Computer Science from the University of Dayton in 1991.
Preface x 1 Using Modern Mobile Graphics Hardware 1 What Is 3D Rendering? 2 Supplying the Graphics Processor with Data 4 The OpenGL ES Context 9 The Geometry of a 3D Scene 9 Summary 17 2 Making the Hardware Work for You 19 Drawing a Core Animation Layer with OpenGL ES 19 Combining Cocoa Touch with OpenGL ES 22 The OpenGLES Ch2 1 Example 27 Deep Dive: How Does GLKView Work? 42 Extrapolating from GLKit 51 Summary 58 3 Textures 59 What Is a Texture? 59 The OpenGLES Ch3 1 Example 65 Deep Dive: How Does GLKTextureLoader Work? 69 The OpenGLES Ch3 3 Example 76 Opacity, Blending, and Multi-Texturing 77 Texture Compression 84 Summary 85 4 Shedding Some Light 87 Ambient, Diffuse, and Specular Light 88 Calculating How Much Light Hits Each Triangle 90 Using GLKit Lighting 95 The OpenGLES Ch4 1 Example 97 Bake Lighting into Textures 104 Fragment Operations 105 Summary 106 5 Changing Your Point of View 107 The Depth Render Buffer 107 The OpenGLES Ch5 1 and OpenGLES Ch5 2 Examples 109 Deep Dive: Adding a Depth Buffer Without GLKKit 115 Transformations 117 Transformation Cookbook 129 Perspective and the Viewing Frustum 130 Summary 132 6 Animation 133 Motion Within a Scene: The OpenGLES Ch6 1 Example 134 Animating Vertex Data 140 Animating Colors and Lights: The OpenGLES Ch6 3 Example 148 Animating Textures 153 Summary 157 7 Loading and Using Models 159 Modeling Tools and Formats 160 Reading modelplist Files 165 The OpenGLES Ch7 1 Example 168 Advanced Models 172 Summary 181 8 Special Effects 183 Skybox 183 Deep Dive: How Does GLKSkyboxEffect Work? 186 Particles 199 Billboards 206 Summary 216 9 Optimization 217 Render as Little as Possible 218 Don't Guess: Profile 232 Minimize Buffer Copying 234 Minimize State Changes 235 Summary 236 10 Terrain and Picking 237 Terrain Implementation 237 Adding Models 249 OpenGL ES Camera 253 Picking 258 Optimizing 267 Summary 274 11 Math Cheat Sheet 277 Overview 278 Decoding a Matrix 279 Quaternions 296 Surviving Graphics Math 297 Summary 301 12 Putting It All Together 303 Overview 304 Everything All the Time 306 Device Motion 323 Summary 325 Index 327