You are on page 1of 540

OpenGL 7

Dava Shreiner
/
Dava Shreiner ARM
SGI OpenGL OpenGL

OpenGL OpenGL OpenGL


OpenGL 2.1 OpenGL 3.0
3.1 OpenGL
3D

NURBS OpenGL

OpenGL 1

1.1

OpenGL 1

1.2

OpenGL 3

1.3

OpenGL 4

1.4

OpenGL 6

1.5

OpenGL 6

1.5.1

1.5.2

1.5.3

1.5.4

1.5.5

1.5.6

1.5.7

1.5.8

1.6 OpenGL 9
1.6.1

1.6.2

OpenGL GLUT 10

1.7

13

1.7.1

14

1.7.2

=+ 15

1.8

OpenGL 17

1.8.1

OpenGL 17

1.8.2

OpenGL 18

2
2.1

19

20

2.1.1

20

2.1.2

22

2.1.3

23

2.1.4

24

2.2
2.2.1

25
25

2.2.2

27

2.2.3

OpenGL 27

2.3

31

2.4

32

2.4.1

32

2.4.2

33

2.4.3

36

2.5

41

2.6

43

2.6.1

1 44

2.6.2

2 44

2.6.3

3 46

2.6.4

51

2.6.5

53

2.6.6

54

2.7

57

2.7.1

57

2.7.2

58

2.7.3

58

2.7.4

60

2.7.5

62

2.7.6

63

2.7.7

63

2.8

65

2.9

69

2.10

71

3
3.1

77

78

3.1.1

80

3.1.2

83

3.2

84

3.2.1

85

3.2.2

86

3.2.3

89

3.3

93

3.3.1

94

3.3.2

95

3.3.3

96

3.4

96

3.4.1

96

3.4.2

97

3.5

98

3.6

100

3.6.1

101

3.6.2

102

3.7

102

3.8

104

3.8.1

104

3.8.2

107

3.9

109

113

4.1

113

4.2

114

4.3 RGBA 115


4.3.1

RGBA 116

4.3.2

117

4.3.3

RGBA 118

4.3.4

118

4.4

119

4.4.1

RGBA 119

4.4.2

120

4.4.3

121

123

5.1

124

5.2

OpenGL 125

5.2.1

125

5.2.2

126

5.2.3

RGB 126

5.3

127

5.4

129

5.4.1

130

5.4.2

131

5.4.3

132

5.4.4

133

5.4.5

133

5.5

138

5.5.1

138

5.5.2

138

5.5.3

139

5.5.4

139

5.5.5

140

5.6

140

5.6.1

141

5.6.2

141

5.6.3

142

5.6.4

142

5.6.5

143

5.7

146

5.7.1

147

5.7.2

147

5.7.3

147

5.7.4

148

5.7.5

148

5.8

149

6
6.1

151

152

6.1.1

152

6.1.2

154

6.1.3

154

6.1.4

156

6.1.5

157

6.1.6

159

6.2

162

6.2.1

164

6.2.2

169

6.2.3
6.3

172
172

6.3.1

173

6.3.2

175

6.4

181

6.5

182

185

7.1

185

7.2

186

7.3

188

7.4

189

7.4.1

191

7.4.2

191

7.4.3

193

7.4.4

193

7.4.5

194

7.5

194

7.6

199

8
8.1

202

203

8.1.1

204

8.1.2

205

8.1.3

206

8.1.4

206

8.1.5

207

8.2

209

8.3

215

8.3.1

216

8.3.2

217

8.3.3

219

8.3.4

221

8.3.5

222

8.4

224

8.5

227

8.5.1

227

8.5.2

228

8.6

229

8.7

230

8.7.1

231

8.7.2

234

8.7.3

240

8.7.4

241

8.7.5

243

9
9.1

245

248

9.1.1

248

9.1.2

249

9.2

251

9.2.1

255

9.2.2

257

9.2.3

259

9.2.4

261

9.2.5

264

9.2.6

265

9.2.7

267

9.2.8

mipmap 267

9.3

2759.4

277

9.4.1

277

9.4.2

278

9.4.3

280

9.4.4

280

9.5

282

9.6

284

9.6.1

285

9.6.2

286

9.7

289

9.7.1

289

9.7.2

293

9.7.3

294

9.8

296

9.9

299

9.10

303

9.10.1

303

9.10.2

303

9.11

303

9.12

304

9.13

305

9.13.1

306

9.13.2

307

10
10.1

309

310

10.1.1

311

10.1.2

312

10.1.3

313

10.1.4

315

10.2

316

10.2.1

316

10.2.2

alpha 317

10.2.3

318

10.2.4

322

10.2.5

322

10.2.6

324

10.2.7

325

10.3

327

10.3.1

328

10.3.2

328

10.3.3

331

10.3.4

331

10.4

332

10.4.1

333

10.4.2

340

11
11.1

342

342

11.1.1

343

11.1.2

343

11.1.3

347

11.1.4

350

11.1.5

352

11.1.6

352

11.1.7

GLU 352

11.1.8

352

11.2

353

11.2.1

354

11.2.2

354

11.2.3

355

12

NURBS 360

12.1

360

12.2

361

