【发布时间】:2020-10-02 15:33:35
【问题描述】:
基本上,SDL 在 VirtualBox 机器中运行时无法获取显示模式。
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 位的。
有办法解决吗?
【问题讨论】:
-
您在来宾系统上运行 x11 吗?您可以运行任何其他 x11 程序吗?如果你想做一些非常具体的事情,你应该在问题中描述它。
-
我报告的代码不是一个非常具体的应用程序
-
是的,但是像“需要使用帧缓冲设备而不是 x11”这样的东西。甚至将硬件加速的 GL 传递给 VM 也是不寻常的事情。就目前而言,我不知道你的环境和目标是什么。
-
我想使用虚拟机来开发 SDL 应用程序。但如果我不能运行/调试应用程序,它就没有用了。我没有具体要求,我想查看我的应用程序的视频/音频输出,如果我可以使用其他方式没关系,x11 不是请求
-
$ loginctl show-session c2 -p Type-->Type=x11
标签: c virtual-machine virtualbox sdl-2