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. Coverage includes * 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 x1 Using Modern Mobile Graphics Hardware 1What Is 3D Rendering? 2Supplying the Graphics Processor with Data 4The OpenGL ES Context 9The Geometry of a 3D Scene 9Summary 172 Making the Hardware Work for You 19Drawing a Core Animation Layer with OpenGL ES 19Combining Cocoa Touch with OpenGL ES 22The OpenGLES Ch2 1 Example 27Deep Dive: How Does GLKView Work? 42Extrapolating from GLKit 51Summary 583 Textures 59What Is a Texture? 59The OpenGLES Ch3 1 Example 65Deep Dive: How Does GLKTextureLoader Work? 69The OpenGLES Ch3 3 Example 76Opacity, Blending, and Multi-Texturing 77Texture Compression 84Summary 854 Shedding Some Light 87Ambient, Diffuse, and Specular Light 88Calculating How Much Light Hits Each Triangle 90Using GLKit Lighting 95The OpenGLES Ch4 1 Example 97Bake Lighting into Textures 104Fragment Operations 105Summary 1065 Changing Your Point of View 107The Depth Render Buffer 107The OpenGLES Ch5 1 and OpenGLES Ch5 2 Examples 109Deep Dive: Adding a Depth Buffer Without GLKKit 115Transformations 117Transformation Cookbook 129Perspective and the Viewing Frustum 130Summary 1326 Animation 133Motion Within a Scene: The OpenGLES Ch6 1 Example 134Animating Vertex Data 140Animating Colors and Lights: The OpenGLES Ch6 3 Example 148Animating Textures 153Summary 1577 Loading and Using Models 159Modeling Tools and Formats 160Reading modelplist Files 165The OpenGLES Ch7 1 Example 168Advanced Models 172Summary 1818 Special Effects 183Skybox 183Deep Dive: How Does GLKSkyboxEffect Work? 186Particles 199Billboards 206Summary 2169 Optimization 217Render as Little as Possible 218Don't Guess: Profile 232Minimize Buffer Copying 234Minimize State Changes 235Summary 23610 Terrain and Picking 237Terrain Implementation 237Adding Models 249OpenGL ES Camera 253Picking 258Optimizing 267Summary 27411 Math Cheat Sheet 277Overview 278Decoding a Matrix 279Quaternions 296Surviving Graphics Math 297Summary 30112 Putting It All Together 303Overview 304Everything All the Time 306Device Motion 323Summary 325Index 327