Synopses & Reviews
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
Synopsis
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
Synopsis
OpenGL ES is a foundation technology that underlies the amazing media exhibited by iPhone applications, but its inherent cross-platform capabilities extend its appeal to game authors, scientists, and multimedia authors regardless of their chosen development platform. The hardest part of learning OpenGL today is finding information and examples that are pertinent today. You have to filter out all of the background clutter found in the OpenGL standard, which includes obsolete code, suboptimal approaches, and anachronistic practices that have built up over 20 years of rapidly shifting graphics hardware technology and at least 12 different versions of the standard. Learning OpenGL for iOS will provide a gentle introduction to graphics technology and serves as a no-nonsense, practical starting point for readers. All of the modern uses of OpenGL are discussed, while the book also avoids distracting readers with obsolete or irrelevant parts of the standard. OpenGL ES is clearly the future of cross-platform graphics technology, and it will continue to be used in all of the modern phones and game consoles for years to come.
This book will:
Help readers understand the capabilities and limitations of modern embedded graphics hardware for mobile platforms
Instruct readers on how to initialize and control graphics hardware, step by step
Explain texture definition and texture mapping onto 3D geometry
Show multiple techniques and optimizations for lighting through examples
Introduce the algorithms used by the graphics hardware to project images of 3D objects on 2D displays
And much much more!
About the Author
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.
Table of Contents
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