Amazon cover image
Image from Amazon.com

OpenGL programming guide : the official guide to learning OpenGL, version 4.3 / Dave Shreiner, Graham Sellers, John Kessenich, Bill Licea-Kane ; the Khronos OpenGL ARB Working Group.

Contributor(s): Series: OpenGL seriesPublisher: Upper Saddle River, NJ : Addison-Wesley, [2013]Edition: Eighth editionDescription: xlvi, 935 pages : illustrations ; 24 cmContent type:
  • text
Media type:
  • unmediated
Carrier type:
  • volume
ISBN:
  • 9780321773036 (pbk. : alk. paper)
  • 0321773039 (pbk. : alk. paper)
Subject(s): LOC classification:
  • T385 .O635 2013
Contents:
Machine generated contents note: 1.Introduction to OpenGL -- What Is OpenGL? -- Your First Look at an OpenGL Program -- OpenGL Syntax -- OpenGL's Rendering Pipeline -- Preparing to Send Data to OpenGL -- Sending Data to OpenGL -- Vertex Shading -- Tessellation Shading -- Geometry Shading -- Primitive Assembly -- Clipping -- Rasterization -- Fragment Shading -- Per-Fragment Operations -- Our First Program: A Detailed Discussion -- Entering main() -- OpenGL Initialization -- Our First OpenGL Rendering -- 2.Shader Fundamentals -- Shaders and OpenGL -- OpenGL's Programmable Pipeline -- An Overview of the OpenGL Shading Language -- Creating Shaders with GLSL -- Storage Qualifiers -- Statements -- Computational Invariance -- Shader Preprocessor -- Compiler Control -- Global Shader-Compilation Option -- Interface Blocks -- Uniform Blocks -- Specifying Uniform Blocks in Shaders -- Accessing Uniform Blocks from Your Application -- Buffer Blocks -- In/Out Blocks -- Compiling Shaders -- Our LoadShaders() Function -- Shader Subroutines -- GLSL Subroutine Setup -- Selecting Shader Subroutines -- Separate Shader Objects -- 3.Drawing with OpenGL -- OpenGL Graphics Primitives -- Points -- Lines, Strips, and Loops -- Triangles, Strips, and Fans -- Data in OpenGL Buffers -- Creating and Allocating Buffers -- Getting Data into and out of Buffers -- Accessing the Content of Buffers -- Discarding Buffer Data -- Vertex Specification -- VertexAttribPointer in Depth -- Static Vertex-Attribute Specification -- OpenGL Drawing Commands -- Restarting Primitives -- Instanced Rendering -- Instanced Vertex Attributes -- Using the Instance Counter in Shaders -- Instancing Redux -- 4.Color, Pixels, and Framebuffers -- Basic Color Theory -- Buffers and Their Uses -- Clearing Buffers -- Masking Buffers -- Color and OpenGL -- Color Representation and OpenGL -- Vertex Colors -- Rasterization -- Multisampling -- Sample Shading -- Testing and Operating on Fragments -- Scissor Test -- Multisample Fragment Operations -- Stencil Test -- Stencil Examples -- Depth Test -- Blending -- Blending Factors -- Controlling Blending Factors -- The Blending Equation -- Dithering -- Logical Operations -- Occlusion Query -- Conditional Rendering -- Per-Primitive Antialiasing -- Antialiasing Lines -- Antialiasing Polygons -- Framebuffer Objects -- Renderbuffers -- Creating Renderbuffer Storage -- Framebuffer Attachments -- Framebuffer Completeness -- Invalidating Framebuffers -- Writing to Multiple Renderbuffers Simultaneously -- Selecting Color Buffers for Writing and Reading -- Dual-Source Blending -- Reading and Copying Pixel Data -- Copying Pixel Rectangles -- 5.Viewing Transformations, Clipping, and Feedback -- Viewing -- Viewing Model -- Camera Model -- Orthographic Viewing Model -- User Transformations -- Matrix Multiply Refresher -- Homogeneous Coordinates -- Linear Transformations and Matrices -- Transforming Normals -- OpenGL Matrices -- OpenGL Transformations -- Advanced: User Clipping -- Transform Feedback -- Transform Feedback Objects -- Transform Feedback Buffers -- Configuring Transform Feedback Varyings -- Starting and Stopping Transform Feedback -- Transform Feedback Example-Particle System -- 6.Textures -- Texture Mapping -- Basic Texture Types -- Creating and Initializing Textures -- Texture Formats -- Proxy Textures -- Specifying Texture Data -- Explicitly Setting Texture Data -- Using Pixel Unpack Buffers -- Copying Data from the Framebuffer -- Loading Images from Files -- Retrieving Texture Data -- Texture Data Layout -- Sampler Objects -- Sampler Parameters -- Using Textures -- Texture Coordinates -- Arranging Texture Data -- Using Multiple Textures -- Complex Texture Types -- 3D Textures -- Array Textures -- Cube-Map Textures -- Shadow Samplers -- Depth-Stencil Textures -- Buffer Textures -- Texture Views -- Compressed Textures -- Filtering -- Linear Filtering -- Using and Generating Mipmaps -- Calculating the Mipmap Level -- Mipmap Level-of-Detail Control -- Advanced Texture Lookup Functions -- Explicit Level of Detail -- Explicit Gradient Specification -- Texture Fetch with Offsets -- Projective Texturing -- Texture Queries in Shaders -- Gathering Texels -- Combining Special Functions -- Point Sprites -- Textured Point Sprites -- Controlling the Appearance of Points -- Rendering to Texture Maps -- Discarding Rendered Data -- Chapter Summary -- Texture Redux -- Texture Best Practices -- 7.Light and Shadow -- Lighting Introduction -- Classic Lighting Model -- Fragment Shaders for Different Light Styles -- Moving Calculations to the Vertex Shader -- Multiple Lights and Materials -- Lighting Coordinate Systems -- Limitations of the Classic Lighting Model -- Advanced Lighting Models -- Hemisphere Lighting -- Image-Based Lighting -- Lighting with Spherical Harmonics -- Shadow Mapping -- Creating a Shadow Map -- 8.Procedural Texturing -- Procedural Texturing -- Regular Patterns -- Toy Ball -- Lattice -- Procedural Shading Summary -- Bump Mapping -- Application Setup -- Vertex Shader -- Fragment Shader -- Normal Maps -- Antialiasing Procedural Textures -- Sources of Aliasing -- Avoiding Aliasing -- Increasing Resolution -- Antialiasing High Frequencies -- Frequency Clamping -- Procedural Antialiasing Summary -- Noise -- Definition of Noise -- Noise Textures -- Trade-offs -- A Simple Noise Shader -- Turbulence -- Marble -- Granite -- Wood -- Noise Summary -- Further Information -- 9.Tessellation Shaders -- Tessellation Shaders -- Tessellation Patches -- Tessellation Control Shaders -- Generating Output-Patch Vertices -- Tessellation Control Shader Variables -- Controlling Tessellation -- Tessellation Evaluation Shaders -- Specifying the Primitive Generation Domain -- Specifying the Face Winding for Generated Primitives -- Specifying the Spacing of Tessellation Coordinates -- Additional Tessellation Evaluation Shader layout Options -- Specifying a Vertex's Position -- Tessellation Evaluation Shader Variables -- A Tessellation Example: The Teapot -- Processing Patch Input Vertices -- Evaluating Tessellation Coordinates for the Teapot -- Additional Tessellation Techniques -- View-Dependent Tessellation -- Shared Tessellated Edges and Cracking -- Displacement Mapping -- 10.Geometry Shaders -- Creating a Geometry Shader -- Geometry Shader Inputs and Outputs -- Geometry Shader Inputs -- Special Geometry Shader Primitives -- Geometry Shader Outputs -- Producing Primitives -- Culling Geometry -- Geometry Amplification -- Advanced Transform Feedback -- Multiple Output Streams -- Primitive Queries -- Using Transform Feedback Results -- Geometry Shader Instancing -- Multiple Viewports and Layered Rendering -- Viewport Index -- Layered Rendering -- Chapter Summary -- Geometry Shader Redux -- Geometry Shader Best Practices -- 11.Memory -- Using Textures for Generic Data Storage -- Binding Textures to Image Units -- Reading from and Writing to Images -- Shader Storage Buffer Objects -- Writing Structured Data -- Atomic Operations and Synchronization -- Atomic Operations on Images -- Atomic Operations on Buffers -- Sync Objects -- Image Qualifiers and Barriers -- High Performance Atomic Counters -- Example -- Order-Independent Transparency -- 12.Compute Shaders -- Overview -- Workgroups and Dispatch -- Knowing Where You Are -- Communication and Synchronization -- Communication -- Synchronization -- Examples -- Physical Simulation -- Image Processing -- Chapter Summary -- Compute Shader Redux -- Compute Shader Best Practices -- A.Basics of GLUT: The OpenGL Utility Toolkit -- Initializing and Creating a Window -- Accessing Functions -- Handling Window and Input Events -- Managing a Background Process -- Running the Program -- B.OpenGL ES and WebGL -- OpenGL ES -- WebGL -- Setting up WebGL within an HTML5 page -- Initializing Shaders in WebGL -- Initializing Vertex Data in WebGL -- Using Texture Maps in WebGL -- C.Built-in GLSL Variables and Functions -- Built-in Variables -- Built-in Variable Declarations -- Built-in Variable Descriptions -- Built-in Constants -- Built-in Functions -- Angle and Trigonometry Functions -- Exponential Functions -- Common Functions -- Floating-Point Pack and Unpack Functions -- Geometric Functions -- Matrix Functions -- Vector Relational Functions -- Integer Functions -- Texture Functions -- Atomic-Counter Functions -- Atomic Memory Functions -- Image Functions -- Fragment Processing Functions -- Noise Functions -- Geometry Shader Functions -- Shader Invocation Control Functions -- Shader Memory Control Functions -- D.State Variables -- The Query Commands -- OpenGL State Variables -- Current Values and Associated Data -- Vertex Array Object State -- Vertex Array Data -- Buffer Object State -- Transformation State -- Coloring State -- Rasterization State -- Multisampling -- Textures -- Textures -- Textures -- Textures -- Texture Environment -- Pixel Operations -- Framebuffer Controls -- Framebuffer State -- Framebuffer State -- Frambuffer State -- Renderbuffer State -- Renderbuffer State -- Pixel State -- Shader Object State -- Shader Program Pipeline Object State -- Shader Program Object State -- Program Interface State -- Program Object Resource State -- Vertex and Geometry Shader State -- Query Object State -- Image State -- Transform Feedback State -- Atomic Counter State -- Shader Storage Buffer State -- Sync Object State -- Hints -- Compute Dispatch State -- Implementation-Dependent Values -- Tessellation Shader Implementation-Dependent Limits -- Geometry Shader Implementation-Dependent Limits -- Fragment Shader Implementation-Dependent Limits -- Implementation-Dependent Compute Shader Limits -- Implementation-Dependent Shader Limits -- Implementation-Dependent Debug Output State -- Implementation-Dependent Values -- Internal Format-Dependent Values -- Implementation-Dependent Transform Feedback Limits -- Framebuffer-Dependent Values -- Miscellaneous -- E.Homogeneous Coordinates and Transformation Matrices --
Note continued: Homogeneous Coordinates -- Transforming Vertices -- Transforming Normals -- Transformation Matrices -- Translation -- Scaling -- Rotation -- Perspective Projection -- Orthographic Projection -- F.OpenGL and Window Systems -- Accessing New OpenGL Functions -- GLEW: The OpenGL Extension Wrangler -- GLX: OpenGL Extension for the X Window System -- Initialization -- Controlling Rendering -- GLX Prototypes -- WGL: OpenGL Extensions for Microsoft Windows -- Initialization -- Controlling Rendering -- WGL Prototypes -- OpenGL in Mac OSX: The Core OpenGL (CGL) API and the NSOpenGL Classes -- Mac OS X's Core OpenGL Library -- Initialization -- Controlling Rendering -- CGL Prototypes -- The NSOpenGL Classes -- Initialization -- G.Floating-Point Formates for Textures, Framebuffers, and Renderbuffers -- Reduced-Precision Floating-Point Values -- 16-bit Floating-Point Values -- 10- and 11-bit Unsigned Floating-Point Values -- H.Debugging and Profiling OpenGL -- Creating a Debug Context -- Debug Output -- Debug Messages -- Filtering Messages -- Application-Generated Messages -- Debug Groups -- Naming Objects -- Profiling -- Profiling Tools -- In-Application Profiling -- I.Buffer Object Layouts -- Using Standard Layout Qualifiers -- The std140 Layout Rules -- The std430 Layout Rules.
Holdings
Item type Current library Call number Copy number Status Date due Barcode Item holds
BOOK BOOK NCAR Library Foothills Lab T385 .O635 2013 1 Available 50583020005066
Total holds: 0

