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 laurie@ics.com for more information on scheduling.
Pre-Requisites
- 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.
Agenda
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