Feature #7: Next-gen renderer (codename "Gloom")
OpenGL 3.3 Core Profile
3rd party compatibility
The OpenGL 2.1 Compatibility profile that Doomsday has been using hitherto is rapidly becoming a thing of the past. Modern OpenGL is evolving at a healthy pace, and OpenGL drivers have the best support for the more recent versions. I've done some tests that indicate that for instance with Intel HD Graphics, things like multisampled render buffers work better when using OpenGL 3.3 Core profile.
In practice, we should probably just target OpenGL 3.3, since the latest OpenGL is already at version 4.
By migrating to OpenGL 3.3, we'll be automatically doing most of the work required to support OpenGL ES 2.0.
- Related to Feature #1675: Switch to new Qt 5.4+ OpenGL APIs (from QGLWidget) added
It is also worth noting that the 3.3 core profile supports multisampled textures, removing the need for multisampled render buffers completely (no need to render first to a buffer and then blit to a texture).
- Status changed from New to In Progress
- % Done changed from 0 to 10
This work has been started in the
opengl3.3 branch, although the crucial step of switching to
QOpenGLWindow has not yet been tackled.
- Target version changed from 42 to 2.0 – Home UI & Packages
- Priority changed from Normal to High
- Priority changed from High to Urgent
- Related to Feature #1991: Qt 5.5 as minimum requirement for GUI, Qt 5.x for non-GUI build added
QOpenGLWidget were added in Qt 5.4, so the minimum required version of Qt would have to be 5.4. This would not be an issue with Windows and OS X, however Linux distros typically have somewhat older versions of Qt 5 available.
- Target version changed from 2.0 – Home UI & Packages to Rendering
- Status changed from In Progress to Progressed
- % Done changed from 10 to 30
The low-level GL code now uses the new Qt 5.4 OpenGL APIs, which means switching to newer OpenGL API versions is possible.
- Target version changed from Rendering to 2.1 (Late 2018)
- Status changed from Progressed to Resolved
- % Done changed from 30 to 100
This has now been largely implemented. In practice, all drawing occurs via the DGL abstraction layer and the DGL shader that emulates the old fixed-function OpenGL API behavior. Performance is negatively affected by this additional layer, though. Some optimizations will be necessary before the 2.1 stable release.
This puts us in the right place to start work on next-gen map rendering (#7).
- Status changed from Resolved to Closed
Also available in: Atom