Cargar los punteros de GL por EGL en vez de por GLX. El `glad` que OBS trae hace, en Linux, `dlopen("libGL.so.1")` y busca dentro `glXGetProcAddressARB`; si no lo encuentra, `open_gl()` devuelve 0, `gladLoadGL()` falla y el renderer de OpenGL no arranca. Eso ata a OBS a GLX —y por lo tanto a X11— incluso corriendo en una sesión Wayland pura, que es la única que esta distro tiene: acá nadie publica `libGL.so.1` (mesa va `glx=disabled`) y el libglvnd del corpus se construye SIN GLX a propósito, para no arrastrar libX11/libxcb al catálogo compartido. EGL 1.5 resuelve funciones de GL de escritorio por `eglGetProcAddress`, que es lo que OBS ya usa en `gl-egl-common.c` para las extensiones. El parche cambia la librería y el símbolo; la firma es la misma (`void *(*)(const char *)`), así que el resto de glad queda intacto. --- a/deps/glad/src/glad.c +++ b/deps/glad/src/glad.c @@ -48,7 +48,7 @@ "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" }; #else - static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; + static const char *NAMES[] = {"libEGL.so.1", "libEGL.so"}; #endif unsigned int index = 0; @@ -60,7 +60,7 @@ return 1; #else gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, - "glXGetProcAddressARB"); + "eglGetProcAddress"); return gladGetProcAddressPtr != NULL; #endif }