<?xml version="1.0" encoding="UTF-8"?>
<record
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
    xmlns="http://www.loc.gov/MARC21/slim">

  <leader>12375nam a2200325 a 4500</leader>
  <controlfield tag="001">vtls000085516</controlfield>
  <controlfield tag="003">KUKTEM</controlfield>
  <controlfield tag="005">20251125100108.0</controlfield>
  <controlfield tag="008">150407t2013    njua   f      001 0 eng d</controlfield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">9780321773036 (pbk. : alk. paper)</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">0321773039 (pbk. : alk. paper)</subfield>
  </datafield>
  <datafield tag="039" ind1=" " ind2="9">
    <subfield code="a">201504071304</subfield>
    <subfield code="b">ariffin</subfield>
    <subfield code="c">201504071304</subfield>
    <subfield code="d">ariffin</subfield>
    <subfield code="y">201504071303</subfield>
    <subfield code="z">ariffin</subfield>
  </datafield>
  <datafield tag="040" ind1=" " ind2=" ">
    <subfield code="a">UMP</subfield>
  </datafield>
  <datafield tag="090" ind1=" " ind2=" ">
    <subfield code="a">T385 .O64 2013</subfield>
  </datafield>
  <datafield tag="245" ind1="0" ind2="0">
    <subfield code="a">OpenGL programming guide :</subfield>
    <subfield code="b">the official guide to learning OpenGL, version 4.3 /</subfield>
    <subfield code="c">Dave Shreiner...[et al.]</subfield>
  </datafield>
  <datafield tag="250" ind1=" " ind2=" ">
    <subfield code="a">8th ed.</subfield>
  </datafield>
  <datafield tag="260" ind1=" " ind2=" ">
    <subfield code="a">Upper Saddle River, NJ :</subfield>
    <subfield code="b">Addison-Wesley,</subfield>
    <subfield code="c">[2013]</subfield>
  </datafield>
  <datafield tag="300" ind1=" " ind2=" ">
    <subfield code="a">xlvi, 935 p. :</subfield>
    <subfield code="b">ill. ;</subfield>
    <subfield code="c">24 cm.</subfield>
  </datafield>
  <datafield tag="490" ind1="1" ind2=" ">
    <subfield code="a">OpenGL Series</subfield>
  </datafield>
  <datafield tag="500" ind1=" " ind2=" ">
    <subfield code="a">Includes index</subfield>
  </datafield>
  <datafield tag="504" ind1=" " ind2=" ">
    <subfield code="a">Includes bibliographical references and index</subfield>
  </datafield>
  <datafield tag="505" ind1="0" ind2=" ">
    <subfield code="a">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</subfield>
  </datafield>
  <datafield tag="505" ind1="0" ind2=" ">
    <subfield code="a">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 --</subfield>
  </datafield>
  <datafield tag="505" ind1="0" ind2=" ">
    <subfield code="a">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</subfield>
  </datafield>
  <datafield tag="630" ind1="0" ind2="0">
    <subfield code="a">OpenGL</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="0">
    <subfield code="a">Computer graphics</subfield>
  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">Shreiner, Dave</subfield>
  </datafield>
  <datafield tag="830" ind1=" " ind2="0">
    <subfield code="a">OpenGL series</subfield>
  </datafield>
  <datafield tag="952" ind1=" " ind2=" ">
    <subfield code="0">0</subfield>
    <subfield code="1">0</subfield>
    <subfield code="4">0</subfield>
    <subfield code="7">0</subfield>
    <subfield code="a">20000</subfield>
    <subfield code="b">20000</subfield>
    <subfield code="d">2019-09-04</subfield>
    <subfield code="g">188.70</subfield>
    <subfield code="l">0</subfield>
    <subfield code="o">T385 .O64 2013</subfield>
    <subfield code="p">0000093958</subfield>
    <subfield code="r">2019-09-04 00:00:00</subfield>
    <subfield code="t">1</subfield>
    <subfield code="v">188.70</subfield>
    <subfield code="w">2019-09-04</subfield>
    <subfield code="y">OPEN</subfield>
  </datafield>
  <datafield tag="999" ind1=" " ind2=" ">
    <subfield code="a">VIRTUA40</subfield>
    <subfield code="c">77496</subfield>
    <subfield code="d">77502</subfield>
  </datafield>
  <datafield tag="999" ind1=" " ind2=" ">
    <subfield code="a">VTLSSORT0080*0400*0200*0201*0900*2450*2500*2600*3000*4900*5000*5040*5050*5051*6500*6300*7000*8300*9992</subfield>
  </datafield>
</record>
