State-of-the-Art OpenGL with Qt

Open Enrollment or On-Site Available!

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.

Contact for more information on scheduling.


  • Working knowledge of Python C++ programming
  • Basic knowledge of geometry
  • Previous experience with OpenGL and/or Qt is not required

Hardware Requirements

  • Core i5 processor or better
  • 4G memory
  • 16G free hard drive
  • You may use one of the following operating systems. All must have Qt-5.9.1 or higher installed with QtCreator.
    • MacOSX-10.7 and newer, Xcode required.
    • Linux Ubuntu 16.04, gcc compiler required.
    • Windows 10, Qt installer comes with MinGW option or MSVC-2013 and newer. Visual Studio Express also works.

*Please note that MacBooks are okay but must be 2012 and newer only. 


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