Includes index.

Includes bibliographical references and index.

Machine generated contents note: 1.Introduction to OpenGL -- What Is OpenGL? -- Your First Look at an OpenGL Program -- OpenGL Syntax -- OpenGL's Rendering Pipeline -- Preparing to Send Data to OpenGL -- Sending Data to OpenGL -- Vertex Shading -- Tessellation Shading -- Geometry Shading -- Primitive Assembly -- Clipping -- Rasterization -- Fragment Shading -- Per-Fragment Operations -- Our First Program: A Detailed Discussion -- Entering main() -- OpenGL Initialization -- Our First OpenGL Rendering -- 2.Shader Fundamentals -- Shaders and OpenGL -- OpenGL's Programmable Pipeline -- An Overview of the OpenGL Shading Language -- Creating Shaders with GLSL -- Storage Qualifiers -- Statements -- Computational Invariance -- Shader Preprocessor -- Compiler Control -- Global Shader-Compilation Option -- Interface Blocks -- Uniform Blocks -- Specifying Uniform Blocks in Shaders -- Accessing Uniform Blocks from Your Application -- Buffer Blocks -- In/Out Blocks -- Compiling Shaders -- Our LoadShaders() Function -- Shader Subroutines -- GLSL Subroutine Setup -- Selecting Shader Subroutines -- Separate Shader Objects -- 3.Drawing with OpenGL -- OpenGL Graphics Primitives -- Points -- Lines, Strips, and Loops -- Triangles, Strips, and Fans -- Data in OpenGL Buffers -- Creating and Allocating Buffers -- Getting Data into and out of Buffers -- Accessing the Content of Buffers -- Discarding Buffer Data -- Vertex Specification -- VertexAttribPointer in Depth -- Static Vertex-Attribute Specification -- OpenGL Drawing Commands -- Restarting Primitives -- Instanced Rendering -- Instanced Vertex Attributes -- Using the Instance Counter in Shaders -- Instancing Redux -- 4.Color, Pixels, and Framebuffers -- Basic Color Theory -- Buffers and Their Uses -- Clearing Buffers -- Masking Buffers -- Color and OpenGL -- Color Representation and OpenGL -- Vertex Colors -- Rasterization -- Multisampling -- Sample Shading -- Testing and Operating on Fragments -- Scissor Test -- Multisample Fragment Operations -- Stencil Test -- Stencil Examples -- Depth Test -- Blending -- Blending Factors -- Controlling Blending Factors -- The Blending Equation -- Dithering -- Logical Operations -- Occlusion Query -- Conditional Rendering -- Per-Primitive Antialiasing -- Antialiasing Lines -- Antialiasing Polygons -- Framebuffer Objects -- Renderbuffers -- Creating Renderbuffer Storage -- Framebuffer Attachments -- Framebuffer Completeness -- Invalidating Framebuffers -- Writing to Multiple Renderbuffers Simultaneously -- Selecting Color Buffers for Writing and Reading -- Dual-Source Blending -- Reading and Copying Pixel Data -- Copying Pixel Rectangles -- 5.Viewing Transformations, Clipping, and Feedback -- Viewing -- Viewing Model -- Camera Model -- Orthographic Viewing Model -- User Transformations -- Matrix Multiply Refresher -- Homogeneous Coordinates -- Linear Transformations and Matrices -- Transforming Normals -- OpenGL Matrices -- OpenGL Transformations -- Advanced: User Clipping -- Transform Feedback -- Transform Feedback Objects -- Transform Feedback Buffers -- Configuring Transform Feedback Varyings -- Starting and Stopping Transform Feedback -- Transform Feedback Example-Particle System -- 6.Textures -- Texture Mapping -- Basic Texture Types -- Creating and Initializing Textures -- Texture Formats -- Proxy Textures -- Specifying Texture Data -- Explicitly Setting Texture Data -- Using Pixel Unpack Buffers -- Copying Data from the Framebuffer -- Loading Images from Files -- Retrieving Texture Data -- Texture Data Layout -- Sampler Objects -- Sampler Parameters -- Using Textures -- Texture Coordinates -- Arranging Texture Data -- Using Multiple Textures -- Complex Texture Types -- 3D Textures -- Array Textures -- Cube-Map Textures -- Shadow Samplers -- Depth-Stencil Textures -- Buffer Textures -- Texture Views -- Compressed Textures -- Filtering -- Linear Filtering -- Using and Generating Mipmaps -- Calculating the Mipmap Level -- Mipmap Level-of-Detail Control -- Advanced Texture Lookup Functions -- Explicit Level of Detail -- Explicit Gradient Specification -- Texture Fetch with Offsets -- Projective Texturing -- Texture Queries in Shaders -- Gathering Texels -- Combining Special Functions -- Point Sprites -- Textured Point Sprites -- Controlling the Appearance of Points -- Rendering to Texture Maps -- Discarding Rendered Data -- Chapter Summary -- Texture Redux -- Texture Best Practices -- 7.Light and Shadow -- Lighting Introduction -- Classic Lighting Model -- Fragment Shaders for Different Light Styles -- Moving Calculations to the Vertex Shader -- Multiple Lights and Materials -- Lighting Coordinate Systems -- Limitations of the Classic Lighting Model -- Advanced Lighting Models -- Hemisphere Lighting -- Image-Based Lighting -- Lighting with Spherical Harmonics -- Shadow Mapping -- Creating a Shadow Map -- 8.Procedural Texturing -- Procedural Texturing -- Regular Patterns -- Toy Ball -- Lattice -- Procedural Shading Summary -- Bump Mapping -- Application Setup -- Vertex Shader -- Fragment Shader -- Normal Maps -- Antialiasing Procedural Textures -- Sources of Aliasing -- Avoiding Aliasing -- Increasing Resolution -- Antialiasing High Frequencies -- Frequency Clamping -- Procedural Antialiasing Summary -- Noise -- Definition of Noise -- Noise Textures -- Trade-offs -- A Simple Noise Shader -- Turbulence -- Marble -- Granite -- Wood -- Noise Summary -- Further Information -- 9.Tessellation Shaders -- Tessellation Shaders -- Tessellation Patches -- Tessellation Control Shaders -- Generating Output-Patch Vertices -- Tessellation Control Shader Variables -- Controlling Tessellation -- Tessellation Evaluation Shaders -- Specifying the Primitive Generation Domain -- Specifying the Face Winding for Generated Primitives -- Specifying the Spacing of Tessellation Coordinates -- Additional Tessellation Evaluation Shader layout Options -- Specifying a Vertex's Position -- Tessellation Evaluation Shader Variables -- A Tessellation Example: The Teapot -- Processing Patch Input Vertices -- Evaluating Tessellation Coordinates for the Teapot -- Additional Tessellation Techniques -- View-Dependent Tessellation -- Shared Tessellated Edges and Cracking -- Displacement Mapping -- 10.Geometry Shaders -- Creating a Geometry Shader -- Geometry Shader Inputs and Outputs -- Geometry Shader Inputs -- Special Geometry Shader Primitives -- Geometry Shader Outputs -- Producing Primitives -- Culling Geometry -- Geometry Amplification -- Advanced Transform Feedback -- Multiple Output Streams -- Primitive Queries -- Using Transform Feedback Results -- Geometry Shader Instancing -- Multiple Viewports and Layered Rendering -- Viewport Index -- Layered Rendering -- Chapter Summary -- Geometry Shader Redux -- Geometry Shader Best Practices -- 11.Memory -- Using Textures for Generic Data Storage -- Binding Textures to Image Units -- Reading from and Writing to Images -- Shader Storage Buffer Objects -- Writing Structured Data -- Atomic Operations and Synchronization -- Atomic Operations on Images -- Atomic Operations on Buffers -- Sync Objects -- Image Qualifiers and Barriers -- High Performance Atomic Counters -- Example -- Order-Independent Transparency -- 12.Compute Shaders -- Overview -- Workgroups and Dispatch -- Knowing Where You Are -- Communication and Synchronization -- Communication -- Synchronization -- Examples -- Physical Simulation -- Image Processing -- Chapter Summary -- Compute Shader Redux -- Compute Shader Best Practices -- A.Basics of GLUT: The OpenGL Utility Toolkit -- Initializing and Creating a Window -- Accessing Functions -- Handling Window and Input Events -- Managing a Background Process -- Running the Program -- B.OpenGL ES and WebGL -- OpenGL ES -- WebGL -- Setting up WebGL within an HTML5 page -- Initializing Shaders in WebGL -- Initializing Vertex Data in WebGL -- Using Texture Maps in WebGL -- C.Built-in GLSL Variables and Functions -- Built-in Variables -- Built-in Variable Declarations -- Built-in Variable Descriptions -- Built-in Constants -- Built-in Functions -- Angle and Trigonometry Functions -- Exponential Functions -- Common Functions -- Floating-Point Pack and Unpack Functions -- Geometric Functions -- Matrix Functions -- Vector Relational Functions -- Integer Functions -- Texture Functions -- Atomic-Counter Functions -- Atomic Memory Functions -- Image Functions -- Fragment Processing Functions -- Noise Functions -- Geometry Shader Functions -- Shader Invocation Control Functions -- Shader Memory Control Functions -- D.State Variables -- The Query Commands -- OpenGL State Variables -- Current Values and Associated Data -- Vertex Array Object State -- Vertex Array Data -- Buffer Object State -- Transformation State -- Coloring State -- Rasterization State -- Multisampling -- Textures -- Textures -- Textures -- Textures -- Texture Environment -- Pixel Operations -- Framebuffer Controls -- Framebuffer State -- Framebuffer State -- Frambuffer State -- Renderbuffer State -- Renderbuffer State -- Pixel State -- Shader Object State -- Shader Program Pipeline Object State -- Shader Program Object State -- Program Interface State -- Program Object Resource State -- Vertex and Geometry Shader State -- Query Object State -- Image State -- Transform Feedback State -- Atomic Counter State -- Shader Storage Buffer State -- Sync Object State -- Hints -- Compute Dispatch State -- Implementation-Dependent Values -- Tessellation Shader Implementation-Dependent Limits -- Geometry Shader Implementation-Dependent Limits -- Fragment Shader Implementation-Dependent Limits -- Implementation-Dependent Compute Shader Limits -- Implementation-Dependent Shader Limits -- Implementation-Dependent Debug Output State -- Implementation-Dependent Values -- Internal Format-Dependent Values -- Implementation-Dependent Transform Feedback Limits -- Framebuffer-Dependent Values -- Miscellaneous -- E.Homogeneous Coordinates and Transformation Matrices --

