【发布时间】:2016-05-23 01:40:09
【问题描述】:
晚上好。
我正在远程计算机上设置我的游戏项目,但遇到了 SDL 问题。我正在使用 SDL 2.0,我试图弄清楚为什么当我有 2 台显示器连接到我的 PC 时 SDL_GetNumVideoDisplays() 返回 1。我正在运行 Ubuntu 14.04 LTS,两个显示器似乎都配置正确,只是正常使用桌面。
不胜感激有关在何处解决此问题的提示。谢谢。
更新 1 - ./configure 用于 SDL2-2.0.4 源代码:
在配置脚本中寻找有关 X11 的内容,并看到以下内容:
checking for X11/extensions/Xext.h... yes
-- dynamic libX11 -> libX11.so.6
-- dynamic libX11ext -> libXext.so.6
checking for const parameter to XextAddDisplay... yes
checking for XGenericEvent... yes
checking for XkbKeycodeToKeysym in -lX11... yes
checking for X11/Xcursor/Xcursor.h... no
checking for X11/extensions/Xdbe.h... yes
checking for X11/extensions/Xinerama.h... no
checking for X11/extensions/XInput2.h... no
checking for X11/extensions/scrnsaver.h... no
checking for X11/extensions/shape.h... yes
checking for X11/extensions/xf86vmode.h... yes
和
X11 libraries : xdbe xshape xvidmode
我的xrandr --version 是:
xrandr program version 1.4.1
Server reports RandR version 1.4
我的安装似乎不支持xrandr --listactivemonitors。
更新 2 - 重新安装操作系统,彻底擦除分区:
当我决定只选择核选项时,今天事情迅速升级。幸运的是,我需要的磁盘上没有任何内容,因为我刚刚克隆了我的 repo,并且没有做出任何值得提交的更改。
在开放驱动程序和专有驱动程序之间交换一天并修改我的 xorg.conf 后,我最终对磁盘进行了核对并安装了 16.04 LTS。我从 ubuntu 存储库安装了 SDL2 运行时,并从 SDL 网站上的 tar 文件安装了 SDL2 开发源。再次运行我的程序,它按预期运行。
我不想将其称为“已解决”,因为我最终对我的操作系统进行了核对,但我想我的问题已经解决了。我只是希望我能弄清楚 SDL 如何获知有多少显示器的信息链。
【问题讨论】:
-
好的,您想要的是
<X11/extensions/Xrandr.h>,请致电XRRGetMonitors... 现在,SDL 是否有此功能?我看到一堆 other XRandR 调用,但不是那个...... -
嗯,但 SDL 确实 调用
XRRGetScreenResources,其中包含有关“输出”的信息,这可能是您想要的……请注意,SDL 会预先添加 all 带有X11_的符号,因为dlopen诡计。 -
... 除了那会调用
SDL_AddVideoDisplay并影响SDL_GetNumVideoDisplays的返回值,这是你首先问的。那么,您是如何获得 SDL 的编译副本的呢?如果你自己编译,也许你错过了一些标题? -
是的,我是从源代码编译的。当我为 SDL2 执行 ./configure 时,我会检查当前打印的内容,看看是否能找到线索。
-
我最终彻底清除了我的操作系统并安装了 Ubuntu 16.04 LTS。
SDL_GetNumVideoDisplays()现在可以正确报告 2 个显示。我有点希望我知道老问题出在哪里,但我不再有它了。我很确定它在我的/etc某处。
标签: c++ ubuntu sdl-2 multiple-monitors