Home > Store

OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V, 9th Edition

OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V, 9th Edition

eBook (Watermarked)

  • Your Price: $38.39
  • List Price: $47.99
  • Includes EPUB, MOBI, and PDF
  • About eBook Formats
  • This eBook includes the following formats, accessible from your Account page after purchase:

    ePub EPUB The open industry format known for its reflowable content and usability on supported mobile devices.

    MOBI MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

    Adobe Reader PDF The popular standard, used most often with the free Adobe® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.

Also available in other formats.

Register your product to gain access to bonus material or receive a coupon.


  • Copyright 2017
  • Dimensions: 7" x 9-1/8"
  • Pages: 976
  • Edition: 9th
  • eBook (Watermarked)
  • ISBN-10: 0-13-449555-1
  • ISBN-13: 978-0-13-449555-2

Complete Coverage of OpenGL® 4.5—the Latest Version (Includes 4.5, 4.4, SPIR-V, and Extensions)

The latest version of today’s leading worldwide standard for computer graphics, OpenGL 4.5 delivers significant improvements in application efficiency, flexibility, and performance. OpenGL 4.5 is an exceptionally mature and robust platform for programming high-quality computer-generated images and interactive applications using 2D and 3D objects, color images, and shaders.

OpenGL® Programming Guide, Ninth Edition, presents definitive, comprehensive information on OpenGL 4.5, 4.4, SPIR-V, OpenGL extensions, and the OpenGL Shading Language. It will serve you for as long as you write or maintain OpenGL code.

This edition of the best-selling “Red Book” fully integrates shader techniques alongside classic, function-centric approaches, and contains extensive code examples that demonstrate modern techniques. Starting with the fundamentals, its wide-ranging coverage includes drawing, color, pixels, fragments, transformations, textures, framebuffers, light and shadow, and memory techniques for advanced rendering and nongraphical applications. It also offers discussions of all shader stages, including thorough explorations of tessellation, geometric, and compute shaders.

New coverage in this edition includes

  • Thorough coverage of OpenGL 4.5 Direct State Access (DSA), which overhauls the OpenGL programming model and how applications access objects
  • Deeper discussions and more examples of shader functionality and GPU processing, reflecting industry trends to move functionality onto graphics processors
  • Demonstrations and examples of key features based on community feedback and suggestions
  • Updated appendixes covering the latest OpenGL libraries, related APIs, functions, variables, formats, and debugging and profiling techniques

Sample Content

Sample Pages

Download the sample pages (includes Chapter 2 and the Index.)

Table of Contents

Figures xxi

Tables xxvii

Examples xxxi

About This Guide xxxix

Acknowledgments xlv

Chapter 1: Introduction to OpenGL 1

What Is OpenGL? 2

Your First Look at an OpenGL Program 4

OpenGL Syntax 8

OpenGL’s Rendering Pipeline 10

Our First Program: A Detailed Discussion 14

Chapter 2: Shader Fundamentals 33

Shaders and OpenGL 34

OpenGL’s Programmable Pipeline 35

An Overview of the OpenGL Shading Language 37

Interface Blocks 61

Compiling Shaders 72

Shader Subroutines 79

Separate Shader Objects 84


Chapter 3: Drawing with OpenGL 95

OpenGL Graphics Primitives 96

Data in OpenGL Buffers 102

Vertex Specification 117

OpenGL Drawing Commands 124

Chapter 4: Color, Pixels, and Fragments 151

Basic Color Theory 152

Buffers and Their Uses 154

Color and OpenGL 158

Testing and Operating on Fragments 163

Multisampling 185

Per-Primitive Antialiasing 188

Reading and Copying Pixel Data 191

Copying Pixel Rectangles 193

Chapter 5: Viewing Transformations, Culling, Clipping, and Feedback 197

Viewing 198

User Transformations 203

OpenGL Transformations 226

Transform Feedback 231

Chapter 6: Textures and Framebuffers 255

Introduction to Texturing 257

Basic Texture Types 258

Creating and Initializing Textures 260

Specifying Texture Data 265

Texture Formats 279

Compressed Textures 285

Sampler Objects 288

Using Textures 291

Complex Texture Types 302

Texture Views 317

Filtering 321

Bindless Textures 337

Sparse Textures 341

Point Sprites 344

Framebuffer Objects 348

Rendering to Texture Maps 351

Chapter Summary 370

Chapter 7: Light and Shadow 373

Lighting Introduction 374

Classic Lighting Model 375

Advanced Lighting Models 399

Shadow Mapping 413

Chapter 8: Procedural Texturing 423

Procedural Texturing 424

Bump Mapping 444

Antialiasing Procedural Textures 454

Noise 472

Further Information 495

Chapter 9: Tessellation Shaders 497

Tessellation Shaders 498

Tessellation Patches 499

Tessellation Control Shaders 500

Tessellation Evaluation Shaders 508

A Tessellation Example: The Teapot 512

Additional Tessellation Techniques 516

Chapter 10: Geometry Shaders 521

Creating a Geometry Shader 523

Geometry Shader Inputs and Outputs 526

Producing Primitives 537

Advanced Transform Feedback 544

Geometry Shader Instancing 561

Multiple Viewports and Layered Rendering 562

Chapter Summary 572

Chapter 11: Memory 577

Using Textures for Generic Data Storage 578

Shader Storage Buffer Objects 589

Atomic Operations and Synchronization 591

Example: Order-Independent Transparency 621

Chapter 12: Compute Shaders 635

Overview 636

Workgroups and Dispatch 637

Communication and Synchronization 644

Examples 648

Chapter Summary 659

Appendix A: Support Libraries 663

Basics of GLFW: The OpenGL Utility Framework 664

Initializing and Creating a Window 664

Handling User Input 667

Controlling the Window 671

Shutting Down Cleanly 675

GL3W: OpenGL Glue 676

Appendix B: OpenGL ES and WebGL 679

OpenGL ES 680

WebGL 682

Appendix C: Built-in GLSL Variables and Functions 693

Built-in Variables 693

Built-in Constants 705

Built-in Functions 707

Appendix D: State Variables 757

The Query Commands 757

OpenGL State Variables 765

Appendix E: Homogeneous Coordinates and Transformation Matrices 849

Homogeneous Coordinates 849

Transformation Matrices 851

Appendix F: Floating-Point Formats for Textures, Framebuffers, and Renderbuffers 855

Reduced-Precision Floating-Point Values 855

16-Bit Floating-Point Values 856

10- and 11-Bit Unsigned Floating-Point Values 858

Appendix G: Debugging and Profiling OpenGL 863

Creating a Debug Context 863

Debug Output 866

Debug Groups 874

Profiling 877

Appendix H: Buffer Object Layouts 883

Using Standard Layout Qualifiers 883

The std140 Layout Rules 884

The std430 Layout Rules 885

Glossary 887

Index 917


Submit Errata

More Information

Unlimited one-month access with your purchase
Free Safari Membership