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 个问题,一个在示例代码中。
- 第一个是 SDL_GetNumDisplayModes() 必须在之后调用
该视频系统已初始化
- 第二个,No available video device,一个问题就是
在 Whosebug 和网络上非常普遍,是
缺少 libgl1-mesa-glx
所以,对于没有可用的视频设备错误你需要xorg-dev libx11-dev libgl1-mesa-glx库,也许 xorg-dev 安装 libx11-dev
基本上,当 运行 在 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 个问题,一个在示例代码中。
- 第一个是 SDL_GetNumDisplayModes() 必须在之后调用 该视频系统已初始化
- 第二个,No available video device,一个问题就是 在 Whosebug 和网络上非常普遍,是 缺少 libgl1-mesa-glx
所以,对于没有可用的视频设备错误你需要xorg-dev libx11-dev libgl1-mesa-glx库,也许 xorg-dev 安装 libx11-dev