如何在 Gtk 下创建 cairo-gl 曲面

Posted

技术标签:

【中文标题】如何在 Gtk 下创建 cairo-gl 曲面【英文标题】:How to create a cairo-gl surface under Gtk 【发布时间】:2011-05-24 05:13:06 【问题描述】:

我想在 linux (fedora 12) 下使用 GTK 3 创建一个窗口,并使用 cairo-gl 后端在其上绘制一个简单的矩形,为此我想创建一个 cairo-gl 表面。我该怎么做,任何人都可以帮助我提供示例代码。

提前致谢。

RC7

【问题讨论】:

【参考方案1】:

首先,您需要确保您的 cairo 版本支持 gl。我不确定 Fedora 12 中的版本是否有它。你可能需要自己编译 cairo。

然后你需要查看cairo-gl.h: http://cgit.freedesktop.org/cairo/tree/src/cairo-gl.h

这个文件有一个很好的注释说明首先你需要使用你的 gl 上下文创建一个 cairo_device,然后将它传递给 cairo_gl_surface_create()。

来自 cairo 测试套件的这个文件包含一个 gl 表面的例子: http://cgit.freedesktop.org/cairo/tree/test/gl-surface-source.c

请注意,它是一个包含另一个 .c 文件的 .c 文件: http://cgit.freedesktop.org/cairo/tree/test/set-source.c

测试套件中充满了 cairo 编程示例。用它! :)

我不确定您如何使用 GTK3 进行 GL,但在最坏的情况下,您可以使用 GDK 获取 X11 的显示和窗口 ID,然后使用标准 glx 调用: http://developer.gnome.org/gdk3/stable/gdk3-X-Window-System-Interaction.html

要在 GTK3 中使用 cairo,您需要查看以下内容: http://developer.gnome.org/gdk3/stable/gdk3-Cairo-Interaction.html 还有这个: http://zetcode.com/tutorials/cairographicstutorial/

我给了你一堆乐高积木。现在你需要组装它们。 (或者也许有更多时间的人会在这里写一个更好的答案?)

【讨论】:

谢谢。这应该让人们开始。如您所见,该领域的文档非常稀缺。

以上是关于如何在 Gtk 下创建 cairo-gl 曲面的主要内容,如果未能解决你的问题,请参考以下文章

Android TV Emulator:如何创建曲面显示模拟器?

如何在 Gtk3 可选标签中设置光标颜色?

如何使用自定义 CellRendererText 创建 Gtk Iconview

FreeBASIC 和 GTK Glade 的 glade Button 是如何工作的?

如何在不阻塞的情况下使用 mpd.idle() 从 GTK 轮询 MPD

Windows下安装并使用 GTK4