SDL2 无法在虚拟机中获取显示模式(没有可用的视频设备)

SDL2 fails to get display mode inside virtual machine (No available video device)

基本上,当 运行 在 VirtualBox 机器中时,SDL 无法获取显示模式。

SDL_GetNumDisplayModes() 报告 -1 失败然后 SDL_InitSubSystem(SDL_INIT_VIDEO) 失败没有可用的视频设备

int main(void)
{
    int numberOfDrivers = SDL_GetNumVideoDrivers();
    printf("Number of drivers: %d\n", numberOfDrivers);

    for (int i = 0; i < numberOfDrivers; i++)
        printf("Driver name: %s\n", SDL_GetVideoDriver(i));

    int numberOfDisplays = SDL_GetNumVideoDisplays();
    printf("Number of displays: %d\n", numberOfDisplays);

    printf("Display 0 mode: %d\n", SDL_GetNumDisplayModes(0));

    if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
        SDL_Log("SDL fails to initialize video subsystem!\n%s", SDL_GetError());

    return 0;
}

这是输出:

Number of drivers: 2
Driver name: x11
Driver name: dummy
Number of displays: 0
Display 0 mode: -1
INFO: SDL fails to initialize video subsystem!
No available video device
Unable to initialize system

VirtualBox 机器 运行 Ubuntu 18.04 64 位客户机内部 Ubuntu 18.04 64 位主机。应用程序是 32 位的。

有没有办法解决?

解决方案

有 2 个问题,一个在示例代码中。

  1. 第一个是 SDL_GetNumDisplayModes() 必须在之后调用 该视频系统已初始化
  2. 第二个,No available video device,一个问题就是 在 Whosebug 和网络上非常普遍,是 缺少 libgl1-mesa-glx

所以,对于没有可用的视频设备错误你需要xorg-dev libx11-dev libgl1-mesa-glx库,也许 xorg-dev 安装 libx11-dev