web-dev-qa-db-fra.com

Kivy ne détecte pas OpenGL 2.0

J'ai décidé de faire de la programmation sur plusieurs plates-formes de Kivy et j'ai installé Kivy sur mon ordinateur avec succès. Le problème est que lorsque je lance mon code, j'obtiens cette erreur: 

[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.

Et cette boîte d'erreur apparaît:

Kivy Fatal Error

J'ai vérifié la version OpenGL de mon GPU via GPU Caps Viewer en me vérifiant jusqu'à OpenGL version 2.1, mais Kivy ne détecte pas OpenGL 2.1 en quelque sorte et utilise par défaut GDI Generic de Microsoft. J'ai fait des recherches sur Internet et découvert que le meilleur moyen de résoudre ce problème consiste à mettre à jour le pilote de votre carte graphique auprès du fabricant de votre carte graphique, mais cela n'a pas fonctionné dans mon cas. 

J'ai mis à jour mes pilotes graphiques (j'utilise NVIDIA GeForce GT 435M sous Windows 8 64 bits). 

Ma question est la suivante: Y a-t-il un moyen de laisser Kivy passer du pilote GDI générique au pilote NVIDIA? Ou y a-t-il un problème ailleurs?

12
M Brank

Sur Windows 7 pro 32bit ajouter Config.set('graphics', 'multisamples', '0') résolu pour moi l'erreur. (Mise à jour: Ceci fonctionne également sur 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 __== '__main__':
    MyApp().run()

Après le changement, la version OpenGL est rapportée correctement:

[INFO] [GL] L'initialisation de GLEW a réussi 

[INFO] [GL] Version OpenGL <2.1.0 - Build 8.15.10.2281>

12
576i

Fond d'angle pour py3.5 + 

pip install kivy.deps.angle 
set KIVY_GL_BACKEND=angle_sdl2

Il fonctionne parfaitement sur Windows 10 et sa solution pour le problème ci-dessus. Le multi-échantillon ne fonctionnera pas dans mon cas

5
Yash

J'utilise Python 3.6 et Windows 8.1. Fonctionne sur Windows 10 également.
cette solution résout le problème dans la plupart des cas:
.
1. Faites un clic droit sur Ce PC puis ouvrez Propriétés.
2. Allez à Paramètres système avancés.
3. Cliquez sur Variables d'environnement.
4. Cliquez sur Nouveau dans Variables utilisateur pour ---.
5. Mettez KIVY_GL_BACKEND dans Nom de la variable.
6. Mettez angle_sdl2 dans Valeur de la variable.
7. Redémarrez Python.

Voici une vidéo YouTube illustrant ces étapes: https://www.youtube.com/watch?v=ATK9w2AiDeM

3
Khaled Dallah

Changer la valeur de la clé multisamples dans le fichier de configuration (% HOMEPATH% \. Kivy\config.ini pour moi) de multisamples = 2 en multisamples = 0 .

2
Sergei Kuznetcov

Cela semble être un bogue connu dans la version actuelle de kivy et est déjà signalé dans leur suivi des problèmes . Donc, je suppose qu’il n’ya pas de moyen (facile) de résoudre ce problème. Revenir à une version plus ancienne pourrait aider.

2
BDL

mettez cela dans votre code et ça va marcher 

de kivy import Config

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