SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This PDF will be accessible from your Account page after purchase and requires PDF reading software, such as Acrobat® Reader®.
The eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Includes Complete Coverage of the OpenGL® 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® Programming Guide: The Official Guide to Learning OpenGL®, 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® 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® 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
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