Note continued: Homogeneous Coordinates -- Transforming Vertices -- Transforming Normals -- Transformation Matrices -- Translation -- Scaling -- Rotation -- Perspective Projection -- Orthographic Projection -- F.OpenGL and Window Systems -- Accessing New OpenGL Functions -- GLEW: The OpenGL Extension Wrangler -- GLX: OpenGL Extension for the X Window System -- Initialization -- Controlling Rendering -- GLX Prototypes -- WGL: OpenGL Extensions for Microsoft Windows -- Initialization -- Controlling Rendering -- WGL Prototypes -- OpenGL in Mac OSX: The Core OpenGL (CGL) API and the NSOpenGL Classes -- Mac OS X's Core OpenGL Library -- Initialization -- Controlling Rendering -- CGL Prototypes -- The NSOpenGL Classes -- Initialization -- G.Floating-Point Formates for Textures, Framebuffers, and Renderbuffers -- Reduced-Precision Floating-Point Values -- 16-bit Floating-Point Values -- 10- and 11-bit Unsigned Floating-Point Values -- H.Debugging and Profiling OpenGL -- Creating a Debug Context -- Debug Output -- Debug Messages -- Filtering Messages -- Application-Generated Messages -- Debug Groups -- Naming Objects -- Profiling -- Profiling Tools -- In-Application Profiling -- I.Buffer Object Layouts -- Using Standard Layout Qualifiers -- The std140 Layout Rules -- The std430 Layout Rules.

Questions? Email library@ucar.edu.

Not finding what you are looking for? InterLibrary Loan.