OpenGL Superbible

Graham Sellers / Richard S Wright / Nicholas Haemel  
Total pages
July 2015
Related Titles

Product detail

Product Price CHF Available  
OpenGL Superbible
66.30 approx. 7-9 days


OpenGL® SuperBible, Seventh Edition, is the definitive programmer’s guide, tutorial, and reference for OpenGL 4.5, the world’s leading 3D API for real-time computer graphics. The best introduction for any developer, it clearly explains OpenGL’s newest APIs; key extensions; shaders; and essential, related concepts. Students will find up-to-date, hands-on guidance for all facets of modern OpenGL development—both desktop and mobile.


  • This is the best all-around introduction to OpenGL for a programmer at any level of experience
  • Fully revised and updated, with new or re-written coverage on OpenGL 4.5
  • Clearly explains both the newest API and indispensable related concepts
  • Up-to-date, hands-on guidance for all facets of modern OpenGL development on both desktop and mobile platforms, including transformations, texture mapping, shaders, buffers, geometry management, direct state access and much more.

New to this Edition

Roughly 30% of the 7th edition content by page count will be new. The new content will mostly be confined to new sections in the latter half of the book, with cross references and other supporting materials updated to match. The code samples accompanying the book will be updated to reflect new programming practices.

The new content is based on the techniques described in the “Approaching Zero Driver Overhead” talk and accompanying example programs presented by the author at GDC 2014. The slides for this presentation are viewable at and have received more than 215,000 hits to date.

At the time that the 6th edition of this book was being written, those features and techniques were very new and not available in widespread graphics hardware. Today, these features are readily available and their use has spurred a lot of interest.

In addition to the new and modified sections, there will be minor changes and tweaks throughout. In particular, a new feature called “Direct State Access” in OpenGL 4.5 has changed the way that almost every OpenGL function is called. Therefore, almost every listing and example in the book will have a note or modification attached to show how to use the new feature(s).
Chapter 5 will see a pretty major overhaul. The section on Buffers will be significantly updated and two entirely new sections in the Textures part of the chapter are going to be added.
Going  to add a couple of major new examples, especially making use of compute shaders. There’s an entirely new sample in Chapter 10 about compressing texture data with a compute shader.
There are new sections on security and robustness, and some extras about performance tuning towards the end of the book.
There are also a number of minor features that will add paragraphs and sub-sections throughout the book. also take the opportunity to clarify a few things, fix a couple of issues that readers have reported and elaborate on some of the topics that didn’t get much coverage in the last edition.
The section on OpenGL ES will also be updated to cover OpenGL ES 3.1 (the 6th edition goes to 3.0), and the Android Extension Pack ( - see “Android Extension Pack” section).
The accompanying OpenGL sample code ( will be updated and improved as well. Although it doesn’t get printed, it’s very much part of the book.

Table of Contents

Figures xv

Tables xxi

Listings xxiii

Foreword xxxi

Preface xxxiii

Acknowledgments xxxix

About the Author xli


Part I: Foundations 1


Chapter 1: Introduction 3

OpenGL and the Graphics Pipeline 4

The Origins and Evolution of OpenGL 6

Primitives, Pipelines, and Pixels 10

Summary 11


Chapter 2: Our First OpenGL Program 13

Creating a Simple Application 14

Using Shaders 17

Drawing Our First Triangle 24

Summary 26


Chapter 3: Following the Pipeline 27

Passing Data to the Vertex Shader 28

Passing Data from Stage to Stage 30

Tessellation 33

Geometry Shaders 37

Primitive Assembly, Clipping, and Rasterization 39

Fragment Shaders 43

Framebuffer Operations 47

Compute Shaders 48

Using Extensions in OpenGL 49

Summary 54


Chapter 4: Math for 3D Graphics 55

Is This the Dreaded Math Chapter 56

A Crash Course in 3D Graphics Math 57

Understanding Transformations 69

Interpolation, Lines, Curves, and Splines 89

Summary 97


Chapter 5: Data 99

Buffers 100

Uniforms 117

Shader Storage Blocks 140

Atomic Counters 147

Textures 152

Summary 203


Chapter 6: Shaders and Programs 205

Language Overview 206

Compiling, Linking, and Examining Programs 219

Summary 238


Part II: In Depth 239


Chapter 7: Vertex Processing and Drawing Commands 241

Vertex Processing 242

Drawing Commands 249

Storing Transformed Vertices 278

Clipping 296

Summary 303


Chapter 8: Primitive Processing 305

Tessellation 306

Geometry Shaders 333

Summary 364


Chapter 9: Fragment Processing and the Framebuffer 365

Fragment Shaders 366

Per-Fragment Tests 369

Color Output 382

Off-Screen Rendering 390

Antialiasing 412

Advanced Framebuffer Formats 428

Point Sprites 448

Getting at Your Image 458

Summary 466


Chapter 10: Compute Shaders 467

Using Compute Shaders 468

Examples 479

Summary 502


Chapter 11: Advanced Data Management 503

Eliminating Binding 504

Sparsely Populated Textures 509

Texture Compression 516

Packed Data Formats 525

High-Quality Texture Filtering 527

Summary 531


Chapter 12: Controlling and Monitoring the Pipeline 533

Queries 534

Synchronization in OpenGL 556

Summary 562


Part III: In Practice 565


Chapter 13: Rendering Techniques 567

Lighting Models 568

Non-Photo-Realistic Rendering 610

Alternative Rendering Methods 613

Two-Dimensional Graphics 647

Summary 659


Chapter 14: High-Performance OpenGL 661

Optimizing CPU Performance 661

Low-Overhead OpenGL 677

Performance Analysis Tools 699

Summary 726


Chapter 15: Debugging and Stability 729

Debugging Your Applications 730

Security and Robustness 737

Summary 742


Appendix A: Further Reading 743


Appendix B: The SBM File Format 749


Appendix C: The SuperBible Tools 759


Glossary 797

Index 805


Graham Sellers, AMD Software Architect and Engineering Fellow, represents AMD at the OpenGL ARB. He has contributed to the core OpenGL specification and extensions, and holds several graphics and image processing patents.


Richard S. Wright, Jr., Senior Software Engineer for Software Bisque, developed multimedia astronomy and planetarium software using OpenGL. For more than a decade he taught OpenGL programming in Full Sail University’s game development degree program.


Nicholas Haemel, Director of Camera Software at NVIDIA, has represented NVIDIA at the Khronos Group standards body and authored many OpenGL extensions.