我試圖讓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