Skip to content
  • Alexander Larsson's avatar
    gdk: Add support for OpenGL · 038aac62
    Alexander Larsson authored and Matthias Clasen's avatar Matthias Clasen committed
    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.
    
    In the *typical* case, where we're drawing directly to the wi...
    038aac62