我目前正在为我的新项目寻找一个不错的 GUI 框架——Kivy 看起来相当不错。
关于 Kivy 需要 OpenGL >2.0(不接受 1.4)以及由此产生的问题,这里有很多问题(比如 this one)。据我了解,图形驱动程序负责提供合适的 OpenGL 版本。
我担心将我的应用程序部署到具有特定配置的用户时会遇到什么问题,他们将不愿意或不能在他们的桌面上安装 OpenGL >2.0。
首先,在 Windows 上部署 OpenGL 不会有问题。那里有很好的支持。
但是我特别担心安装了 Ubuntu (14.4 LTS) 以及来自 Ubuntu 的最新 Nvidia 二进制驱动程序 的人(像我一样)。它只是目前最好的驱动程序,具有最好的性能(仍然远远优于恕我直言的新手)..
似乎(或者我错了?那太好了)这个驱动程序只提供 OpenGL 1.4
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions: [...]
所以我的问题有两个方面
- 我是不是只支持 OpenGL 1.4 的 nvidia 二进制驱动程序错了?
- 如果是,那么这是否会将许多具有相当普通配置的用户(所有使用 Nvidia 卡的 Ubuntu 用户)排除在能够使用我的 Kivy 应用程序的人之外? 有什么办法可以避免这种情况?
我知道 OpenGL 1.4 是愚蠢的老东西,但驱动程序和硬件也是最新的(GTX 770,相当野兽...)。
已安装的驱动程序:
root@host:/home/user# apt-cache policy nvidia-331-updates
nvidia-331-updates:
Installed: 331.38-0ubuntu7
Candidate: 331.38-0ubuntu7
Version table:
英伟达信息:
Version: 331.38
Release Date: 2014.1.13
我真的希望我错了..
编辑 有人说 1.4 是 GLX 版本,不是 OpenGL 版本。我现在看到了 - 但我认为它是 1.4,因为当我尝试从 dist 执行一个例子,我得到这个错误:
vagrant@ubuntu-14:/usr/local/share/kivy-examples/guide/firstwidget$ python 1_skeleton.py
[WARNING] [Config ] Older configuration version detected (0 instead of 10)
[WARNING] [Config ] Upgrading configuration in progress.
[INFO ] [Logger ] Record log in /home/vagrant/.kivy/logs/kivy_14-06-28_0.txt
[INFO ] Kivy v1.8.1-dev
[INFO ] [Python ] v2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2]
[INFO ] [Factory ] 169 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored)
[INFO ] [Window ] Provider: pygame(['window_egl_rpi'] ignored)
libGL error: failed to load driver: swrast
[INFO ] [GL ] OpenGL version <1.4 (2.1.2 NVIDIA 331.38)>
[INFO ] [GL ] OpenGL vendor <NVIDIA Corporation>
[INFO ] [GL ] OpenGL renderer <GeForce GTX 770/PCIe/SSE2>
[INFO ] [GL ] OpenGL parsed version: 1, 4
[CRITICAL] [GL ] Minimum required OpenGL version (2.0) NOT found!
OpenGL version detected: 1.4
Version: 1.4 (2.1.2 NVIDIA 331.38)
Vendor: NVIDIA Corporation
Renderer: GeForce GTX 770/PCIe/SSE2
Try upgrading your graphics drivers and/or your graphics hardware in case of problems.
所以它实际上将我的 OpenGL 版本解析为 1.4..
编辑 2:我从今天(6 月 28 日)开始从 github(master 分支)运行 Kivy,所以这应该是相当新的 ;-)
请您参考如下方法:
那不是 OpenGL 版本!这是 GLX版本。 AFAIK GLX 1.4 是最新版本。您可以使用 glxinfo 命令来检查所有版本号。在我的机器上,我得到:
$glxinfo | grep 'GLX version'
GLX version: 1.4
$glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile
OpenGL version string: 2.1 Mesa 10.1.3
OpenGL shading language version string: 1.20
OpenGL extensions:
另见 How can I check my OpenGL version?了解更多详情。
总结:您不必担心 OpenGL 2.0 的兼容性。现在几乎所有设备都支持 OpenGL 2.0。例如,只有 0.1% of Android devices仅支持 OpenGL 1.1 版。
