throbber
The OpenGL R(cid:13)
`Graphics System:
`A Specification
`(Version 1.4)
`
`Mark Segal
`Kurt Akeley
`
`Editor (version 1.1): Chris Frazier
`Editor (versions 1.2, 1.2.1, 1.3, 1.4): Jon Leech
`
`LG Ex. 1009, pg 1
`
`LG Ex. 1009
`LG v. ATI
`IPR2017-01225
`
`

`

`Copyright c(cid:13) 1992-2002 Silicon Graphics, Inc.
`
`This document contains unpublished information of
`Silicon Graphics, Inc.
`
`This document is protected by copyright, and contains information proprietary to
`Silicon Graphics, Inc. Any copying, adaptation, distribution, public performance,
`or public display of this document without the express written consent of Silicon
`Graphics, Inc.
`is strictly prohibited. The receipt or possession of this document
`does not convey any rights to reproduce, disclose, or distribute its contents, or to
`manufacture, use, or sell anything that it may describe, in whole or in part.
`
`U.S. Government Restricted Rights Legend
`
`Use, duplication, or disclosure by the Government is subject to restrictions set forth
`in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights in Technical Data
`and Computer Software clause at DFARS 252.227-7013 and/or in similar or succes-
`sor clauses in the FAR or the DOD or NASA FAR Supplement. Unpublished rights
`reserved under the copyright laws of the United States. Contractor/manufacturer is
`Silicon Graphics, Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043.
`
`OpenGL is a registered trademark of Silicon Graphics, Inc.
`Unix is a registered trademark of The Open Group.
`The ”X” device and X Windows System are trademarks of
`The Open Group.
`
`LG Ex. 1009, pg 2
`
`

`

`Contents
`
`1 Introduction
`. . . . . . . . . . . . . . . . . .
`1.1 Formatting of Optional Features
`1.2 What is the OpenGL Graphics System?
`. . . . . . . . . . . . . .
`1.3 Programmer’s View of OpenGL . . . . . . . . . . . . . . . . . .
`1.4
`Implementor’s View of OpenGL . . . . . . . . . . . . . . . . . .
`1.5 Our View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`2 OpenGL Operation
`2.1 OpenGL Fundamentals . . . . . . . . . . . . . . . . . . . . . . .
`2.1.1
`Floating-Point Computation . . . . . . . . . . . . . . . .
`2.2 GL State .
`. .
`. .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . .
`2.3 GL Command Syntax . . . . . . . . . . . . . . . . . . . . . . . .
`2.4 Basic GL Operation . .
`. . . . . . . . . . . . . . . . . . . . . . .
`2.5 GL Errors . .
`. .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . .
`2.6 Begin/End Paradigm . . . . . . . . . . . . . . . . . . . . . . . .
`2.6.1 Begin and End Objects . . . . . . . . . . . . . . . . . . .
`2.6.2
`Polygon Edges . . . . . . . . . . . . . . . . . . . . . . .
`2.6.3 GL Commands within Begin/End .
`. . . . . . . . . . . .
`2.7 Vertex Specification .
`. . . . . . . . . . . . . . . . . . . . . . . .
`2.8 Vertex Arrays .
`. .
`. .
`. . . . . . . . . . . . . . . . . . . . . . .
`2.9 Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`2.10 Coordinate Transformations
`. . . . . . . . . . . . . . . . . . . .
`2.10.1 Controlling the Viewport . . . . . . . . . . . . . . . . . .
`2.10.2 Matrices .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . .
`2.10.3 Normal Transformation . . . . . . . . . . . . . . . . . . .
`2.10.4 Generating Texture Coordinates . . . . . . . . . . . . . .
`2.11 Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`2.12 Current Raster Position . . . . . . . . . . . . . . . . . . . . . . .
`2.13 Colors and Coloring . .
`. . . . . . . . . . . . . . . . . . . . . . .
`
`1
`1
`1
`2
`2
`3
`
`4
`4
`6
`6
`7
`10
`11
`12
`13
`18
`19
`19
`23
`30
`31
`32
`33
`38
`40
`42
`44
`47
`
`i
`
`LG Ex. 1009, pg 3
`
`

`

