O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

OpenGL – Build high performance graphics

Book Description

Gain proficiency with OpenGL and build compelling graphics for your games and applications

About This Book

  • Get to grips with a wide range of techniques for implementing shadows using shadow maps, shadow volumes, and more
  • Explore interactive, real-time visualizations of large 2D and 3D datasets or models, including the use of more advanced techniques such as stereoscopic 3D rendering
  • Create stunning visuals on the latest platforms including mobile phones and state-of-the-art wearable computing devices

Who This Book Is For

The course is appropriate for anyone who wants to develop the skills and techniques essential for working with OpenGL to develop compelling 2D and 3D graphics.

What You Will Learn

  • Off-screen rendering and environment mapping techniques to render mirrors
  • Shadow mapping techniques, including variance shadow mapping
  • Implement a particle system using shaders
  • Utilize noise in shaders
  • Make use of compute shaders for physics, animation, and general computing
  • Create interactive applications using GLFW to handle user inputs and the Android Sensor framework to detect gestures and motions on mobile devices
  • Use OpenGL primitives to plot 2-D datasets (such as time series) dynamically
  • Render complex 3D volumetric datasets with techniques such as data slicers and multiple viewpoint projection

In Detail

OpenGL is a fully functional, cross-platform API widely adopted across the industry for 2D and 3D graphics development. It is mainly used for game development and applications, but is equally popular in a vast variety of additional sectors. This practical course will help you gain proficiency with OpenGL and build compelling graphics for your games and applications.

OpenGL Development Cookbook – This is your go-to guide to learn graphical programming techniques and implement 3D animations with OpenGL. This straight-talking Cookbook is perfect for intermediate C++ programmers who want to exploit the full potential of OpenGL. Full of practical techniques for implementing amazing computer graphics and visualizations using OpenGL.

OpenGL 4.0 Shading Language Cookbook, Second Edition – With Version 4, the language has been further refined to provide programmers with greater power and flexibility, with new stages such as tessellation and compute. OpenGL Shading Language 4 Cookbook is a practical guide that takes you from the fundamentals of programming with modern GLSL and OpenGL, through to advanced techniques.

OpenGL Data Visualization Cookbook - This easy-to-follow, comprehensive Cookbook shows readers how to create a variety of real-time, interactive data visualization tools. Each topic is explained in a step-by-step format. A range of hot topics is included, including stereoscopic 3D rendering and data visualization on mobile/wearable platforms. By the end of this guide, you will be equipped with the essential skills to develop a wide range of impressive OpenGL-based applications for your unique data visualization needs.

This Learning Path combines some of the best that Packt has to offer in one complete, curated package. It includes content from the following Packt products, OpenGL Development Cookbook by Muhammad Mobeen Movania, OpenGL 4.0 Shading Language Cookbook, Second Edition by David Wolff, OpenGL Data Visualization Cookbook by Raymond C. H. Lo, William C. Y. Lo

Style and approach

