Capturing image rendered on GtkGLArea

Hi there!!

I was trying out GtkGLArea and OpenGL in general and was able to render the triangle with the corners assigned with red, blue and green colors (have a working code) in windows 10 environment.
The next step was to capture the rendered image to a *.png image file (and maybe later on to Pdf). Now I am stuck. I tried something like this which I am using in the ‘render’ callback of GTK_GL_AREA(gl_drawing_area):

GdkGLContext *glcontext = gtk_gl_area_get_context(GTK_GL_AREA(gl_drawing_area));
GdkWindow *glwindow = gdk_gl_context_get_window(glcontext);
cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 800, 600);
cairo_t *cr = cairo_create(surface);
gdk_cairo_set_source_window (cr , glwindow , 0, 0);
cairo_surface_write_to_png(surface, "image.png");

All I am getting is

not the triangle. Even the background color is not the same. Can anyone help me out with it


Siji Sukumaran

I tried out an approach from OpenGL itself instead of looking from GTK and it worked. Using ‘glReadBuffer(GL_BACK)’ and ‘glReadPixels’ was the key. I got the solution from this link:

Siji Sukumaran

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.