`ii
`
`CONTENTS
`
`2.13.1 Lighting . . . . . . . . . . . . . . . . . . . . . . . . . . .
`2.13.2 Lighting Parameter Specification . . . . . . . . . . . . . .
`2.13.3 ColorMaterial
`.
`. . . . . . . . . . . . . . . . . . . . . .
`2.13.4 Lighting State . . . . . . . . . . . . . . . . . . . . . . . .
`2.13.5 Color Index Lighting . . . . . . . . . . . . . . . . . . . .
`2.13.6 Clamping or Masking . . . . . . . . . . . . . . . . . . .
`2.13.7 Flatshading . . . . . . . . . . . . . . . . . . . . . . . . .
`2.13.8 Color and Texture Coordinate Clipping . . . . . . . . . .
`2.13.9 Final Color Processing . . . . . . . . . . . . . . . . . . .
`
`48
`53
`54
`57
`57
`58
`58
`59
`60
`
`61
`3 Rasterization
`63
`3.1
`Invariance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`63
`3.2 Antialiasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`64
`3.2.1 Multisampling . . . . . . . . . . . . . . . . . . . . . . .
`66
`3.3 Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`67
`3.3.1 Basic Point Rasterization . . . . . . . . . . . . . . . . . .
`70
`3.3.2
`Point Rasterization State . . . . . . . . . . . . . . . . . .
`70
`3.3.3
`Point Multisample Rasterization . . . . . . . . . . . . . .
`70
`3.4 Line Segments
`. . . . . . . . . . . . . . . . . . . . . . . . . . .
`71
`3.4.1 Basic Line Segment Rasterization . . . . . . . . . . . . .
`73
`3.4.2 Other Line Segment Features . . . . . . . . . . . . . . . .
`76
`3.4.3 Line Rasterization State
`. . . . . . . . . . . . . . . . . .
`76
`3.4.4 Line Multisample Rasterization . . . . . . . . . . . . . .
`77
`3.5 Polygons
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`77
`3.5.1 Basic Polygon Rasterization . . . . . . . . . . . . . . . .
`79
`3.5.2
`Stippling . . . . . . . . . . . . . . . . . . . . . . . . . .
`80
`3.5.3 Antialiasing . . . . . . . . . . . . . . . . . . . . . . . . .
`80
`3.5.4 Options Controlling Polygon Rasterization . . . . . . . .
`81
`3.5.5 Depth Offset
`. . . . . . . . . . . . . . . . . . . . . . . .
`82
`3.5.6
`Polygon Multisample Rasterization . . . . . . . . . . . .
`83
`3.5.7
`Polygon Rasterization State
`. . . . . . . . . . . . . . . .
`83
`3.6 Pixel Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . .
`83
`3.6.1
`Pixel Storage Modes . . . . . . . . . . . . . . . . . . . .
`84
`3.6.2 The Imaging Subset
`. . . . . . . . . . . . . . . . . . . .
`85
`3.6.3
`Pixel Transfer Modes . . . . . . . . . . . . . . . . . . . .
`95
`3.6.4 Rasterization of Pixel Rectangles
`. . . . . . . . . . . . .
`3.6.5
`Pixel Transfer Operations
`. . . . . . . . . . . . . . . . . 106
`3.6.6
`Pixel Rectangle Multisample Rasterization . . . . . . . . 116
`3.7 Bitmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
`3.8 Texturing .
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 4
`
`

`

