State-of-the-Art OpenGL with Qt

Location: Washington D.C.
Early Bird Pricing: $2,495
Regular Price: $2,995

Course Description

This 5-day, hands-on course provides an introduction to modern OpenGL using programmable shader pipelines. It introduces the use of the Qt framework for infrastructure and support to quickly achieve highly efficient and visually appealing, state-of-the-art, interactive graphics applications. The class covers basic topics such as handling of geometry, graphics pipeline, transformations as well as advanced topics such as vertex, fragment and geometry shaders and their applications. Qt and C++ based Labs are designed to let participants experiment with OpenGL easily in order to deepen the understanding of the material.

Course Availability: On-site, Open Enrollment
Duration: 5 days

Course Prerequisites

  • Working knowledge of C++ programming

  • Basic knowledge of geometry

  • Previous experience with OpenGL and/or Qt is not required

Course Outline

This course will be roughly divided into four 90 minute sections and each section will target an even mix of lecture and labs. The goal is to give students plenty of time to experiment with the lab material.

The class uses Qt-5.9.1 and is based on Qt's OpenGL integration classes QOpenGLWidget and QOpenGLWindow. 
Course material is divided into four 90 minute sections per day and each section will target an even mix of lecture and labs. The goal is to give students plenty of time to experiment with the lab material.

Larger OpenGL Topics are organized into parts that are not necessarily equal in length as follows:

Part 1 – The Basic

  • What is OpenGL
  • Steps to Render a Scene with OpenGL
  • Qt’s OpenGL Support
  • OpenGL Rendering Pipeline
  • Shaders
  • Labs: Contexts and Windows, Draw Triangles

Part 2 – Qt Refresher

  • Lab: Wavefront .obj File Reader (Relevant to the Rest of the Course)

Part 3 – GLSL

  • OpenGL Shading Language 
  • in Detail
  • Lab: Rectangles, Grids

Part 4 – A Day at the Movies

  • Vertices and Vectors
  • Models and Cameras, the Model-View Transformation
  • Demo Programs
  • Matrices
  • Depth and Culling
  • Simplest Possible Light Model
  • Lab: Three Dimensional Objects

Part 5 – Directing the Scene

  • Primitives
  • Indexed Drawing
  • Vertex Array Objects (VAO)
  • Handling Multiple Components 
  • of Objects
  • Lab: Three Dimensional Scenes

Part 6 – Let there be Light

  • Let There be Light (at the End of the Tunnel?)
  • Lab: Diffuse Light Model, ADS (Phong) Light Model, Multiple Lights

Part 7 – Textures

  • Texture Basics
  • Textures, Images, Samplers
  • Multiple Textures
  • Qt Support for Textures
  • CubeMap
  • Labs: Multiple Textures, Cube Map

Part 8 – More Textures

  • Textures Advanced
  • FrameBuffer Objects
  • Lab: Framebuffer Objects

Part 9 – Advanced OpenGL

  • Geometry Shaders
  • Vertex Displacement Shaders
  • Animating Textures
  • Image Based Techniques
  • Procedural Texturing with Noise
  • Mapping Explained, Specular, Occlusion, Alpha, Environment, Bump
  • Labs

Part 10 – More Advanced OpenGL

  • More Advanced Topics (Spotlight, Fog, Smoke, Shadows, Cartoon Shading)
  • Reflection and Refraction with Cubemaps
  • Point Sprites
  • Transform Feedback and Particle Systems
  • Instanced Rendering

Part 11 – Timing is Everything

  • QtOpenGLExtensions Module
  • OpenGL Debugging and Timing with Qt

Part 12 – Qt and OpenGL

  • Integration of OpenGL and QtQuick, Custom OpenGL QQuickItem
  • QPainter on QOpenGLPaintDevice 
  • Qt3D

Part 13 – Optimizations

  • Best Practices
  • GLSL Optimizations
  • Vertex Specification Best Practices
  • Common Mistakes
  • Convert GL 3.3 to GLES 2.0

Mandatory computer requirements

< Back to full list of training