Opengl es 使用cairo-gles的GTK渲染

Opengl es 使用cairo-gles的GTK渲染,opengl-es,gtk,cairo,egl,Opengl Es,Gtk,Cairo,Egl,我已经成功地将GTK用于GLES的cairo后端更改为GLES(在X11窗口实现中)。我正在为每个gdkwindow使用eglWIndowSurface。我面临的问题是,由于GTK正在进行差分渲染,因此我只能看到渲染的当前焦点区域。有没有办法让GTK始终呈现完整的窗口?您是如何让GTK使用GLES的?(为什么?)?EGLWINDOW表面在何处/如何清除?什么是eglWindowSurface?这是来自GTK的吗?我想使用GTK的硬件加速。通过eglWindowSurface,我指的是我们用egl

我已经成功地将GTK用于GLES的cairo后端更改为GLES(在X11窗口实现中)。我正在为每个gdkwindow使用eglWIndowSurface。我面临的问题是,由于GTK正在进行差分渲染,因此我只能看到渲染的当前焦点区域。有没有办法让GTK始终呈现完整的窗口?

您是如何让GTK使用GLES的?(为什么?)?EGLWINDOW表面在何处/如何清除?什么是eglWindowSurface?这是来自GTK的吗?我想使用GTK的硬件加速。通过eglWindowSurface,我指的是我们用eglCreateWindowSurface Api创建的窗口表面。这样的窗口表面有两个缓冲区连接到它,所有GTK渲染都发生在一个后缓冲区中。在cairo_gl_surface_swapbuffers时,backbuffer和front buffesr被翻转(在我们的实现中没有复制)。如果GTK每次都将整个窗口呈现给backbuffer,则该行为就可以了。但由于GTK仅使聚焦区域无效,后缓冲区(即翻转的前缓冲区)将仅清除受损区域+剩余区域。EGL扩展EGL_EXT_swap_buffers_with_damage支持这一点。但不幸的是,我们的硬件不支持这一点。