`CONTENTS
`
`iii
`
`3.8.1 Texture Image Specification . . . . . . . . . . . . . . . . 119
`3.8.2 Alternate Texture Image Specification Commands
`. . . . 128
`3.8.3 Compressed Texture Images . . . . . . . . . . . . . . . . 132
`3.8.4 Texture Parameters . . . . . . . . . . . . . . . . . . . . . 135
`3.8.5 Depth Component Textures
`. . . . . . . . . . . . . . . . 136
`3.8.6 Cube Map Texture Selection . . . . . . . . . . . . . . . . 136
`3.8.7 Texture Wrap Modes . . . . . . . . . . . . . . . . . . . . 138
`3.8.8 Texture Minification . . . . . . . . . . . . . . . . . . . . 140
`3.8.9 Texture Magnification . . . . . . . . . . . . . . . . . . . 146
`3.8.10 Texture Completeness
`. . . . . . . . . . . . . . . . . . . 146
`3.8.11 Texture State and Proxy State
`. . . . . . . . . . . . . . . 148
`3.8.12 Texture Objects . . . . . . . . . . . . . . . . . . . . . . . 149
`3.8.13 Texture Environments and Texture Functions . . . . . . . 152
`3.8.14 Texture Comparison Modes
`. . . . . . . . . . . . . . . . 157
`3.8.15 Texture Application . . . . . . . . . . . . . . . . . . . . . 158
`3.9 Color Sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
`3.10 Fog .
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
`3.11 Antialiasing Application . . . . . . . . . . . . . . . . . . . . . . 162
`3.12 Multisample Point Fade . . . . . . . . . . . . . . . . . . . . . . . 162
`
`163
`4 Per-Fragment Operations and the Framebuffer
`4.1 Per-Fragment Operations . . . . . . . . . . . . . . . . . . . . . . 164
`4.1.1
`Pixel Ownership Test . . . . . . . . . . . . . . . . . . . . 164
`4.1.2
`Scissor Test . . . . . . . . . . . . . . . . . . . . . . . . . 165
`4.1.3 Multisample Fragment Operations . . . . . . . . . . . . . 165
`4.1.4 Alpha Test
`. . . . . . . . . . . . . . . . . . . . . . . . . 166
`4.1.5
`Stencil Test
`.
`. . . . . . . . . . . . . . . . . . . . . . . . 167
`4.1.6 Depth Buffer Test . . . . . . . . . . . . . . . . . . . . . . 168
`4.1.7 Blending . . . . . . . . . . . . . . . . . . . . . . . . . . 169
`4.1.8 Dithering . .
`. . . . . . . . . . . . . . . . . . . . . . . . 172
`4.1.9 Logical Operation . . . . . . . . . . . . . . . . . . . . . 172
`4.1.10 Additional Multisample Fragment Operations . . . . . . . 174
`4.2 Whole Framebuffer Operations . . . . . . . . . . . . . . . . . . . 174
`4.2.1
`Selecting a Buffer for Writing . . . . . . . . . . . . . . . 175
`4.2.2
`Fine Control of Buffer Updates
`. . . . . . . . . . . . . . 176
`4.2.3 Clearing the Buffers
`. . . . . . . . . . . . . . . . . . . . 177
`4.2.4 The Accumulation Buffer
`. . . . . . . . . . . . . . . . . 179
`4.3 Drawing, Reading, and Copying Pixels . . . . . . . . . . . . . . . 180
`4.3.1 Writing to the Stencil Buffer . . . . . . . . . . . . . . . . 180
`4.3.2 Reading Pixels . . . . . . . . . . . . . . . . . . . . . . . 180
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 5
`
`

`

`iv
`
`CONTENTS
`
`4.3.3 Copying Pixels . . . . . . . . . . . . . . . . . . . . . . . 184
`4.3.4
`Pixel Draw/Read State . . . . . . . . . . . . . . . . . . . 187
`
`188
`5 Special Functions
`5.1 Evaluators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
`5.2 Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
`5.3 Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
`5.4 Display Lists
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`5.5 Flush and Finish . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
`5.6 Hints .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
`
`204
`6 State and State Requests
`6.1 Querying GL State . . . . . . . . . . . . . . . . . . . . . . . . . 204
`6.1.1
`Simple Queries . . . . . . . . . . . . . . . . . . . . . . . 204
`6.1.2 Data Conversions . . . . . . . . . . . . . . . . . . . . . . 205
`6.1.3 Enumerated Queries
`. . . . . . . . . . . . . . . . . . . . 206
`6.1.4 Texture Queries . . . . . . . . . . . . . . . . . . . . . . . 208
`6.1.5
`Stipple Query . . . . . . . . . . . . . . . . . . . . . . . . 209
`6.1.6 Color Matrix Query . . . . . . . . . . . . . . . . . . . . . 210
`6.1.7 Color Table Query . . . . . . . . . . . . . . . . . . . . . 210
`6.1.8 Convolution Query . . . . . . . . . . . . . . . . . . . . . 211
`6.1.9 Histogram Query . . . . . . . . . . . . . . . . . . . . . . 211
`6.1.10 Minmax Query . . . . . . . . . . . . . . . . . . . . . . . 212
`6.1.11 Pointer and String Queries . . . . . . . . . . . . . . . . . 213
`6.1.12 Saving and Restoring State . . . . . . . . . . . . . . . . . 214
`6.2 State Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
`
`247
`A Invariance
`A.1 Repeatability . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
`A.2 Multi-pass Algorithms
`. . . . . . . . . . . . . . . . . . . . . . . 248
`A.3 Invariance Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
`A.4 What All This Means . . . . . . . . . . . . . . . . . . . . . . . . 250
`
`B Corollaries
`
`251
`
`254
`C Version 1.1
`C.1 Vertex Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
`C.2 Polygon Offset
`. . . . . . . . . . . . . . . . . . . . . . . . . . . 255
`C.3 Logical Operation . . . . . . . . . . . . . . . . . . . . . . . . . . 255
`C.4 Texture Image Formats . . . . . . . . . . . . . . . . . . . . . . . 255
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 6
`
`

`