12.2.1

361

12.2.2

365

12.2.3

369

12.3

GLU NURBS 371

12.3.1

NURBS 371

12.3.2

NURBS 374

12.3.3

NURBS 377

12.3.4

NURBS 380

13
13.1

383

383

13.1.1

384

13.1.2

384

13.1.3

385

13.1.4

386

13.1.5

389

13.1.6

397

13.2

398

13.2.1

399

13.2.2

400

13.2.3

400

14
14.1

OpenGL 404

405

14.2

OpenGL 406

14.2.1

407

14.2.2

407

14.3

407

14.4

409

14.5

409

14.6

411

14.7

411

14.8

412

14.9

413

14.10

414

14.11

414

14.12

415

14.13

416

14.14

416

14.15

417

14.16

418

14.16.1

418

14.16.2

419

14.17

419

14.18

420

14.19

Dirichlet 420

14.20

421

14.21

glDrawPixels() glCopyPixels() 422

15
15.1

OpenGL 424

OpenGL 424

15.1.1

425

15.1.2

426

15.2

GLSL 427

15.2.1

427

15.2.2

OpenGL/GLSL 428

15.3

OpenGL 432

15.4

GLSL 433

15.4.1

433

15.4.2

433

15.4.3
15.5

434
uniform 439

15.5.1

uniform 440

15.5.2

uniform uniform 440

15.5.3

446

15.5.4

446

15.5.5

448

15.5.6

GLSL OpenGL 449

15.6

449

15.7

452

15.7.1

452

15.7.2

452

15.7.3

453

15.7.4

453

15.8

454

15.9

454

15.10

458

15.11

462

A GLUTOpenGL 464
B

468

495

D OpenGL 499
511


OpenGL 3D
OpenGL

OpenGL SGI IRIS GL SGI


IRIS GL 2D
SGI IRIS 3D API
SGI IRIS GL OpenGL
OpenGL
OpenGL C
OpenGL
WindowsUNIX/LinuxMac OS OS/2
OpenGL SGI SGI
OpenGL ARBARB SGCDECIBMIntel
Microsoft 1992 nVidiaATI
ARB 4 OpenGL OpenGL
OpenGL
2006 SGI OpenGL ARB Khronos
www.khronos.orgKhronos
Khronos OpenGL
OpenGL Khronos OpenGL
OpenGL OpenGL 7
6 OpenGL 3.0 OpenGL 3.1

OpenGL 5 6 6
7 7

2009 10


OpenGLGraphics LibraryGL
OpenGL

OpenGL

15 5

1 OpenGL OpenGL

2
3

4
5

OpenGL

6 alpha

7 OpenGL
OpenGL
8

10 OpenGL

11 GLUOpenGL Utility LibraryOpenGL

12
13 OpenGL
OpenGL
14 OpenGL
OpenGL Silicon Graphics IRIS

15 OpenGL 2.0 OpenGL OpenGL


GLSL OpenGL
OpenGL

A GLUTOpenGL

B OpenGL
C
D
OpenGL X Apple Mac OS Microsoft Windows

E OpenGL

? F OpenGL
G OpenGL OpenGL

H
I OpenGL
J

K
L GLSL 1.40 uniform

7
OpenGL 3.0 OpenGL 3.1
18 OpenGL 3.0

3.0
API
OpenGL 3.0
OpenGL
OpenGL GLSL 1.30

OpenGL 2.1

OpenGL
[0,1]

sRGB

OpenGL 3.1
OpenGL 3.0

OpenGL GLSL1.40

uniform

Computer Graphics: Principles and Practice James D.FoleyAndries van Dam


Steven K.Feiner John F.HughesAddison-Wesley1990

3D Computer Graphics Andrew S. GlassnerThe Lyons Press1994

OpenGL
FAQ OpenGL
http://www.opengl.org/
OpenGL OpenGL 3.0 OpenGL 3.1
OpenGL Addison Wesley OpenGL
Reference ManualOpenGL
OpenGL
OpenGL
OpenGL
OpenGL
OpenGL

OpenGL
OpenGL
OpenGL 3.0
OpenGL
API
Web
http://www.opengl-redbook.com/

OpenGL
OpenGL Utility Toolkit (GLUT) Mark
Kilgard freeglut GLUT
Mark Mark Kilgard OpenGL Programming for the
X Window SystemAddison-Wesley1996
http://freeglut.sourceforge.net/

1.6 A GLUT
OpenGL GLUT OpenGL Web
http://www.opengl.org/resources/

OpenGL
OpenGL
OpenGL
Nate Robin OpenGL
Nate Robin OpenGL

GLUT

http://www.xmission.com/~nate/tutors.html

OpenGL
Web http://www.opengl-redbook.com/

glCommand 4
sif d GLshortGLintGLfloat GLdouble
glCommand TYPE
void glCommand{sifd}(TYPE x1, TYPE y1, TYPE x2, TYPE y2);

OpenGL 3.0 OpenGL 3.1OpenGL 3.0


OpenGL 3.1
OpenGL
OpenGL ARB GL_ARB_compatibility
OpenGL 3.1

OpenGL OpenGL
Utility Library GLU OpenGL 3.1

You might also like