
OpenGL Programming Guide
The Official Guide to Learning OpenGL, Version 4.3
Addison Wesley (Publisher)
8th Edition
Published on 4. April 2013
Book
Paperback/Softback
984 pages
978-0-321-77303-6 (ISBN)
Article exhausted; check for reprint
Description
Includes Complete Coverage of the OpenGL (R) Shading Language!
Today's OpenGL software interface enables programmers to produce extraordinarily high-quality computer-generated images and interactive applications using 2D and 3D objects, color images, and programmable shaders.
OpenGL (R) Programming Guide: The Official Guide to Learning OpenGL (R), Version 4.3, Eighth Edition, has been almost completely rewritten and provides definitive, comprehensive information on OpenGL and the OpenGL Shading Language. This edition of the best-selling "Red Book" describes the features through OpenGL version 4.3. It also includes updated information and techniques formerly covered in OpenGL (R) Shading Language (the "Orange Book").
For the first time, this guide completely integrates shader techniques, alongside classic, functioncentric techniques. Extensive new text and code are presented, demonstrating the latest in OpenGL programming techniques.
OpenGL (R) Programming Guide, Eighth Edition, provides clear explanations of OpenGL functionality and techniques, including processing geometric objects with vertex, tessellation, and geometry shaders using geometric transformations and viewing matrices; working with pixels and texture maps through fragment shaders; and advanced data techniques using framebuffer objects and compute shaders.
New OpenGL features covered in this edition include
Best practices and sample code for taking full advantage of shaders and the entire shading pipeline (including geometry and tessellation shaders)
Integration of general computation into the rendering pipeline via compute shaders
Techniques for binding multiple shader programs at once during application execution
Latest GLSL features for doing advanced shading techniques
Additional new techniques for optimizing graphics program performance
Today's OpenGL software interface enables programmers to produce extraordinarily high-quality computer-generated images and interactive applications using 2D and 3D objects, color images, and programmable shaders.
OpenGL (R) Programming Guide: The Official Guide to Learning OpenGL (R), Version 4.3, Eighth Edition, has been almost completely rewritten and provides definitive, comprehensive information on OpenGL and the OpenGL Shading Language. This edition of the best-selling "Red Book" describes the features through OpenGL version 4.3. It also includes updated information and techniques formerly covered in OpenGL (R) Shading Language (the "Orange Book").
For the first time, this guide completely integrates shader techniques, alongside classic, functioncentric techniques. Extensive new text and code are presented, demonstrating the latest in OpenGL programming techniques.
OpenGL (R) Programming Guide, Eighth Edition, provides clear explanations of OpenGL functionality and techniques, including processing geometric objects with vertex, tessellation, and geometry shaders using geometric transformations and viewing matrices; working with pixels and texture maps through fragment shaders; and advanced data techniques using framebuffer objects and compute shaders.
New OpenGL features covered in this edition include
Best practices and sample code for taking full advantage of shaders and the entire shading pipeline (including geometry and tessellation shaders)
Integration of general computation into the rendering pipeline via compute shaders
Techniques for binding multiple shader programs at once during application execution
Latest GLSL features for doing advanced shading techniques
Additional new techniques for optimizing graphics program performance
Reviews / Votes
"Wow! This book is basically one-stop shopping for OpenGL information. It is the kind of book that I will be reaching for a lot. Thanks to Dave, Graham, John, and Bill for an amazing effort."-Mike Bailey, professor, Oregon State University
"The most recent Red Book parallels the grand tradition of OpenGL; continuous evolution towards ever-greater power and efficiency. The eighth edition contains up-to-the minute information about the latest standard and new features, along with a solid grounding in modern OpenGL techniques that will work anywhere. The Red Book continues to be an essential reference for all new employees at my simulation company. What else can be said about this essential guide? I laughed, I cried, it was much better than Cats-I'll read it again and again."
-Bob Kuehne, president, Blue Newt Software
"OpenGL has undergone enormous changes since its inception twenty years ago. This new edition is your practical guide to using the OpenGL of today. Modern OpenGL is centered on the use of shaders, and this edition of the Programming Guide jumps right in, with shaders covered in depth in Chapter 2. It continues in later chapters with even more specifics on everything from texturing to compute shaders. No matter how well you know it or how long you've been doing it, if you are going to write an OpenGL program, you want to have a copy of the OpenGL (R) Programming Guide handy."
-Marc Olano, associate professor, UMBC
"If you are looking for the definitive guide to programming with the very latest version of OpenGL, look no further. The authors of this book have been deeply involved in the creation of OpenGL 4.3, and everything you need to know about the cutting edge of this industry-leading API is laid out here in a clear, logical, and insightful manner."
-Neil Trevett, president, Khronos Group
More details
Edition
8th edition
Language
English
Place of publication
New Jersey
United States
Publishing group
Pearson Education (US)
Target group
Professional and scholarly
Dimensions
Height: 231 mm
Width: 179 mm
Thickness: 53 mm
Weight
1492 gr
ISBN-13
978-0-321-77303-6 (9780321773036)
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited or by the publishers or by their respective licensors: all rights reserved.
Schweitzer Classification
Other editions
New editions