`CONTENTS
`
`v
`
`C.5 Texture Replace Environment . . . . . . . . . . . . . . . . . . . . 255
`C.6 Texture Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
`C.7 Copy Texture and Subtexture . . . . . . . . . . . . . . . . . . . . 256
`C.8 Texture Objects .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . . 256
`C.9 Other Changes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . 256
`C.10 Acknowledgements .
`. . . . . . . . . . . . . . . . . . . . . . . . 257
`
`259
`D Version 1.2
`D.1 Three-Dimensional Texturing . . . . . . . . . . . . . . . . . . . . 259
`D.2 BGRA Pixel Formats . . . . . . . . . . . . . . . . . . . . . . . . 259
`D.3 Packed Pixel Formats . . . . . . . . . . . . . . . . . . . . . . . . 260
`D.4 Normal Rescaling . .
`. . . . . . . . . . . . . . . . . . . . . . . . 260
`D.5 Separate Specular Color
`. . . . . . . . . . . . . . . . . . . . . . 260
`D.6 Texture Coordinate Edge Clamping . . . . . . . . . . . . . . . . 260
`D.7 Texture Level of Detail Control . . . . . . . . . . . . . . . . . . . 261
`D.8 Vertex Array Draw Element Range . . . . . . . . . . . . . . . . . 261
`D.9 Imaging Subset
`. . . . . . . . . . . . . . . . . . . . . . . . . . . 261
`D.9.1 Color Tables
`.
`. . . . . . . . . . . . . . . . . . . . . . . 261
`D.9.2 Convolution . . . . . . . . . . . . . . . . . . . . . . . . . 262
`D.9.3 Color Matrix . . . . . . . . . . . . . . . . . . . . . . . . 262
`D.9.4 Pixel Pipeline Statistics . . . . . . . . . . . . . . . . . . . 263
`D.9.5 Constant Blend Color . . . . . . . . . . . . . . . . . . . . 263
`D.9.6 New Blending Equations . . . . . . . . . . . . . . . . . . 263
`D.10 Acknowledgements .
`. . . . . . . . . . . . . . . . . . . . . . . . 263
`
`E Version 1.2.1
`
`267
`
`268
`F Version 1.3
`F.1 Compressed Textures . . . . . . . . . . . . . . . . . . . . . . . . 268
`F.2 Cube Map Textures . .
`. . . . . . . . . . . . . . . . . . . . . . . 268
`F.3 Multisample . .
`. .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . 269
`F.4 Multitexture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
`F.5 Texture Add Environment Mode . . . . . . . . . . . . . . . . . . 270
`F.6 Texture Combine Environment Mode
`. . . . . . . . . . . . . . . 270
`F.7 Texture Dot3 Environment Mode . . . . . . . . . . . . . . . . . . 270
`F.8 Texture Border Clamp . . . . . . . . . . . . . . . . . . . . . . . 270
`F.9 Transpose Matrix . .
`. . . . . . . . . . . . . . . . . . . . . . . . 271
`F.10 Acknowledgements .
`. . . . . . . . . . . . . . . . . . . . . . . . 271
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 7
`
`

