【问题标题】:Kivy does not detect OpenGL 2.0 [closed]Kivy 未检测到 OpenGL 2.0 [关闭]
【发布时间】:2016-04-30 10:15:57
【问题描述】:

我决定在 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 通用驱动程序切换到 NVIDIA 驱动程序?还是其他地方有问题?

【问题讨论】:

  • 您是通过 Windows 内置的更新功能更新显卡驱动程序,还是访问 NVidia 网站,手动下载驱动程序安装程序并执行?对于 OpenGL,总是后做,因为出于某种原因,Microsoft 会从通过 Windows 的自动驱动程序安装过程安装的驱动程序中剥离 OpenGL 部分。

标签: python opengl opengl-es kivy


【解决方案1】:

如果你仍然有问题,试试这个:

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

它对我有用(Windows 10、OpenGL 3.1、Python 3.6)。

【讨论】:

    【解决方案2】:

    在 windows 7 pro 32bit 上添加 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 版本

    【讨论】:

    • 请注意,kivy 配置行应该在脚本的顶部,在任何其他 Kivy 导入之前,否则它将不起作用!另一种方法是使用 Sergei 的方法来修改 kivy 配置文件,see below.
    • 这对人们仍然有效吗?我在 Windows 10 上尝试过,但没有成功,但 Jack Newbile 的回答如下。
    【解决方案3】:

    我使用 Python 3.6 和 Windows 8.1。也适用于 Windows 10。
    此解决方案在大多数情况下都可以解决问题:
    .
    1. 右击This PC,然后打开Properties
    2. 转到高级系统设置
    3. 点击环境变量
    4. 点击User variables for ---中的New
    5. 将KIVY_GL_BACKEND放入变量名中。
    6. 将angle_sdl2放入变量值中。
    7. 重启 Python .

    这是一个展示这些步骤的 YouTube 视频: https://www.youtube.com/watch?v=ATK9w2AiDeM

    【讨论】:

      【解决方案4】:

      py3.5+ 的角度后端

      pip install kivy.deps.angle 
      set KIVY_GL_BACKEND=angle_sdl2
      

      它在 Windows 10 上完美运行,并解决了上述问题。 Multisample 在我的情况下不起作用

      【讨论】:

      • 可以在设置 KIVY_GL_BACKEND 环境变量并运行后启动 pycharm。可以在 python 代码中设置吗?
      【解决方案5】:

      将配置文件(我是 %HOMEPATH%\.kivy\config.ini)中的 multisamples 键值从 multisamples = 2 更改为 multisamples = 0

      【讨论】:

        【解决方案6】:

        首先,我使用的是 Python 3.7。

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

        1. 右键单击此电脑,然后打开属性。
        2. 转到高级系统设置。
        3. 点击环境变量。
        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()
        

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

            从 kivy 导入配置

            Config.set('graphics', 'multisamples', '0')
            

            【讨论】:

              【解决方案9】:

              对于旧的嵌入式显卡,如 Windows 10 上的 Intel GMA 965:

              除了将多重采样设置为 0,
              尝试 pal1000 https://github.com/pal1000/save-legacy-intel-graphics 的修复工具

              (更多信息请访问https://community.khronos.org/t/i-have-opengl-3-1-but-kivy-says-that-i-have-only-1-1/103980/6https://stackoverflow.com/a/57406551/11284684

              【讨论】:

                【解决方案10】:

                尝试为用户添加环境变量 变量名 - KIVY_GL_BACKEND 变量值-angle_sd12

                我看到当您在 pip 或 conda 的虚拟环境中安装 kivy 时出现此错误。

                【讨论】:

                  【解决方案11】:

                  我正在使用 pyinstaller 打包我的应用程序,但以上都不能在我的 Windows 10 机器上运行 Python 应用程序。

                  进一步搜索后,这就是解决我问题的方法。

                  导航到您的应用程序 (.exe) 所在的 dist 文件夹。 删除以您的应用名称命名的.manifest 文件,即(myappname.exe.manifest)。

                  Error 现在应该没有了,从 90 年代的机器开始,OPenGL 就会被发现!

                  【讨论】:

                    【解决方案12】:

                    作为一种快速解决方法,试试这个。

                    # Keep these two lines until you find what the real solution is
                    import os
                    os.environ['KIVY_GL_BACKEND'] = 'angle_sdl2'
                    
                    from kivy.app import App
                    App().run()
                    

                    【讨论】:

                    • 这是格式错误的纯代码还是格式怪异的散文?无论哪种方式,它都可以从散文中的一些额外解释中受益。
                    • 至少有两个其他答案似乎暗示了这一点,还有更多细节,而且是四年多以前。
                    【解决方案13】:

                    我遇到了和上面说的一样的问题。只需将angle_sdl2 添加到用户环境变量就足以解决问题——它对我有用。

                    【讨论】:

                      【解决方案14】:

                      以上都不适合我。 当我使用: os.environ['KIVY_GL_BACKEND'] = 'angle_sdl2'

                      我收到一个错误: sdl2 - RuntimeError: b'Could not initialize OpenGL / GLES library'

                      当我只使用: Config.set('graphics', 'multisamples', '0')

                      我明白了:

                      OpenGL version detected: 1.1
                      
                      Version: b'1.1.0'
                      Vendor: b'Microsoft Corporation'
                      Renderer: b'GDI Generic
                      

                      它发生在安装了我的 App.exe 的六分之二的机器上。我尝试安装最新的软件包kivy 1.11.1kivy.deps.sdl2 2.0.0,结果是一样的。删除 .exe.manifest 文件也不行。

                      【讨论】:

                        【解决方案15】:

                        我记得我曾通过更改屏幕的颜色深度(从 16 位到 32 位,反之亦然)来解决这个错误。

                        【讨论】:

                        • 这在 windows 7 pro 32 位上对我不起作用:我在 32 位上收到错误消息,在 16 位上我得到“无法获取窗口”
                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2018-01-03
                        • 1970-01-01
                        • 2013-10-07
                        • 1970-01-01
                        相关资源
                        最近更新 更多