Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
astle_d_hawkins_k_beginning_opengl_game_programming.pdf
Скачиваний:
14
Добавлен:
29.03.2016
Размер:
6.41 Mб
Скачать

Contents

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvii

Part I OpenGL Basics . . . . . . . . . . . . . . . . . . . . .1

Chapter 1 The Exploration Begins . . . Again . . . . . . . . . . . . . . . . . . . . .3

Why Make Games? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

The World of 3D Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4

The Elements of a Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4

What Is OpenGL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

OpenGL History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

OpenGL Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

Related Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

A Sneak Peek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12

Chapter 2 Creating a Simple OpenGL Application . . . . . . . . . . . . . . . .13

Introduction to WGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 The Rendering Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Pixel Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 dwFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 iPixelType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 cColorBits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Setting the Pixel Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

x

TLFeBOOK

Contents xi

An OpenGL Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

Full-Screen OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

Chapter 3 OpenGL States and Primitives . . . . . . . . . . . . . . . . . . . . . . .35

State Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Querying Numeric States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 Enabling and Disabling States . . . . . . . . . . . . . . . . . . . . . . . . . . .36 glIsEnabled() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Querying String Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Finding Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Giving OpenGL a Hint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39

Handling Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Drawing Points in 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Drawing Lines in 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Drawing Polygons in 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 Using Primitives: Triangles and Quads Example . . . . . . . . . . . . . .60

Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65

Chapter 4 Transformations and Matrices . . . . . . . . . . . . . . . . . . . . . . .67

Understanding Coordinate Transformations . . . . . . . . . . . . . . . . . . . .67

Eye Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69

Viewing Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70

Modeling Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71

Projection Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73

Viewport Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73

OpenGL and Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73

The Modelview Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74

Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75

Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77

Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80

Matrix Stacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82

The Robot Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84

Projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87

Orthographic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87

Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88

Setting the Viewport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89

Projection Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90

TLFeBOOK

xii

Contents

 

 

 

 

Manipulating the Viewpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. .91

 

 

Using gluLookAt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.92

 

 

Using glRotate() and glTranslate() . . . . . . . . . . . . . . . . . . . . . . .

.93

 

 

Creating Your Own Custom Routines . . . . . . . . . . . . . . . . . . . . .

.94

 

 

Using Your Own Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.95

 

 

Loading Your Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.95

 

 

Multiplying Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.96

 

 

Transpose Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.96

 

 

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.97

 

Chapter 5

Colors, Lighting, Blending, and Fog . . . . . . . . . . . . . . . . .

.99

 

 

Using Colors in OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.99

 

 

Setting the Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

100

 

 

Secondary Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

101

 

 

Shading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

102

 

 

A Colorful Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

104

 

 

Lighting in OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

104

 

 

OpenGL Lighting and the Real World . . . . . . . . . . . . . . . . . . . .

104

 

 

Light Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

106

 

 

Spotlights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

109

 

 

Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

111

 

 

Normals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

115

 

 

The Lighting Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

118

 

 

Lighting in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

120

 

 

Blending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

121

 

 

Separate Blend Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

125

 

 

The Blend Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

125

 

 

Constant Blend Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

127

 

 

Disk Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

127

 

 

Fog 128

 

 

 

OpenGL Fog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

128

 

 

Fog Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

130

 

 

Fog in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

131

 

 

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

131

 

Chapter 6

Bitmaps and Images with OpenGL . . . . . . . . . . . . . . . . . .

133

 

 

The OpenGL Bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

133

 

 

Positioning the Bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

134

 

 

Drawing the Bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

135

 

 

An OpenGL Bitmap Example . . . . . . . . . . . . . . . . . . . . . . . . . . .

136

TLFeBOOK

 

 

Contents

xiii

 

Using Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .138

 

 

Drawing Image Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .139

 

 

Reading from the Screen . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .141

 

 

Copying Screen Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .141

 

 

Magnification, Reduction, and Flipping . . . . . . . . . . . . . . .

. . . .142

 

 

Managing Pixel Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .142

 

 

Targa Image Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .143

 

 

The Targa File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .143

 

 

Loading Targa Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .145

 

 

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .147

 

Chapter 7

Texture Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .149

 

 

An Overview of Texture Mapping . . . . . . . . . . . . . . . . . . . . . . .

. . . .150

 

 

Texture Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .151

 

 

Using the Texture Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .152

 

 

Texture Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .152

 

 

Specifying Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .155

 

 