`

`vi
`
`CONTENTS
`
`276
`G Version 1.4
`G.1 Automatic Mipmap Generation . . . . . . . . . . . . . . . . . . . 276
`G.2 Blend Squaring . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
`G.3 Changes to the Imaging Subset . . . . . . . . . . . . . . . . . . . 277
`G.4 Depth Textures and Shadows . . . . . . . . . . . . . . . . . . . . 277
`G.5 Fog Coordinate . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
`G.6 Multiple Draw Arrays . . . . . . . . . . . . . . . . . . . . . . . . 277
`G.7 Point Parameters
`. . . . . . . . . . . . . . . . . . . . . . . . . . 278
`G.8 Secondary Color
`. . . . . . . . . . . . . . . . . . . . . . . . . . 278
`G.9 Separate Blend Functions . . . . . . . . . . . . . . . . . . . . . . 278
`G.10 Stencil Wrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
`G.11 Texture Crossbar Environment Mode . . . . . . . . . . . . . . . . 278
`G.12 Texture LOD Bias . . . . . . . . . . . . . . . . . . . . . . . . . . 279
`G.13 Texture Mirrored Repeat
`. . . . . . . . . . . . . . . . . . . . . . 279
`G.14 Window Raster Position . . . . . . . . . . . . . . . . . . . . . . 279
`G.15 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . 279
`
`282
`H ARB Extensions
`H.1 Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . 282
`H.2 Promoting Extensions to Core Features
`. . . . . . . . . . . . . . 283
`H.3 Multitexture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
`H.4 Transpose Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . 283
`H.5 Multisample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
`H.6 Texture Add Environment Mode . . . . . . . . . . . . . . . . . . 283
`H.7 Cube Map Textures . . . . . . . . . . . . . . . . . . . . . . . . . 284
`H.8 Compressed Textures . . . . . . . . . . . . . . . . . . . . . . . . 284
`H.9 Texture Border Clamp . . . . . . . . . . . . . . . . . . . . . . . 284
`H.10 Point Parameters
`. . . . . . . . . . . . . . . . . . . . . . . . . . 284
`H.11 Vertex Blend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
`H.12 Matrix Palette . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
`H.13 Texture Combine Environment Mode
`. . . . . . . . . . . . . . . 285
`H.14 Texture Crossbar Environment Mode . . . . . . . . . . . . . . . . 285
`H.15 Texture Dot3 Environment Mode . . . . . . . . . . . . . . . . . . 285
`H.16 Texture Mirrored Repeat
`. . . . . . . . . . . . . . . . . . . . . . 285
`H.17 Depth Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
`H.18 Shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
`H.19 Shadow Ambient
`. . . . . . . . . . . . . . . . . . . . . . . . . . 285
`H.20 Window Raster Position . . . . . . . . . . . . . . . . . . . . . . 286
`H.21 Vertex Programming . . . . . . . . . . . . . . . . . . . . . . . . 286
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 8
`
`

`

`CONTENTS
`
`Index of OpenGL Commands
`
`vii
`
`287
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 9
`
`

`

`List of Figures
`
`2.1 Block diagram of the GL. . . . . . . . . . . . . . . . . . . . . . .
`2.2 Creation of a processed vertex from a transformed vertex and cur-
`rent values.
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`2.3 Primitive assembly and processing. . . . . . . . . . . . . . . . . .
`2.4 Triangle strips, fans, and independent triangles.
`. . . . . . . . . .
`2.5 Quadrilateral strips and independent quadrilaterals.
`. . . . . . . .
`2.6 Vertex transformation sequence.
`. . . . . . . . . . . . . . . . . .
`2.7 Current raster position.
`. . . . . . . . . . . . . . . . . . . . . . .
`2.8 Processing of RGBA colors.
`. . . . . . . . . . . . . . . . . . . .
`2.9 Processing of color indices. . . . . . . . . . . . . . . . . . . . . .
`2.10 ColorMaterial operation.
`. . . . . . . . . . . . . . . . . . . . . .
`
`10
`
`13
`13
`16
`17
`31
`45
`47
`47
`54
`
`61
`. . . . . . . . . . . . . . . . . . . . . . . . . . . .
`3.1 Rasterization.
`67
`3.2 Rasterization of non-antialiased wide points. . . . . . . . . . . . .
`68
`3.3 Rasterization of antialiased wide points.
`. . . . . . . . . . . . . .
`71
`3.4 Visualization of Bresenham’s algorithm.
`. . . . . . . . . . . . . .
`74
`3.5 Rasterization of non-antialiased wide lines.
`. . . . . . . . . . . .
`75
`3.6 The region used in rasterizing an antialiased line segment.
`. . . .
`3.7 Operation of DrawPixels.
`95
`. . . . . . . . . . . . . . . . . . . . .
`99
`3.8 Selecting a subimage from an image . . . . . . . . . . . . . . . .
`3.9 A bitmap and its associated parameters.
`. . . . . . . . . . . . . . 117
`3.10 A texture image and the coordinates used to access it.
`. . . . . . . 128
`3.11 Multitexture pipeline. . . . . . . . . . . . . . . . . . . . . . . . . 159
`
`. . . . . . . . . . . . . . . . . . . . . . 164
`4.1 Per-fragment operations.
`4.2 Operation of ReadPixels. . . . . . . . . . . . . . . . . . . . . . . 180
`4.3 Operation of CopyPixels. . . . . . . . . . . . . . . . . . . . . . . 184
`
`5.1 Map Evaluation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
`5.2 Feedback syntax.
`. . . . . . . . . . . . . . . . . . . . . . . . . . 199
`
`viii
`
`LG Ex. 1009, pg 10
`
`

`

