Kivy OpenGL requirements feasible for deployment?

纵饮孤独 提交于 2020-01-05 08:24:29

问题


I'm currently in the process of finding a nice GUI framework for my new project - and Kivy looks quite good.

There are many questions here (like this one) about Kivy requiring OpenGL >2.0 (not accepting 1.4) and problems arising from that. As I understood, it's the graphics drivers thing to provide a decent OpenGL version.

I'm concerned what problems I'll have deploying my app to users having a certain configuration, that they will not be willing or able to have OpenGL >2.0 on their desktop.

First off, deploying on Windows in regard to OpenGL would not be a problem.. Good support there.

But I'm specifially concerned about people (like me) having an Ubuntu installation (14.4 LTS) with the latest Nvidia binary driver from Ubuntu. It's just the best driver currently, having the best performance (still far superior to nouveau IMHO)..

And it seems (or am I wrong? that would be great) that this driver only provides 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: [...]

So my question is two-fold

  1. I'm I maybe wrong the nvidia binary driver only supporting OpenGL 1.4?
  2. If yes, doesn't that exclude many users having a quite common configuration (all Ubuntu users using Nvidia cards) from people able to use my Kivy application? Any way to circumvent that?

I know OpenGL 1.4 is silly old stuff, but the driver is current and the hardware too (GTX 770, quite a beast..)..

Installed driver:

root@host:/home/user# apt-cache policy nvidia-331-updates
nvidia-331-updates:
Installed: 331.38-0ubuntu7
Candidate: 331.38-0ubuntu7
Version table:

Nvidia information:

Version:    331.38
Release Date:   2014.1.13 

I really hope I'm wrong..

EDIT There has been said 1.4 is the GLX version, not the OpenGL version.. I've seen that now - but I thought it's 1.4 because when I try to execute an example from the dist, I get this error:

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.

So it actually parses my OpenGL version as 1.4..

EDIT 2: I'm running Kivy from github (master branch) as of today (28th june), so that should be fairly new ;-)


回答1:


That's not the OpenGL version! It's the GLX version. AFAIK GLX 1.4 is the latest release. You can use the glxinfo command to check all version numbers. On my machine I get:

$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:

See also How can I check my OpenGL version? for further details.

Summary: you don't have to worry about OpenGL 2.0 compatibility. Almost every device has support for OpenGL 2.0 nowadays. For example, only 0.1% of Android devices supports only OpenGL version 1.1.




回答2:


I've answered a very similar question before, here. The answer is pasted below for reference:

Kivy, for which OpenGL 2.0 seems to be mandatory.

Strictly, Kivy targets OpenGL ES 2.0 as the minimum requirement. This is not the same as OpenGL 2.0.

Well, the question is simple. At home I have three computers of which two are quite old with integrated graphics cards, which do not support OpenGL 2.0.

This is fairly unusual nowadays. Even mobile devices have almost all supported it for years (where to be clear, 'it' is the opengl es 2 features that kivy relies on).

The only places you tend to see lack of support are older machines with integrated graphics, like yours, though I have no statistics on how common these are. Any machine with a 'proper' graphics card, or integrated graphics from the last few years (e.g. intel's integrated with sandy bridge etc.), will almost certainly work fine.

I've seen occasional problem in newer machines, e.g. some netbooks with particularly poorly supported graphics chips, but these are very much the exception rather than the norm.

Edit: For reference, Google seems to claim that 99.9% of devices support OpenGL ES 2 (at the time of writing).

Overall, it's extremely unlikely that you (or indeed, anyone who uses your application) would have any problems related to this.



来源:https://stackoverflow.com/questions/24351087/kivy-opengl-requirements-feasible-for-deployment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!