26
Авг

glfw и VirtualBox

   Posted by: admin   in OpenGL

Давным давно образовалась у меня проблема — игры не работают в VirtualBox. Проблема не решилась даже тогда, когда в VirtualBox появилась поддержка OpenGL. Единственным решением для разработки игр было использование Mesa в режиме программной эмуляции OpenGL. Наконец то я смог разобраться в причинах этой проблемы. Как оказалось разработчики VirtualBox уже долгое время не фиксят одну маленькую проблему. И, разумеется, glfw использует именно функцию glxGetFBConfigAttrib и не получает флага GLX_WINDOW_BIT после чего считает что не возможно создать окно.

Для решения данной проблемки можно использовать небольшой патч:

diff -Nru glfw-2.7.2/lib/x11/x11_window.c glfw-2.7.new/lib/x11/x11_window.c
--- glfw-2.7.2/lib/x11/x11_window.c     2011-05-07 18:31:42.000000000 +0400
+++ glfw-2.7.new/lib/x11/x11_window.c   2011-08-25 17:02:59.374634128 +0400
@@ -484,11 +483,12 @@
 continue;
 }

+        /* Vbox will never return GLX_WINDOW_BIT. We may check for GLX_PIXMAP_BIT here, or just ignore it, since we got VISUALID it should be fine.
 if( !( getFBConfigAttrib( fbconfigs[i], GLX_DRAWABLE_TYPE ) & GLX_WINDOW_BIT ) )
 {
 // Only consider window GLXFBConfigs
 continue;
-        }
+        }*/

 result[*found].redBits = getFBConfigAttrib( fbconfigs[i], GLX_RED_SIZE );
 result[*found].greenBits = getFBConfigAttrib( fbconfigs[i], GLX_GREEN_SIZE );

Данный патч можно применить не только к ветке 2.7 но и к 2.6 (данный код не претерпел значительных изменений). Возможно потребуется поправить вручную. После применения патча окно успешно создается.

This entry was posted on Пятница, 26 августа, 2011 at 10:55 and is filed under OpenGL. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed at this time.