GtKGLArea无法创建OpenGL 2.1上下文

时间:2016-06-19 15:54:56

标签: opengl gtk gtk3 gnome gtkmm3

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

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

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

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

有没有解决方案?

操作系统:Fedora 23 GTK版本3.18

编辑: 操作系统(Fedora 23)正在使用OpenGL 2.1(通过glxinfo检查),并考虑到GTK +源上给出的演示,我假设GTK使用GL 3.0+作为默认值。 是否有任何方法可以覆盖这个?(根据ebassi的回答,从GTK + 3.20 GdkGLContext开始,如果核心配置文件不可用,将会回到遗留配置文件。将测试为很快我升级到GTK + 3.20)

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

2 个答案:

答案 0 :(得分:1)

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

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

您不能自己选择遗留上下文,因为无法与旧版本共享核心配置文件,GDK会在内部创建GL上下文以进行绘制。

答案 1 :(得分:0)

您可以使用EGL将旧版(3.0之前的)OpenGL版本与GtkDrawingArea一起使用

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