Topic: Mobile

Game and Graphics Programming for iOS and Android with OpenGL ES 2.0 (1119975913) cover image

Game and Graphics Programming for iOS and Android with OpenGL ES 2.0

Romain Marucchi-Foino
ISBN: 978-1-119-97591-5
Paperback
308 pages
January 2012
If you are an instructor, you may request an evaluation copy for this title.
Paperback Version: US $44.99 Add to Cart

About This Title  |  Download Code  |  Errata  |  P2P Forum for This Title
INTRODUCTION xvii

CHAPTER 1: GETTING STARTED 1

Software Requirements 2

For iOS Developers 2

For Android Developers 2

Downloading the Book’s SDK 4

Importing Projects 5

For iOS Developers 5

For Android Developers 5

The Template 7

Summary 8

CHAPTER 2: SETTING UP YOUR GRAPHIC PROJECTIONS 9

The Three Basic Types of Projections 10

Orthographic 2D Projection 11

Program and Project Initialization 12

Vertex and Fragment Shader 14

Linking a Shader Program 17

The Drawing Code 19

Orthographic Projection 23

Getting Orthographic 23

Perspective Projection 26

Summary 27

CHAPTER 3: DEALING WITH COMPLEX GEOMETRY 29

The Wavefront File Format 29

Cube.obj 30

Cube.mtl 31

Preparing the OBJ Viewer Code 31

Loading an OBJ 32

Building the Shaders 35

The Vertex Shader 35

The Fragment Shader 36

Vertex Buff er Object 36

Storing the Vertex Data 37

Building the Vertex Data Array VBO 38

Building the Element Array VBO 39

Building the VAO 40

Rendering Momo 42

Handling Touche 44

Per-Vertex Lighting 46

Vertex Shader Light Calculation 46

Modifying the Fragment Shader 47

More Uniforms 48

Making Momo Furrier 50

Loading the Texture 50

Adjusting the Vertex Data 51

Adding UV Support to the Vertex Shader 52

Adding Texture Support to Your Fragment Shader 53

Binding the Texture 53

Summary 54

CHAPTER 4: BUILDING A SCENE 57

Handling Multiple Objects 58

The Code Structure 58

Loading and Drawing the Scene 59

The Shaders Code 63

The Diff erent Object Types 64

The Drawing Sequence 64

Fixing the Scene 65

Uber Shader 65

Using Your Uber Shader 66

Render Loop Objects Categorization 69

Double-Sided 71

Per-Pixel Lighting 73

Making the Vertex Shader Even Fatter 73

Getting the Fragment Shader More Uber 74

Wrapping Up the Implementation 76

Summary 79

CHAPTER 5: OPTIMIZATION 81

The Base App 82

Triangles to Triangle Strips 82

Building Triangle Strips 83

Texture Optimization 84

Adding 16-Bit Texture Conversion 85

PVR Texture Compression 86

Faking Details 87

Bump Mapping Implementation 87

Precision Qualifi ers Optimization 88

The Normal Map Lighting Calculation 90

Adding Specularity 91

Geometry and Shaders LOD 92

Texture Atlas 93

Managing States in Software 94

Automatic Shader Optimization 94

Summary 95

CHAPTER 6: REAL-TIME PHYSICS 97

Types of Physical Objects 98

Physics Shapes 98

Using Bullet 100

Hello Physics 100

Collision Callbacks, Triggers, and Contacts 105

Contact-Added Callback 105

Near Callback 107

Contact Points 108

2D Physics 110

More Shapes! 110

Building the Physical Objects 113

Camera Tracking 114

User Interactions 116

The Game Logic 117

3D Physics 120

The Bullet File Format 120

3D Pinball Game 122

Summary 127

CHAPTER 7: CAMERA 129

Touch and Go! 130

The Camera Frustum 132

How to Build the Frustum 133

Frustum Clipping Implementation 134

More Clipping Functions 135

Camera Fly Mode 136

First-Person Camera with Collision Detection 140

3D Camera Tracking 143

Third-Person Camera with Collision 145

Summary 149

CHAPTER 8: PATHFINDING 151

Recast and Detour 151

Navigation 152

Creating the Navigation Mesh 153

3D Physics Picking 155

Player’s Auto Drive 159

Visualizing the Way Points 161

Catch Me If You Can! 163

Know Your Enemy 165

Game State Logic 167

Summary 170

CHAPTER 9: AUDIO AND OTHER COOL GAME PROGRAMMING STUFF 171

OpenAL 172

OGG Vorbis 173

Hello World OpenAL Style 174

Initializing OpenAL 174

Static In-Memory Sound Playback 175

Positional Sound Source 176

Piano Game 178

Loading a Static and Streamed Sound 178

Color Picking 182

Piano Game Logic 185

Final Adjustments 188

Rolling Ball Game 190

GFX Shaders 190

Linking the Positional Sound Sources 191

Accelerometer-Driven Camera 195

Cheap FX 198

Game Logic and Tweaks 200

Summary 205

CHAPTER 10: ADVANCED LIGHTING 207

Types of Lamps 208

Let There Be Light 208

Directional Lamp Shader 211

Struct as Uniforms 214

Point Light 217

Point Light Shader Code 218

Light Attenuation 221

Point Light with Attenuation Code 222

The Attenuation Uniforms 223

Spherical Point Light 224

Tweaking the Point Light Code 225

Spot Light 227

Spot Light Shader Code 229

Multiple Lights 231

Making the Shader Program Dynamic 233

Summary 234

CHAPTER 11: ADVANCED FX 237

Render to Texture 238

Post-Processing Eff ects 238

First Rendering Pass 241

Second Pass 242

Fullscreen Pass and Blur Shader 243

Projected Texture 246

Projector Shader 249

Projected Real-Time Shadows 250

Casting Shadows Using the Depth Texture 253

A Few More Words about the Frame Buffer Object 254

Particles 255

Summary 257

CHAPTER 12: SKELETAL ANIMATION 259

Traditional vs. Modern Animation Systems 260

The MD5 File Format 261

Loading an MD5 Mesh 261

Animating the Mesh 264

LERP 266

SLERP 267

Blending Animation 267

Additive Blending 269

Summary 271

INDEX 273