我试图让GTK + 3.16的新GLArea小部件工作。它旨在提供内置的OpenGL支持而不依赖于过时的GtkGLExt/GtkGLArea项目。由于我不愿意将我的工作发布更新到Gnome 3.16,所以我使用Gnome Box在虚拟机上安装了Fedora 22 Alpha。GtkGLArea:找不到GL_ARB_create_context_profile扩展
继ebassi's blog post我添加了一个GLArea孩子我的窗口UI文件:
<child>
<object class="GtkGLArea" id="gl_drawing_area">
<signal name="realize" handler="gl_init" swapped="yes"/>
<signal name="unrealize" handler="gl_fini" swapped="yes"/>
<signal name="render" handler="gl_draw" swapped="yes"/>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
连接的信号。我应该说我正在使用Vala来处理我的UI代码。实际的OpenGL代码是打算进入一个C函数,我会从gl_draw
Vala方法调用。目前,三个Vala函数只是打印他们的名字。
确实,gl_init
和gl_fini
被调用。但GLArea件显示此错误消息:
的GLX_ARB_create_context_profile扩展创造核心配置文件需要的是不可用
我也想跑ebassi的自己example program (GitHub)。它甚至不显示UI但输出
glarea:无法找到当前的GLX或EGL上下文。
立即在终端上。
但是,运行glxinfo
告诉我,我得到了扩展安装:
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_make_current_read
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
...
glxgears
运行也没有问题。
此外,我克隆了GNOME/gtkglarea repo in Github,自己编译并运行示例没有任何问题。
我知道这个项目在它正式被包含在GTK中之前开发了GLArea小部件吗?
(我错了。)
您提供的'glxinfo'输出没有_not_ list GLX_ARB_create_context_profile'可用。你的服务器显然缺乏对此的支持。基本上,您只能同时使用客户端和服务器支持的内容。这也是为什么'glxinfo'在“server glx extensions”和“client glx extensions”之后明确列出“GLX扩展”的原因。 – derhass 2015-04-02 15:24:13