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.

И появляется это окно ошибки:

Kivy Fatal Error

Я проверил версию OpenGL моего GPU через GPU Caps Viewer, проверив меня до версии OpenGL версии 2.1, но Kivy каким-то образом не обнаруживает OpenGL 2.1 и по умолчанию использует GDI Generic от Microsoft. Я провел некоторое исследование в Интернете и выяснил, что лучший способ решить эту проблему - обновить драйвер графической карты от производителя графической карты, но это не помогло мне.

Я обновил свои графические драйверы (я запускаю NVIDIA GeForce GT 435M на 64-битной Windows 8).

Мой вопрос: Есть ли способ, чтобы Kivy переключился с GDI Generic на драйвер NVIDIA? Или есть проблема где-то еще?

Ответ 1

В 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 >

Ответ 2

Угловой бэкэнд для py3.5 +

pip install kivy.deps.angle 
set KIVY_GL_BACKEND=angle_sdl2

Он отлично работает на Windows 10 и его решении для вышеупомянутой проблемы. Мультисэмпл не будет работать в моем случае

Ответ 3

Я использую Python 3.6 и Windows 8.1. Работает на Windows 10 также.
Такое решение решает проблему в большинстве случаев:
,
1. Щелкните правой кнопкой мыши на этом ПК, затем откройте Свойства.
2. Перейдите в Расширенные настройки системы.
3. Нажмите на Переменные среды.
4. Нажмите New в пользовательских переменных для ---.
5. Поместите KIVY_GL_BACKEND в Имя переменной.
6. Поместите angle_sdl2 в значение переменной.
7. Перезапустите Python.

Вот видео на YouTube, показывающее эти шаги: https://www.youtube.com/watch?v=ATK9w2AiDeM

Ответ 4

Если проблема не устранена, попробуйте это:

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

у меня это сработало (win10, opengl3.1, py3.6)

Ответ 5

Это, кажется, известная ошибка в текущей версии kivy, и уже сообщается в своем трекер-проблеме. Поэтому я думаю, что нет (простого) способа решить эту проблему. Может помочь переход на более старую версию.

Ответ 6

Измените значение ключа multisamples в файле конфигурации (% HOMEPATH% \. kivy\config.ini для меня) от multisamples = 2 до multisamples = 0.

Ответ 7

поместите это в свой код, и он будет работать

из kivy import Config

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

Ответ 8

Для старой встроенной графики, такой как Intel GMA 965 в Windows 10:

в дополнение к установке мультисэмплов в 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/6 и fooobar.com/questions/17827403/...)

Ответ 9

Помню, что я работал над этой ошибкой, изменяя глубину цвета экрана (от 16 до 32 бит или наоборот).

Ответ 10

Прежде всего, я использую Python 3.7.

Сначала я следовал приведенным ниже инструкциям:

  1. Щелкните правой кнопкой мыши на этом ПК, затем откройте Свойства.
  2. Зайдите в Расширенные настройки системы.
  3. Нажмите на переменные среды.
  4. Нажмите на Новый в пользовательских переменных для ---.
  5. Поместите KIVY_GL_BACKEND в Имя переменной.
  6. Поместите angle_sdl2 в значение переменной.
  7. Перезапустите Python

Затем я запускаю следующее в моей IDE на Windows 10, и это работает для меня

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()