GTK+ Gains Native Support For OpenGL

Written by Michael Larabel in GNOME on 13 October 2014 at 12:22 PM EDT. 9 Comments
GNOME
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.
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.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week