Kivy没有检测到OpenGL 2.0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kivy没有检测到OpenGL 2.0相关的知识,希望对你有一定的参考价值。

我决定在Kivy跨平台上做一些编程,并成功地在我的计算机上安装了Kivy。问题是,当我运行我的代码时,我收到此错误:

[INFO              ] [Kivy        ] v1.9.1
[INFO              ] [Python      ] v3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AMD64)]
[INFO              ] [Factory     ] 179 symbols loaded
[INFO              ] [Image       ] Providers: img_tex, img_dds, img_gif, img_sdl2 (img_pil, img_ffpyplayer ignored)
[INFO              ] [OSC         ] using <thread> for socket
[INFO              ] [Window      ] Provider: sdl2
[INFO              ] [GL          ] GLEW initialization succeeded
[INFO              ] [GL          ] OpenGL version <b'1.1.0'>
[INFO              ] [GL          ] OpenGL vendor <b'Microsoft Corporation'>
[INFO              ] [GL          ] OpenGL renderer <b'GDI Generic'>
[INFO              ] [GL          ] OpenGL parsed version: 1, 1
[CRITICAL          ] [GL          ] Minimum required OpenGL version (2.0) NOT found!

OpenGL version detected: 1.1

Version: b'1.1.0'
Vendor: b'Microsoft Corporation'
Renderer: b'GDI Generic'

Try upgrading your graphics drivers and/or your graphics hardware in case of problems.

The application will leave now.

弹出此错误框:

我已经通过GPU Caps Viewer检查了我的GPU的OpenGL版本,验证了我的OpenGL版本2.1,但Kivy不知何故检测到OpenGL 2.1并默认使用Microsoft的GDI Generic。我在互联网上做了一些研究,发现解决这个问题的最佳方法是从你的图形卡制造商处更新你的图形卡的驱动程序,但这在我的情况下不起作用。

我更新了我的图形驱动程序(我在64位Windows 8上运行NVIDIA GeForce GT 435M)。

我的问题是:有没有办法让Kivy从GDI Generic驱动程序切换到NVIDIA驱动程序?或者其他地方有问题吗?

答案

在Windows 7专业版32位上添加Config.set('graphics', 'multisamples', '0')解决了我的错误。 (更新:这也适用于Windows 10.)

import kivy 
kivy.require('1.9.1') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.label import Label

# add the following 2 lines to solve OpenGL 2.0 bug
from kivy import Config
Config.set('graphics', 'multisamples', '0')


class MyApp(App):

    def build(self):
        return Label(text='Hello world')

if __name__ == '__main__':
    MyApp().run()

更改后,正确报告OpenGL版本:

[INFO] [GL] GLEW初始化成功

[INFO] [GL] OpenGL版本<2.1.0 - Build 8.15.10.2281>

另一答案

py3.5 +的角度后端

pip install kivy.deps.angle 
set KIVY_GL_BACKEND=angle_sdl2

它完美适用于Windows 10及其针对上述问题的解决方案。多重采样在我的情况下不起作用

另一答案

我使用Python 3.6和Windows 8.1。适用于Windows 10。 此解决方案在大多数情况下解决了问题: 。 1.右键单击此PC,然后打开属性。 2.转到高级系统设置。 3.单击Environment Variables。 4.单击用户变量中的新建---。 5.将KIVY_GL_BACKEND放在变量名称中。 6.将angle_sdl2置于Variable值中。 7.重启Python。

以下是显示以下步骤的YouTube视频:https://www.youtube.com/watch?v=ATK9w2AiDeM

另一答案

这似乎是当前版本的kivy和is already reported in their issue tracker中的已知错误。所以我想没有(简单的)方法来解决这个问题。切换回旧版本可能会有所帮助。

另一答案

将配置文件(%HOMEPATH%。kivy config.ini)中的多重采样键值从multisamples = 2更改为multisamples = 0。

另一答案

如果你还有问题,试试这个:

    import os
    os.environ['KIVY_GL_BACKEND'] = 'angle_sdl2'

它对我有用(win10,opengl3.1,py3.6)

另一答案

把它放在你的代码中,它会工作

来自kivy import Config

Config.set('graphics', 'multisamples', '0')
另一答案

我记得通过改变屏幕的颜色深度来解决这个问题(从16bit到32bit,反之亦然)。

另一答案

首先,我使用的是Python 3.7。

我首先按照以下说明操作:

  1. 右键单击此PC,然后打开属性。
  2. 转到高级系统设置。
  3. 单击Environment Variables。
  4. 单击用户变量中的新建---。
  5. KIVY_GL_BACKEND放在变量名中。
  6. angle_sdl2放在变量值中。
  7. 重启Python

然后我在Windows 10上的IDE中运行以下命令,它对我有用

from kivy import Config
Config.set('graphics', 'multisamples', '0')
import os
os.environ['KIVY_GL_BACKEND'] = 'angle_sdl2'
import kivy
from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):
    def build(self):
        return Label(text="Tech With Me")

if __name__== "__main__":
    MyApp().run()

以上是关于Kivy没有检测到OpenGL 2.0的主要内容,如果未能解决你的问题,请参考以下文章

用于模糊的 OpenGL ES 2.0 片段着色器速度慢且质量低

OpenGL ES 2.0 Framebuffer 渲染到纹理 iOS:没有显示

切换到使用交错 VBO - 编译但没有绘制 - opengl es 2.0

OpenGL没有将最近的片段绘制到相机

OpenGL着色器没有将变量从顶点传递到片段着色器

Android OpenGL ES 2.0 重用前一帧