John Kessenich | Graham Sellers | Dave Shreiner
OpenGL Programming Guide
The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V
Book
10/2016
9th Edition
Addison Wesley
€63.50
Shipment within 15-20 days
Previous edition

Dave Shreiner | Bill The Khronos OpenGL ARB Working Group
OpenGL Programming Guide
The Official Guide to Learning OpenGL, Versions 3.0 and 3.1
Book
07/2009
7th Edition
Addison Wesley
€48.27
Article exhausted; check for reprint
Persons
Dave Shreiner, Director of Graphics and GPU Computing at ARM, Inc., has been active in OpenGL development nearly since its inception. He created the first commercial OpenGL training course and has taught OpenGL programming for twenty years.
Graham Sellers, coauthor of OpenGL (R) SuperBible, manages OpenGL Software Development at AMD. He authored many OpenGL feature specifications and helped bring OpenGL ES to desktop computers.
John Kessenich, OpenGL Shading Language Specification Editor, consults at LunarG, Inc., building compiler technology for GLSL. He helped develop OpenGL 2.0 and OpenGL ES 2.0 at 3Dlabs and Intel.
Bill Licea-Kane is Principal Member of Technical Staff at AMD, coauthor of OpenGL (R) Shading Language Guide, and chairs the OpenGL Shading Language technical subgroup.
Graham Sellers, coauthor of OpenGL (R) SuperBible, manages OpenGL Software Development at AMD. He authored many OpenGL feature specifications and helped bring OpenGL ES to desktop computers.
John Kessenich, OpenGL Shading Language Specification Editor, consults at LunarG, Inc., building compiler technology for GLSL. He helped develop OpenGL 2.0 and OpenGL ES 2.0 at 3Dlabs and Intel.
Bill Licea-Kane is Principal Member of Technical Staff at AMD, coauthor of OpenGL (R) Shading Language Guide, and chairs the OpenGL Shading Language technical subgroup.
Content
Figures xxiii
Tables xxix
Examples xxxiii
About This Guide xli
Chapter 1: Introduction to OpenGL 1
What Is OpenGL? 2 Your First Look at an OpenGL Program 3
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 60
Compiling Shaders 70
Shader Subroutines 76
Separate Shader Objects 81
Chapter 3: Drawing with OpenGL 85
OpenGL Graphics Primitives 86 Data in OpenGL Buffers 92
Vertex Specification 108
OpenGL Drawing Commands 115
Instanced Rendering 128
Chapter 4: Color, Pixels, and Framebuffers 141
Basic Color Theory 142
Buffers and Their Uses 144
Color and OpenGL 148
Multisampling 153
Testing and Operating on Fragments 156
Per-Primitive Antialiasing 178
Framebuffer Objects 180
Writing to Multiple Renderbuffers Simultaneously 193
Reading and Copying Pixel Data 200
Copying Pixel Rectangles 203
Chapter 5: Viewing Transformations, Clipping, and Feedback 205
Viewing 206 User Transformations 212
OpenGL Transformations 236
Transform Feedback 239
Chapter 6: Textures 259
Texture Mapping 261
Basic Texture Types 262
Creating and Initializing Textures 263
Proxy Textures 276
Specifying Texture Data 277
Sampler Objects 292
Using Textures 295
Complex Texture Types 306
Texture Views 321
Compressed Textures 326
Filtering 329
Advanced Texture Lookup Functions 340
Point Sprites 346
Rendering to Texture Maps 351
Chapter Summary 356
Chapter 7: Light and Shadow 359
Lighting Introduction 360 Classic Lighting Model 361
Advanced Lighting Models 384
Shadow Mapping 400
Chapter 8: Procedural Texturing 411
Procedural Texturing 412
Bump Mapping 433
Antialiasing Procedural Textures 442
Noise 460
Further Information 483
Chapter 9: Tessellation Shaders 485
Tessellation Shaders 486 Tessellation Patches 487
Tessellation Control Shaders 488
Tessellation Evaluation Shaders 496
A Tessellation Example: The Teapot 500
Additional Tessellation Techniques 504
Chapter 10: Geometry Shaders 509
Creating a Geometry Shader 510
Geometry Shader Inputs and Outputs 514
Producing Primitives 525
Advanced Transform Feedback 532
Geometry Shader Instancing 549
Multiple Viewports and Layered Rendering 550
Chapter Summary 559
Chapter 11: Memory 563
Using Textures for Generic Data Storage 564 Shader Storage Buffer Objects 576
Atomic Operations and Synchronization 578
Example 609
Chapter 12: Compute Shaders 623
Overview 624
Workgroups and Dispatch 625
Communication and Synchronization 632
Examples 636
Chapter Summary 647
Appendix A: Basics of GLUT: The OpenGL Utility Toolkit 651
Initializing and Creating a Window 652 Accessing Functions 654
Handling Window and Input Events 655
Managing a Background Process 658
Running the Program 658
Appendix B: OpenGL ES and WebGL 659
OpenGL ES 660
WebGL 662
Appendix C: Built-in GLSL Variables and Functions 673
Built-in Variables 674 Built-in Constants 684
Built-in Functions 686
Appendix D: State Variables 737
The Query Commands 738
OpenGL State Variables 745
Appendix E: Homogeneous Coordinates and Transformation Matrices 829
Homogeneous Coordinates 830 Transformation Matrices 831
Appendix F: OpenGL and Window Systems 835
Accessing New OpenGL Functions 836
GLX: OpenGL Extension for the X Window System 838
WGL: OpenGL Extensions for Microsoft Windows 845
OpenGL in MacOSX: The Core OpenGL (CGL) API and the NSOpenGL Mac OS X's Core OpenGL Library . 851
The NSOpenGL Classes 854
Appendix G: Floating-Point Formats for Textures, Framebuffers, and Renderbuffers 857
Reduced-Precision Floating-Point Values 858 16-bit Floating-Point Values 858
10- and 11-bit Unsigned Floating-Point Values 860
Appendix H: Debugging and Profiling OpenGL 865
Creating a Debug Context 866
Debug Output 868
Debug Groups 875
Profiling 879
Appendix I: Buffer Object Layouts 885
Using Standard Layout Qualifiers 886 The std140 Layout Rules. 886
The std430 Layout Rules 887
Glossary 889
Index 919
Tables xxix
Examples xxxiii
About This Guide xli
Chapter 1: Introduction to OpenGL 1
What Is OpenGL? 2 Your First Look at an OpenGL Program 3
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 60
Compiling Shaders 70
Shader Subroutines 76
Separate Shader Objects 81
Chapter 3: Drawing with OpenGL 85
OpenGL Graphics Primitives 86 Data in OpenGL Buffers 92
Vertex Specification 108
OpenGL Drawing Commands 115
Instanced Rendering 128
Chapter 4: Color, Pixels, and Framebuffers 141
Basic Color Theory 142
Buffers and Their Uses 144
Color and OpenGL 148
Multisampling 153
Testing and Operating on Fragments 156
Per-Primitive Antialiasing 178
Framebuffer Objects 180
Writing to Multiple Renderbuffers Simultaneously 193
Reading and Copying Pixel Data 200
Copying Pixel Rectangles 203
Chapter 5: Viewing Transformations, Clipping, and Feedback 205
Viewing 206 User Transformations 212
OpenGL Transformations 236
Transform Feedback 239
Chapter 6: Textures 259
Texture Mapping 261
Basic Texture Types 262
Creating and Initializing Textures 263
Proxy Textures 276
Specifying Texture Data 277
Sampler Objects 292
Using Textures 295
Complex Texture Types 306
Texture Views 321
Compressed Textures 326
Filtering 329
Advanced Texture Lookup Functions 340
Point Sprites 346
Rendering to Texture Maps 351
Chapter Summary 356
Chapter 7: Light and Shadow 359
Lighting Introduction 360 Classic Lighting Model 361
Advanced Lighting Models 384
Shadow Mapping 400
Chapter 8: Procedural Texturing 411
Procedural Texturing 412
Bump Mapping 433
Antialiasing Procedural Textures 442
Noise 460
Further Information 483
Chapter 9: Tessellation Shaders 485
Tessellation Shaders 486 Tessellation Patches 487
Tessellation Control Shaders 488
Tessellation Evaluation Shaders 496
A Tessellation Example: The Teapot 500
Additional Tessellation Techniques 504
Chapter 10: Geometry Shaders 509
Creating a Geometry Shader 510
Geometry Shader Inputs and Outputs 514
Producing Primitives 525
Advanced Transform Feedback 532
Geometry Shader Instancing 549
Multiple Viewports and Layered Rendering 550
Chapter Summary 559
Chapter 11: Memory 563
Using Textures for Generic Data Storage 564 Shader Storage Buffer Objects 576
Atomic Operations and Synchronization 578
Example 609
Chapter 12: Compute Shaders 623
Overview 624
Workgroups and Dispatch 625
Communication and Synchronization 632
Examples 636
Chapter Summary 647
Appendix A: Basics of GLUT: The OpenGL Utility Toolkit 651
Initializing and Creating a Window 652 Accessing Functions 654
Handling Window and Input Events 655
Managing a Background Process 658
Running the Program 658
Appendix B: OpenGL ES and WebGL 659
OpenGL ES 660
WebGL 662
Appendix C: Built-in GLSL Variables and Functions 673
Built-in Variables 674 Built-in Constants 684
Built-in Functions 686
Appendix D: State Variables 737
The Query Commands 738
OpenGL State Variables 745
Appendix E: Homogeneous Coordinates and Transformation Matrices 829
Homogeneous Coordinates 830 Transformation Matrices 831
Appendix F: OpenGL and Window Systems 835
Accessing New OpenGL Functions 836
GLX: OpenGL Extension for the X Window System 838
WGL: OpenGL Extensions for Microsoft Windows 845
OpenGL in MacOSX: The Core OpenGL (CGL) API and the NSOpenGL Mac OS X's Core OpenGL Library . 851
The NSOpenGL Classes 854
Appendix G: Floating-Point Formats for Textures, Framebuffers, and Renderbuffers 857
Reduced-Precision Floating-Point Values 858 16-bit Floating-Point Values 858
10- and 11-bit Unsigned Floating-Point Values 860
Appendix H: Debugging and Profiling OpenGL 865
Creating a Debug Context 866
Debug Output 868
Debug Groups 875
Profiling 879
Appendix I: Buffer Object Layouts 885
Using Standard Layout Qualifiers 886 The std140 Layout Rules. 886
The std430 Layout Rules 887
Glossary 889
Index 919