SDL2无法在虚拟机内部获得显示模式没有可用的视频设备

问题描述

基本上,在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

在Ubuntu 18.04 64位主机中运行Ubuntu 18.04 64位来宾的VirtualBox机器。应用程序是32位。

有办法解决吗?

解决方法

解决方案

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

  1. 第一个是必须在之后调用 SDL_GetNumDisplayModes() 视频系统已经初始化
  2. 第二个,没有可用的视频设备,这是一个问题 在stackoverflow和网络上非常普遍的是 libgl1-mesa-glx 丢失

因此,对于没有可用的视频设备错误,您需要 xorg-dev libx11-dev libgl1-mesa-glx 库,也许xorg-dev安装了libx11-dev >