Texture Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .161

 

 

Basic Texture Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .163

 

 

Mipmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .166

 

 

Mipmaps and the OpenGL Utility Library . . . . . . . . . . . . . .

. . . .167

 

 

Automatic Mipmap Generation . . . . . . . . . . . . . . . . . . . . .

. . . .168

 

 

Texture Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .169

 

 

Texture Wrap Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .170

 

 

Texture Level of Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .173

 

 

Texture Environments and Texture Functions . . . . . . . . . . . . . .

. . . .174

 

 

Specifying the Texture Environment . . . . . . . . . . . . . . . . . .

. . . .175

 

 

Textured Terrain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .178

 

 

Building the Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .178

 

 

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .181

 

Part II

Beyond the Basics . . . . . . . . . . . . . . . .

183

Chapter 8

OpenGL Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. .185

 

Anatomy of an Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .185

 

Extension Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .186

 

Name Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .187

 

Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .187

 

Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .188

TLFeBOOK

xiv Contents

Using Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188

Checking the Name String . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189

Obtaining the Function’s Entry Point . . . . . . . . . . . . . . . . . . . . .190

Declaring Enumerants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191

WGL Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191

Introduction to GLee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192

Setting Up GLee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193

Using GLee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193

Using GLee with Core Extensions . . . . . . . . . . . . . . . . . . . . . . . .194

Extensions in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195

Chapter 9 More on Texture Mapping . . . . . . . . . . . . . . . . . . . . . . . . .197

More on Texture Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197

Sub-Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197

Copying from the Color Buffer . . . . . . . . . . . . . . . . . . . . . . . . . .198

The Texture Matrix Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201

Texture Coordinate Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . .202

Environment Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205

Example: Reflective Cube Mapping . . . . . . . . . . . . . . . . . . . . . .206

Multitexturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208

Texture Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208

Specifying Texture Coordinates . . . . . . . . . . . . . . . . . . . . . . . . .210

Example: Multitextured Terrain . . . . . . . . . . . . . . . . . . . . . . . . .210

Texture Combine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213

Example: Image Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . .216

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219

Chapter 10 Up Your Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . .221

Display Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221

Creating a Display List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222

Filling a Display List with Commands . . . . . . . . . . . . . . . . . . . . .223

Executing Display Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223

Display List Gotchas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224

Destroying Display Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225

Display Lists and Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226

Vertex Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226

Array-Based Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228

TLFeBOOK

Contents xv

Enabling Vertex Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228

Working with Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229

Interleaved Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235

Vertex Arrays and Multitexturing . . . . . . . . . . . . . . . . . . . . . . . .237

Locking Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238

Marbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239

Frustum Culling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241

Determining the View Frustum . . . . . . . . . . . . . . . . . . . . . . . . .243

Testing Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244

Testing Spheres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244

Frustum Culling Applied . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247

Chapter 11 Displaying Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249

Bitmap Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249

Outline Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253

Using glFont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257

The Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257

The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258

Chapter 12 OpenGL Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261

What Is an OpenGL Buffer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261

Clearing the Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262

Scissor Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262

The Color Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263

Alpha Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263

Color Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265

Logical Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265

The Depth Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266

Depth-Comparison Functions . . . . . . . . . . . . . . . . . . . . . . . . . . .266

Read-Only Depth Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267

The Stencil Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268

An Example of Stencil Testing . . . . . . . . . . . . . . . . . . . . . . . . . .270

The Accumulation Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271

Example: Using the Accumulation Buffer . . . . . . . . . . . . . . . . . .272

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275

TLFeBOOK

xvi

Contents

 

 

 

Chapter 13

The Endgame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .277

 

 

The Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .277

 

 

Using OpenGL in the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .279

 

 

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .282

 

Part III

Appendices . . . . . . . . . . . . . . . . . . . . . .

283

 

Appendix A

Answers to Review Questions and Exercises . . . . . . . .

. .285

 

Appendix B

Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. .295

 

 

Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .295

 

 

Game Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .295

 

 

Game Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .296

 

 

Flipcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .296

 

 

OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .297

 

 

Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .297

 

 

C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .297

 

 

Windows Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .297

 

 

3D Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .298

 

 

OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .298

 

 

Graphics Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .298

 

 

Game Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .298

 

Appendix C What’s on the CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. .299

 

 

Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .299

 

 

GLee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .299

 

 

Bonus Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .300

 

 

Bonus Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .300

 

 

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. .301

TLFeBOOK

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]