Figures xv
Tables xxiii
Listings xxv
Foreword xxxiii
Preface xxxv
Acknowledgments xli
About the Authors xlv
Part I: Foundations 1
Chapter 1: Introduction 3
OpenGL and the Graphics Pipeline 4The Origins and Evolution of OpenGL 6
Primitives, Pipelines, and Pixels 10
Summary 11
Chapter 2: Our First OpenGL Program 13
Creating a Simple Application 14Using Shaders 16
Drawing Our First Triangle 24
Summary 25
Chapter 3: Following the Pipeline 27
Passing Data to the Vertex Shader 28Passing Data from Stage to Stage 29
Tessellation 32
Geometry Shaders 36
Primitive Assembly, Clipping, and Rasterization 38
Fragment Shaders 42
Framebuffer Operations 45
Compute Shaders 47
Summary 48
Chapter 4: Math for 3D Graphics 49
Is This the Dreaded Math Chapter? 50A Crash Course in 3D Graphics Math 51
Understanding Transformations 63
Interpolation, Lines, Curves, and Splines 82
Summary 90
Chapter 5: Data 91
Buffers 92Uniforms 103
Shader Storage Blocks 126
Atomic Counters 133
Textures 137
Summary 185
Chapter 6: Shaders and Programs 187
Language Overview 188Compiling, Linking, and Examining Programs 201
Summary 219
Part II: In Depth 221
Chapter 7: Vertex Processing and Drawing Commands 223
Vertex Processing 224Drawing Commands 231
Storing Transformed Vertices 259
Clipping 276
Summary 282
Chapter 8: Primitive Processing 283
Tessellation 284Geometry Shaders 310
Summary 340
Chapter 9: Fragment Processing and the Framebuffer 341
Fragment Shaders 342Per-Fragment Tests 345
Color Output 357
Off-Screen Rendering 364
Antialiasing 384
Advanced Framebuffer Formats 399
Point Sprites 419
Getting at Your Image 428
Summary 435
Chapter 10: Compute Shaders 437
Using Compute Shaders 438Examples 449
Summary 471
Chapter 11: Controlling and Monitoring the Pipeline 473
Queries 474Synchronization in OpenGL 493
Summary 498
Part III: In Practice 501
Chapter 12: Rendering Techniques 503
Lighting Models 504Non-Photo-Realistic Rendering 544
Alternative Rendering Methods 548
Summary 580
Chapter 13: Debugging and Performance Optimization 581
Debugging Your Applications 582Performance Optimization 589
Summary 616
Chapter 14: Platform Specifics 617
Using Extensions in OpenGL 618OpenGL on Windows 623
OpenGL on Mac OS X 647
OpenGL on Linux 682
OpenGL on Mobile Platforms 705
Summary 744
Appendix A: Further Reading 747
Appendix B: The SBM File Format 751
Appendix C: The SuperBible Tools 759
Glossary 765
Index 773
Graham Sellers is a senior manager and software architect on the OpenGL driver team at AMD. He represents AMD at the ARB and has contributed to many extensions and to the core OpenGL Specification. He holds several patents in the fields of computer graphics and image processing.
Richard S. Wright, Jr., senior software engineer for Software Bisque, develops multimedia astronomy and planetarium software using OpenGL. He has written many OpenGL-based games, scientific/medical applications, database visualization tools, and educational programs. He has taught OpenGL programming at Full Sail University’s game design degree program for over a decade.
Nicholas Haemel, senior manager of Tegra OpenGL driver development at NVIDIA, leads a development team working on NVIDIA mobile graphics drivers, represents NVIDIA at the Khronos Group standards body, has authored many OpenGL extensions, and contributed to all OpenGL specifications since version 3.0.
![]() |
Ask a Question About this Product More... |
![]() |