问题描述
基本上,在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个问题,示例代码中有一个。
- 第一个是必须在之后调用 SDL_GetNumDisplayModes() 视频系统已经初始化
- 第二个,没有可用的视频设备,这是一个问题 在stackoverflow和网络上非常普遍的是 libgl1-mesa-glx 丢失
因此,对于没有可用的视频设备错误,您需要 xorg-dev libx11-dev libgl1-mesa-glx 库,也许xorg-dev安装了libx11-dev >