3

我目前正在为我的游戏引擎项目开发一个简单的编辑器,而该项目似乎在我的主工作站上运行得很好(支持 OpenGL 3.3+ 的 GTX 650Ti),但是当我在我的测试桌面(最大支持 OpenGL 2.1 的 GMA4500)。

gtk_gl_area_make_current()即使我将 GL 版本指定为 2.1 ,GtkGLArea 也无法创建 OpenGL 2.1 上下文gtk_gl_area_set_required_version()

尝试通过测试 gtk glarea 演示 ( https://git.gnome.org/browse/gtk+/tree/demos/gtk-demo/glarea.c ) 对其进行故障排除并获得相同的结果。

已经在网上搜索过,但没有找到任何解决方案。尽管有人在 ebassi ( https://github.com/ebassi/glarea-example/issues/2 )的 glarea 示例中提到了同样的问题

有什么解决办法吗?

操作系统:Fedora 23 GTK 3.18 版


编辑: 操作系统(Fedora 23)正在使用 OpenGL 2.1(使用 glxinfo 检查),并且考虑到 GTK+ 源上给出的演示,我假设 GTK 默认使用 GL 3.0+。有什么办法可以忽略这一点吗?GdkGLContext(根据 ebassi 在下面的回答,如果核心配置文件不可用,从 GTK+ 3.20 开始将回退到旧配置文件。将在我升级到 GTK+ 3.20 后立即对其进行测试)

编辑 2: 我可以通过使用由 SDL 而不是创建的上下文来解决问题GdkGLContext,但我仍然有兴趣GdkGLContext使用 OpenGL 2.1。

4

2 回答 2

4

GTK+ 尝试默认创建一个 OpenGL 3.2+ 核心配置文件上下文。

从 GTK+ 3.20 开始,GdkGLContext如果核心配置文件不可用,将尝试回退到旧配置文件。您可以使用 来检查 aGdkGLContext是否处于旧模式gdk_gl_context_is_legacy()

不允许您自己选择旧版上下文,因为无法与旧版共享核心配置文件,并且 GDK 会在内部创建 GL 上下文以进行绘图。

于 2016-06-20T13:11:29.810 回答
0

您可以使用 EGL 来使用带有 GtkDrawingArea 的旧版(3.0 之前)OpenGL 版本

http://bobthegnome.blogspot.com/2014/09/using-egl-with-gtk.html

于 2020-02-18T14:44:04.580 回答