GTK+ Gains Native Support For OpenGL
For GTK+ 3.16 there is now native support for OpenGL along with a new widget type. The GTK+ OpenGL support works on both X11 with GLX and under Wayland with EGL.
Alexander Larsson added to GTK's GDK component a new GdkGLContext to wrap an OpenGL context for a particular native window.
He followed up with Wayland OpenGL support.
There's also now a GtkGLArea widget for providing an OpenGL drawing area within a GTK+ application.
These changes will be found with GTK+ 3.16 for the GNOME 3.16 release in March.
Alexander Larsson added to GTK's GDK component a new GdkGLContext to wrap an OpenGL context for a particular native window.
This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it.
This commit contains only an implementation for X11 (using GLX).
The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context.
As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast.
He followed up with Wayland OpenGL support.
There's also now a GtkGLArea widget for providing an OpenGL drawing area within a GTK+ application.
These changes will be found with GTK+ 3.16 for the GNOME 3.16 release in March.
9 Comments