`List of Tables
`
`. . . . . . . . . . . . . . . . . . . . . . .
`2.1 GL command suffixes .
`. . . . . . . . . . . . . . . . . . . . . . .
`2.2 GL data types .
`. .
`. .
`. . . . . . . . . . . . . . . . . . . . . . .
`2.3 Summary of GL errors
`2.4 Vertex array sizes (values per vertex) and data types . . . . . . . .
`2.5 Variables that direct the execution of InterleavedArrays. . . . . .
`2.6 Component conversions . . . . . . . . . . . . . . . . . . . . . . .
`2.7 Summary of lighting parameters. . . . . . . . . . . . . . . . . . .
`2.8 Correspondence of lighting parameter symbols to names.
`. . . . .
`2.9 Polygon flatshading color selection.
`. . . . . . . . . . . . . . . .
`
`8
`9
`12
`24
`29
`49
`50
`55
`59
`
`3.1 PixelStore parameters.
`84
`. . . . . . . . . . . . . . . . . . . . . . .
`3.2 PixelTransfer parameters.
`86
`. . . . . . . . . . . . . . . . . . . . .
`3.3 PixelMap parameters.
`87
`. . . . . . . . . . . . . . . . . . . . . . .
`88
`3.4 Color table names.
`. . . . . . . . . . . . . . . . . . . . . . . . .
`3.5 DrawPixels and ReadPixels types. . . . . . . . . . . . . . . . . .
`97
`3.6 DrawPixels and ReadPixels formats.
`98
`. . . . . . . . . . . . . . .
`99
`3.7 Swap Bytes bit ordering.
`. . . . . . . . . . . . . . . . . . . . . .
`3.8 Packed pixel formats.
`. . . . . . . . . . . . . . . . . . . . . . . . 101
`3.9 UNSIGNED BYTE formats. Bit numbers are indicated for each com-
`ponent.
`. . . .
`. .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . 101
`3.10 UNSIGNED SHORT formats . . . . . . . . . . . . . . . . . . . . . 102
`3.11 UNSIGNED INT formats . . . . . . . . . . . . . . . . . . . . . . . 103
`3.12 Packed pixel field assignments. . . . . . . . . . . . . . . . . . . . 104
`3.13 Color table lookup.
`. .
`. . . . . . . . . . . . . . . . . . . . . . . 109
`3.14 Computation of filtered color components. . . . . . . . . . . . . . 110
`3.15 Conversion from RGBA and depth pixel components to internal
`texture, table, or filter components. . . . . . . . . . . . . . . . . . 121
`3.16 Correspondence of sized internal formats to base internal formats.
`122
`3.17 Specific compressed internal formats.
`. . . . . . . . . . . . . . . 123
`
`ix
`
`LG Ex. 1009, pg 11
`
`

`

`x
`
`LIST OF TABLES
`
`. . . . . . . . . . . . . . . 123
`3.18 Generic compressed internal formats.
`. . . . . . . . . . . . . . . . 137
`3.19 Texture parameters and their values.
`3.20 Selection of cube map images.
`. . . . . . . . . . . . . . . . . . . 138
`3.21 Correspondence of filtered texture components.
`. . . . . . . . . . 153
`3.22 Texture functions REPLACE, MODULATE, and DECAL . . . . . . . . 154
`3.23 Texture functions BLEND and ADD.
`. . . . . . . . . . . . . . . . . 154
`3.24 COMBINE texture functions. . . . . . . . . . . . . . . . . . . . . . 155
`3.25 Arguments for COMBINE RGB functions.
`. . . . . . . . . . . . . . 156
`3.26 Arguments for COMBINE ALPHA functions.
`. . . . . . . . . . . . 156
`
`. . . . . . . . . . . . . . . . . . . . . . . . . 171
`4.1 Blending functions.
`4.2 Arguments to LogicOp and their corresponding operations. . . . . 173
`4.3 Arguments to DrawBuffer and the buffers that they indicate.
`. . . 175
`4.4 PixelStore parameters.
`. . . . . . . . . . . . . . . . . . . . . . . 182
`4.5 ReadPixels index masks.
`. . . . . . . . . . . . . . . . . . . . . . 184
`4.6 ReadPixels GL data types and reversed component conversion for-
`mulas.
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
`
`5.1 Values specified by the target to Map1.
`. . . . . . . . . . . . . . 189
`5.2 Correspondence of feedback type to number of values per vertex. . 198
`
`. . . . . . . . . . . . . . . 209
`6.1 Texture, table, and filter return values.
`6.2 Attribute groups . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
`6.3 State variable types . . . . . . . . . . . . . . . . . . . . . . . . . 217
`6.4 GL Internal begin-end state variables (inaccessible) . . . . . . . . 219
`6.5 Current Values and Associated Data . . . . . . . . . . . . . . . . 220
`6.6 Vertex Array Data . . . . . . . . . . . . . . . . . . . . . . . . . . 221
`6.7 Vertex Array Data (cont.) . . . . . . . . . . . . . . . . . . . . . . 222
`6.8 Transformation state
`. . . . . . . . . . . . . . . . . . . . . . . . 223
`6.9 Coloring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
`6.10 Lighting (see also Table 2.7 for defaults) . . . . . . . . . . . . . . 225
`6.11 Lighting (cont.) . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
`6.12 Rasterization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
`6.13 Multisampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
`6.14 Textures (state per texture unit and binding point) . . . . . . . . . 229
`6.15 Textures (state per texture object) . . . . . . . . . . . . . . . . . . 230
`6.16 Textures (state per texture image) . . . . . . . . . . . . . . . . . . 231
`6.17 Texture Environment and Generation . . . . . . . . . . . . . . . . 232
`6.18 Pixel Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
`6.19 Framebuffer Control
`. . . . . . . . . . . . . . . . . . . . . . . . 234
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 12
`
`