Full of easy-to-follow hands-on tutorials, this course teaches you to develop a wide range of impressive OpenGL-based applications in a step-by-step format.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. OpenGL – Build high performance graphics
    1. Table of Contents
    2. OpenGL – Build high performance graphics
    3. OpenGL – Build high performance graphics
    4. Credits
    5. Preface
      1. What this learning path covers
      2. What you need for this learning path
      3. Who this learning path is for
      4. Reader feedback
      5. Customer support
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    6. 1. Module 1
      1. 1. Introduction to Modern OpenGL
        1. Introduction
        2. Setting up the OpenGL v3.3 core profile on Visual Studio 2010 using the GLEW and freeglut libraries
          1. How to do it...
          2. There's more…
        3. Designing a GLSL shader class
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
        4. Rendering a simple colored triangle using shaders
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        5. Doing a ripple mesh deformer using the vertex shader
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more
        6. Dynamically subdividing a plane using the geometry shader
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        7. Dynamically subdividing a plane using the geometry shader with instanced rendering
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. See also
        8. Drawing a 2D image in a window using the fragment shader and the SOIL image loading library
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
      2. 2. 3D Viewing and Object Picking
        1. Introduction
        2. Implementing a vector-based camera with FPS style input support
          1. Getting ready
          2. How to do it…
          3. There's more…
          4. See also
        3. Implementing the free camera
          1. Getting ready
          2. How to do it…
          3. There's more…
          4. See also
        4. Implementing the target camera
          1. Getting ready
          2. How to do it…
          3. There's more…
          4. See also
        5. Implementing view frustum culling
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        6. Implementing object picking using the depth buffer
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        7. Implementing object picking using color
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. See also
        8. Implementing object picking using scene intersection queries
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
      3. 3. Offscreen Rendering and Environment Mapping
        1. Introduction
        2. Implementing the twirl filter using the fragment shader
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more...
        3. Rendering a skybox using static cube mapping
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
        4. Implementing a mirror with render-to-texture using FBO
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        5. Rendering a reflective object using dynamic cube mapping
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        6. Implementing area filtering (sharpening/blurring/embossing) on an image using convolution
          1. Getting ready
          2. How to do it…
          3. How it works...
          4. There's more…
          5. See also
        7. Implementing the glow effect
          1. How to do it…
          2. How it works…
          3. There's more…
          4. See also
      4. 4. Lights and Shadows
        1. Introduction
        2. Implementing per-vertex and per-fragment point lighting
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        3. Implementing per-fragment directional light
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        4. Implementing per-fragment point light with attenuation
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        5. Implementing per-fragment spot light
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        6. Implementing shadow mapping with FBO
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        7. Implemeting shadow mapping with percentage closer filtering (PCF)
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        8. Implementing variance shadow mapping
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
      5. 5. Mesh Model Formats and Particle Systems
        1. Introduction
        2. Implementing terrains using the height map
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        3. Implementing 3ds model loading using separate buffers
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        4. Implementing OBJ model loading using interleaved buffers
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        5. Implementing EZMesh model loading
          1. Getting started
          2. How to do it...
          3. How it works…
          4. There's more…
          5. See also
        6. Implementing simple particle system
          1. Getting started
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
      6. 6. GPU-based Alpha Blending and Global Illumination
        1. Introduction
        2. Implementing order-independent transparency using front-to-back peeling
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        3. Implementing order-independent transparency using dual depth peeling
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        4. Implementing screen space ambient occlusion (SSAO)
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        5. Implementing global illumination using spherical harmonics lighting
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        6. Implementing GPU-based ray tracing
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        7. Implementing GPU-based path tracing
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
      7. 7. GPU-based Volume Rendering Techniques
        1. Introduction
        2. Implementing volume rendering using 3D texture slicing
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        3. Implementing volume rendering using single-pass GPU ray casting
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        4. Implementing pseudo-isosurface rendering in single-pass GPU ray casting
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        5. Implementing volume rendering using splatting
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        6. Implementing transfer function for volume classification
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        7. Implementing polygonal isosurface extraction using the Marching Tetrahedra algorithm
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        8. Implementing volumetric lighting using the half-angle slicing
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
      8. 8. Skeletal and Physically-based Simulation on the GPU
        1. Introduction
        2. Implementing skeletal animation using matrix palette skinning
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        3. Implementing skeletal animation using dual quaternion skinning
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        4. Modeling cloth using transform feedback
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        5. Implementing collision detection and response on a transform feedback-based cloth model
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
        6. Implementing a particle system using transform feedback
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
          5. See also
    7. 2. Module 2
      1. 1. Getting Started with GLSL
        1. Introduction
          1. The OpenGL Shading Language
          2. Profiles – Core vs. Compatibility
        2. Using a function loader to access the latest OpenGL functionality
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Generating a C++ loader
            2. No-load styles
            3. Using Extensions
          5. See also
        3. Using GLM for mathematics
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Using the GLM types as input to OpenGL
          5. See also
        4. Determining the GLSL and OpenGL version
          1. How to do it...
          2. How it works...
          3. There's more...
          4. See also
        5. Compiling a shader
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Deleting a Shader Object
          5. See also
        6. Linking a shader program
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Deleting a Shader program
          5. See also
        7. Sending data to a shader using vertex attributes and vertex buffer objects
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Separate attribute format
            2. Fragment shader output
            3. Specifying attribute indexes without using layout qualifiers
            4. Using element arrays
            5. Interleaved arrays
        8. Getting a list of active vertex input attributes and locations
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        9. Sending data to a shader using uniform variables
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        10. Getting a list of active uniform variables
          1. Getting ready
          2. How to do it…
          3. How it works...
          4. There's more...
          5. See also
        11. Using uniform blocks and uniform buffer objects
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Using an instance name with a uniform block
            2. Using layout qualifiers with uniform blocks
          5. See also
        12. Getting debug messages
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
        13. Building a C++ shader program class
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
      2. 2. The Basics of GLSL Shaders
        1. Introduction
          1. Vertex and fragment shaders
          2. Replicating the old fixed functionality
        2. Implementing diffuse, per-vertex shading with a single point light source
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        3. Implementing per-vertex ambient, diffuse, and specular (ADS) shading
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Using a non-local viewer
            2. Per-vertex versus per-fragment
            3. Directional lights
            4. Light attenuation with distance
          5. See also
        4. Using functions in shaders
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. The const qualifier
            2. Function overloading
            3. Passing arrays or structures to a function
          5. See also
        5. Implementing two-sided shading
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Using two-sided rendering for debugging
          5. See also
        6. Implementing flat shading
          1. How to do it...
          2. How it works...
          3. See also
        7. Using subroutines to select shader functionality
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        8. Discarding fragments to create a perforated look
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
      3. 3. Lighting, Shading, and Optimization
        1. Introduction
        2. Shading with multiple positional lights
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        3. Shading with a directional light source
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        4. Using per-fragment shading for improved realism
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        5. Using the halfway vector for improved performance
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        6. Simulating a spotlight
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        7. Creating a cartoon shading effect
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        8. Simulating fog
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Computing distance from the eye
          5. See also
        9. Configuring the depth test
          1. How to do it...
          2. How it works...
          3. See also
      4. 4. Using Textures
        1. Introduction
        2. Applying a 2D texture
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Specifying the sampler binding within GLSL
          5. See also
        3. Applying multiple textures
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        4. Using alpha maps to discard pixels
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        5. Using normal maps
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        6. Simulating reflection with cube maps
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        7. Simulating refraction with cube maps
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. The Fresnel equations
            2. Chromatic aberration
            3. Refracting through both sides of the object
          5. See also
        8. Applying a projected texture
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        9. Rendering to a texture
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        10. Using sampler objects
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
      5. 5. Image Processing and Screen Space Techniques
        1. Introduction
        2. Applying an edge detection filter
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Optimization techniques
          5. See also
        3. Applying a Gaussian blur filter
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        4. Implementing HDR lighting with tone mapping
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        5. Creating a bloom effect
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        6. Using gamma correction to improve image quality
          1. How to do it...
          2. How it works...
          3. There's more...
        7. Using multisample anti-aliasing
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
        8. Using deferred shading
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        9. Implementing order-independent transparency
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
      6. 6. Using Geometry and Tessellation Shaders
        1. Introduction
          1. The shader pipeline extended
          2. The geometry shader
          3. The tessellation shaders
        2. Point sprites with the geometry shader
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
        3. Drawing a wireframe on top of a shaded mesh
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also…
        4. Drawing silhouette lines using the geometry shader
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        5. Tessellating a curve
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
        6. Tessellating a 2D quad
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        7. Tessellating a 3D surface
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        8. Tessellating based on depth
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
      7. 7. Shadows
        1. Introduction
        2. Rendering shadows with shadow maps
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Aliasing
            2. Rendering back faces only for the shadow map
          5. See also
        3. Anti-aliasing shadow edges with PCF
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        4. Creating soft shadow edges with random sampling
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        5. Creating shadows using shadow volumes and the geometry shader
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
      8. 8. Using Noise in Shaders
        1. Introduction
          1. See Also…
        2. Creating a noise texture using GLM
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        3. Creating a seamless noise texture
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        4. Creating a cloud-like effect
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        5. Creating a wood-grain effect
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        6. Creating a disintegration effect
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        7. Creating a paint-spatter effect
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        8. Creating a night-vision effect
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
      9. 9. Particle Systems and Animation
        1. Introduction
        2. Animating a surface with vertex displacement
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        3. Creating a particle fountain
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        4. Creating a particle system using transform feedback
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
            1. Using layout qualifiers
            2. Querying transform feedback results
            3. Recycling particles
          5. See also
        5. Creating a particle system using instanced particles
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        6. Simulating fire with particles
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        7. Simulating smoke with particles
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
      10. 10. Using Compute Shaders
        1. Introduction
          1. Compute space and work groups
          2. Executing the Compute Shader
        2. Implementing a particle simulation with the compute shader
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        3. Using the compute shader for cloth simulation
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        4. Implementing an edge detection filter with the compute shader
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
        5. Creating a fractal texture using the compute shader
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
    8. 3. Module 3
      1. 1. Getting Started with OpenGL
        1. Introduction
        2. Setting up a Windows-based development platform
          1. Installing Visual Studio 2013
          2. Getting ready
          3. How to do it...
          4. Installing CMake in Windows
          5. Getting ready
          6. How to do it…
        3. Setting up a Mac-based development platform
          1. Installing Xcode and command-line tools
          2. Getting ready
          3. How to do it...
          4. See also
          5. Installing MacPorts and CMake
          6. Getting ready
          7. How to do it...
        4. Setting up a Linux-based development platform
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. See also
        5. Installing the GLFW library in Windows
          1. Getting ready
          2. How to do it...
        6. Installing the GLFW library in Mac OS X and Linux
          1. Getting ready
          2. How to do it...
          3. How it works...
        7. Creating your first OpenGL application with GLFW
          1. Getting ready
          2. How to do it...
          3. How it works...
        8. Compiling and running your first OpenGL application in Windows
          1. Getting ready
          2. How to do it...
        9. Compiling and running your first OpenGL application in Mac OS X or Linux
          1. Getting ready
          2. How to do it...
      2. 2. OpenGL Primitives and 2D Data Visualization
        1. Introduction
        2. OpenGL primitives
          1. Drawing points
          2. Getting ready
          3. How to do it…
          4. How it works…
          5. See also
          6. Drawing line segments
          7. Getting ready
          8. How to do it…
          9. How it works…
          10. Drawing triangles
          11. Getting ready
          12. How to do it…
          13. How it works…
        3. Creating a 2D plot using primitives
          1. Getting ready
          2. How to do it…
          3. How it works…
        4. Real-time visualization of time series
          1. Getting ready
          2. How to do it…
          3. How it works…
        5. 2D visualization of 3D/4D datasets
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. There's more…
      3. 3. Interactive 3D Data Visualization
        1. Introduction
        2. Setting up a virtual camera for 3D rendering
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
        3. Creating a 3D plot with perspective rendering
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
        4. Creating an interactive environment with GLFW
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        5. Rendering a volumetric dataset – MCML simulation
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. There's more...
          5. See also
      4. 4. Rendering 2D Images and Videos with Texture Mapping
        1. Introduction
        2. Getting started with modern OpenGL (3.2 or higher)
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        3. Setting up the GLEW, GLM, SOIL, and OpenCV libraries in Windows
          1. Getting ready
          2. How to do it...
          3. See also
        4. Setting up the GLEW, GLM, SOIL, and OpenCV libraries in Mac OS X/Linux
          1. Getting ready
          2. How to do it...
          3. See also
        5. Creating your first vertex and fragment shader using GLSL
          1. Getting ready
          2. How to do it...
          3. How it works...
        6. Rendering 2D images with texture mapping
          1. Getting ready
          2. How to do it...
          3. How it works...
        7. Real-time video rendering with filters
          1. Getting ready
          2. How to do it...
          3. How it works...
      5. 5. Rendering of Point Cloud Data for 3D Range-sensing Cameras
        1. Introduction
        2. Getting started with the Microsoft Kinect (PrimeSense) 3D range-sensing camera
          1. How to do it...
          2. See also
        3. Capturing raw data from depth-sensing cameras
          1. How to do it...
          2. How it works...
        4. OpenGL point cloud rendering with texture mapping and overlays
          1. Getting ready
          2. How to do it...
          3. How it works...
      6. 6. Rendering Stereoscopic 3D Models using OpenGL
        1. Introduction
        2. Installing the Open Asset Import Library (Assimp)
          1. How to do it...
          2. See also
        3. Loading the first 3D model in the Wavefront Object (.obj) format
          1. How to do it...
          2. How it works...
        4. Rendering 3D models with points, lines, and triangles
          1. How to do it...
          2. How it works...
          3. See also
        5. Stereoscopic 3D rendering
          1. How to do it...
          2. How it works...
          3. See also
      7. 7. An Introduction to Real-time Graphics Rendering on a Mobile Platform using OpenGL ES 3.0
        1. Introduction
        2. Setting up the Android SDK
          1. How to do it...
          2. See also
        3. Setting up the Android Native Development Kit (NDK)
          1. How to do it...
          2. See also
        4. Developing a basic framework to integrate the Android NDK
          1. How to do it...
          2. How it works...
          3. See also
        5. Creating your first Android application with OpenGL ES 3.0
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
      8. 8. Interactive Real-time Data Visualization on Mobile Devices
        1. Introduction
        2. Visualizing real-time data from built-in Inertial Measurement Units (IMUs)
          1. Getting ready
          2. How to do it…
          3. How it works…
          4. See also
        3. Part I – handling multi-touch interface and motion sensor inputs
          1. How to do it…
          2. How it works…
          3. See also
        4. Part II – interactive, real-time data visualization with mobile GPUs
          1. How to do it…
          2. How it works…
      9. 9. Augmented Reality-based Visualization on Mobile or Wearable Platforms
        1. Introduction
        2. Getting started I: Setting up OpenCV on Android
          1. Getting ready
          2. How to do it...
          3. See also
        3. Getting started II: Accessing the camera live feed using OpenCV
          1. Getting ready
          2. How to do it...
          3. How it works...
        4. Displaying real-time video using texture mapping
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
        5. Augmented reality-based data visualization over real-world scenes
          1. Getting ready
          2. How to do it...
          3. How it works...
          4. See also
      10. A. Bibliography
    9. Index