`

`LIST OF TABLES
`
`xi
`
`. . . . . . . . . . . . . . . . . . . . . . . . 235
`. .
`. .
`. .
`6.20 Pixels . .
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
`6.21 Pixels (cont.)
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
`6.22 Pixels (cont.)
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
`6.23 Pixels (cont.)
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
`6.24 Pixels (cont.)
`6.25 Evaluators (GetMap takes a map name) . . . . . . . . . . . . . . 240
`6.26 Hints .
`. .
`. .
`. .
`. .
`. . . . . . . . . . . . . . . . . . . . . . . . 241
`6.27 Implementation Dependent Values . . . . . . . . . . . . . . . . . 242
`6.28 Implementation Dependent Values (cont.)
`. . . . . . . . . . . . . 243
`6.29 Implementation Dependent Values (cont.)
`. . . . . . . . . . . . . 244
`6.30 Implementation Dependent Pixel Depths . . . . . . . . . . . . . . 245
`6.31 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 13
`
`

`

`Chapter 1
`
`Introduction
`
`This document describes the OpenGL graphics system: what it is, how it acts, and
`what is required to implement it. We assume that the reader has at least a rudi-
`mentary understanding of computer graphics. This means familiarity with the es-
`sentials of computer graphics algorithms as well as familiarity with basic graphics
`hardware and associated terms.
`
`1.1 Formatting of Optional Features
`
`Starting with version 1.2 of OpenGL, some features in the specification are consid-
`ered optional; an OpenGL implementation may or may not choose to provide them
`(see section 3.6.2).
`Portions of the specification which are optional are so described where the
`optional features are first defined (see section 3.6.2). State table entries which are
`optional are typeset against a gray background .
`
`1.2 What is the OpenGL Graphics System?
`
`OpenGL (for “Open Graphics Library”) is a software interface to graphics hard-
`ware. The interface consists of a set of several hundred procedures and functions
`that allow a programmer to specify the objects and operations involved in produc-
`ing high-quality graphical images, specifically color images of three-dimensional
`objects.
`Most of OpenGL requires that the graphics hardware contain a framebuffer.
`Many OpenGL calls pertain to drawing objects such as points, lines, polygons, and
`bitmaps, but the way that some of this drawing occurs (such as when antialiasing
`
`1
`
`LG Ex. 1009, pg 14
`
`

`

`2
`
`CHAPTER 1. INTRODUCTION
`
`or texturing is enabled) relies on the existence of a framebuffer. Further, some of
`OpenGL is specifically concerned with framebuffer manipulation.
`
`1.3 Programmer’s View of OpenGL
`
`To the programmer, OpenGL is a set of commands that allow the specification of
`geometric objects in two or three dimensions, together with commands that control
`how these objects are rendered into the framebuffer. For the most part, OpenGL
`provides an immediate-mode interface, meaning that specifying an object causes it
`to be drawn.
`A typical program that uses OpenGL begins with calls to open a window into
`the framebuffer into which the program will draw. Then, calls are made to allocate
`a GL context and associate it with the window. Once a GL context is allocated,
`the programmer is free to issue OpenGL commands. Some calls are used to draw
`simple geometric objects (i.e. points, line segments, and polygons), while others
`affect the rendering of these primitives including how they are lit or colored and
`how they are mapped from the user’s two- or three-dimensional model space to
`the two-dimensional screen. There are also calls to effect direct control of the
`framebuffer, such as reading and writing pixels.
`
`1.4 Implementor’s View of OpenGL
`
`To the implementor, OpenGL is a set of commands that affect the operation of
`graphics hardware. If the hardware consists only of an addressable framebuffer,
`then OpenGL must be implemented almost entirely on the host CPU. More typi-
`cally, the graphics hardware may comprise varying degrees of graphics accelera-
`tion, from a raster subsystem capable of rendering two-dimensional lines and poly-
`gons to sophisticated floating-point processors capable of transforming and com-
`puting on geometric data. The OpenGL implementor’s task is to provide the CPU
`software interface while dividing the work for each OpenGL command between
`the CPU and the graphics hardware. This division must be tailored to the available
`graphics hardware to obtain optimum performance in carrying out OpenGL calls.
`OpenGL maintains a considerable amount of state information. This state con-
`trols how objects are drawn into the framebuffer. Some of this state is directly
`available to the user: he or she can make calls to obtain its value. Some of it, how-
`ever, is visible only by the effect it has on what is drawn. One of the main goals of
`this specification is to make OpenGL state information explicit, to elucidate how it
`changes, and to indicate what its effects are.
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 15
`
`

`

`1.5. OUR VIEW
`
`1.5 Our View
`
`3
`
`We view OpenGL as a state machine that controls a set of specific drawing oper-
`ations. This model should engender a specification that satisfies the needs of both
`programmers and implementors. It does not, however, necessarily provide a model
`for implementation. An implementation must produce results conforming to those
`produced by the specified methods, but there may be ways to carry out a particular
`computation that are more efficient than the one specified.
`
`Version 1.4 - July 24, 2002
`
`LG Ex. 1009, pg 16
`
`

`

`Chapter 2
`
`OpenGL Operation
`
`2.1 OpenGL Fundamentals
`
`OpenGL (henceforth, the “GL”) is concerned only with rendering into a frame-
`buffer (and reading values stored in that framebuffer). There is no support for
`other peripherals sometimes associated with graphics hardware, such as mice and
`keyboards. Programmers must rely on other mechanisms to obtain user input.
`The GL draws primitives subject to a number of selectable modes. Each prim-
`itive is a point, line segment, polygon, or pixel rectangle. Each mode may be
`changed independently; the setting of one does not affect the settings of others
`(although many modes may interact to determine what eventually ends up in the
`framebuffer). Modes are set, primitives specified, and other GL operations de-
`scribed by sending commands in the form of function or procedure calls.
`Primitives are defined by a group of one or more vertices. A vertex defines a
`point, an endpoint of an edge, or a corner of a polygon where two edges meet. Data
`(consisting of positional coordinates, colors, normals, and texture coordinates) are
`associated with a vertex and each vertex is processed independently, in order, and
`in the same way. The only exception to this rule is if the group of vertices must
`be clipped so that the indicated primitive fits within a specified region; in this
`case vertex data may be modified and new vertices created. The type of clipping
`depends on which primitive the group of vertices represents.
`Commands are always processed in the order in which they are received, al-
`though there may be an indeterminate delay before the effects of a command are
`realized. This means, for example, that one primitive must be drawn completely
`before any subsequent one can affect the framebuffer. It also means that queries
`and pixel read operations return state consistent with complete execution of all pre-
`viously invoked GL commands. In general, the effects of a GL command on either
`
`4
`
`LG Ex. 1009, pg 17
`
`

`

`2.1. OPENGL FUNDAMENTALS
`
`5
`
`GL modes or the framebuffer must be complete before any subsequent command
`can have any such effects.
`In the GL, data binding occurs on call. This means that data passed to a com-
`mand are interpreted when that command is received. Even if the command re-
`quires a pointer to data, those data are interpreted when the call is made, and any
`subsequent changes to the data have no effect on the GL (unless the same pointer
`is used in a subsequent command).
`The GL provides direct control over the fundamental operations of 3D and 2D
`graphics. This includes specification of such parameters as transformation matri-
`ces, lighting equation coefficients, antialiasing methods, and pixel update opera-
`tors. It does not provide a means for describing or modeling complex geometric
`objects. Another way to describe this situation is to say that the GL provides mech-
`anisms to describe how complex geometric objects are to be rendered rather than
`mec

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket