Three.js: Erreur lors de la création du contexte WebGL

Créé le 16 juin 2014  ·  64Commentaires  ·  Source: mrdoob/three.js

Je reçois

Erreur lors de la création du contexte WebGL.
Uncaught TypeError : impossible de lire la propriété 'getExtension' de null

sur http://threejs.org/examples et mon site http://arefin.in ( r58 ).
chrome://gpu/ affiche tout ce qui est activé.

Selon vous, qu'est-ce qui ne va pas ?

Browser Issue

Commentaire le plus utile

Pareil pour moi. J'ai découvert que mon GPU (Intel HD 3000) est désormais blacklisté sur Chrome (vérifiez le vôtre sur chrome://gpu/). Je suis allé sur chrome://flags/ et j'ai activé le drapeau --ignore-gpu-blacklist . Maintenant, tout est revenu à la normale.

Tous les 64 commentaires

Vous devriez partager les spécifications de votre système. (CPU, OS, modèle de carte graphique, version des pilotes, navigateur...)

AMD FX-4130, Win 7 build 7600, GeForce GTX 650 exécutant le 9.18.13.2018, Chrome 35.0.1916.153 m.
Les choses allaient bien il y a environ une semaine. Je gère mon site web depuis mai 2013.

Derniers pilotes ? Essayé sur un autre navigateur ?

Je veux dire, si les choses fonctionnaient et que vous n'avez pas modifié le code, c'est probablement quelque chose lié au système d'exploitation, au navigateur et/ou aux pilotes graphiques...

Je pense que le dernier canal de développement Chrome sur Windows fait quelque chose de drôle après la mise à jour. Après la mise à jour à l'instant, threejs ne peut créer le contexte webgl sur aucun exemple - fonctionnait bien juste avant la mise à jour.

Chrome version 37.0.2054.2 dev-m (64 bits)
Windows 8.1 64 bits
Série ATI Radeon HD 6800
Version d'emballage du pilote ATI 14.10.1006-140417a-171099C

chrome://gpu montre
"WebGL : non disponible. Accélération matérielle non disponible"
Cela montre également que l'indicateur --disable-gpu a été transmis à chrome.exe !

Tuer tous les processus chrome.exe et exécuter en exécutant chrome.exe directement (dans C:\Program Files (x86)Google\ChromeApplication) semble résoudre ce problème. Vérifiez vos raccourcis pour vous assurer que le drapeau n'est pas transmis.

Ce n'est peut-être pas le même problème, mais vérifiez-le d'abord si vous voyez ce problème après la mise à jour.

Laisse-moi essayer et je te reviens. J'ai également vu ce problème ici - http://japhr.blogspot.in/2014/05/webgl-in-chrome-36-linux-is-not-working.html

Merci

Maintenant, tout est redevenu normal. Je suppose que les choses se sont corrigées lors de la mise à jour de Chrome ? La plupart des gens n'ont pas été confrontés à ce problème, peut-être seulement une poignée. Pourtant, Chrome devrait résoudre des problèmes comme ceux-ci.
Je suppose que vous pouvez clore ce problème.
Merci

Le redémarrage de Chrome a résolu ce problème pour moi.

J'ai toujours un problème après avoir redémarré Chrome, ma version Chrome 37.0.2062.120 (64 bits).... aidez-moi à résoudre ce problème.

et c'est sur ubuntu linux 13.04

Le dernier Chrome pour Linux est 39.0.2171.95.

J'ai le même problème (Erreur lors de la création du contexte WebGL.) avec la dernière version, 39.0.217.95 (64 bits) sur Ubuntu 14.10.

Désolé de ressusciter ce fil, mais j'ai le même problème (erreur lors de la création du contexte WebGL, impossible de lire la propriété getExtension de null), Chrome 47.0.2526.106 (64), Ubuntu 15.10, nVidia Optimus sur gpu dédié (three.js ne fonctionne pas du tout si je le mets sur intégré). Je m'en fiche car j'utilise généralement Firefox, mais d'autres personnes pourraient le faire et cela m'empêche de tester avec Chrome.

Même problème ici, à la fois sur le canal Dev et Canary, cela se produit depuis des semaines. three.js fonctionne sur FF mais pas sur Chrome. Assez gros problème car j'utilise principalement Chrome.

Chrome 49.0.2609.0 canary (64 bits), 49.0.2593.0 dev-m (64 bits), Windows 8.1, nVidia Optimus

@jwlarocque @GameKyuubi

Dans ces situations, il est préférable de vérifier https://get.webgl.org/. Si cette page ne fonctionne pas, three.js ne peut rien y faire et vous devez plutôt signaler le problème à Google/Chrome.

Ouais c'est cassé là. Vraiment étrange qu'un problème comme celui-ci aille
inaperçu pendant si longtemps tho.
Le 2 janvier 2016 à 17h09, "Mr.doob" [email protected] a écrit :

@jwlarocque https://github.com/jwlarocque @GameKyuubi
https://github.com/GameKyuubi

Dans ces situations, il est préférable de vérifier https://get.webgl.org/. Si ce
la page ne fonctionne pas, il n'y a rien que three.js puisse faire à ce sujet, et vous
devrait plutôt signaler le problème à Google/Chrome.

-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/mrdoob/three.js/issues/4927#issuecomment -168372764.

Je tiens à souligner que sur mon Mac doté d'un GPU Nvidia à commutation, la modification de son comportement de commutation GPU, par exemple avec gfxCardStatus, risque d'empêcher Chrome de créer le contexte jusqu'à ce que vous quittiez Chrome et le rouvrez. C'est une façon de rendre le problème manifeste sur cette machine en particulier.

C'est le type de problème qu'une déconnexion/redémarrage peut souvent résoudre assez bien.

Assurez-vous que cette option est sélectionnée dans vos paramètres Chrome.
screen shot 2016-02-09 at 1 59 46 pm

Oui ce n'est pas du tout le problème. Il a été vérifié tout le temps, le problème persiste même avec la mise à jour la plus récente de Chrome Canary et les pilotes NVIDIA les plus récents.

Cela semble s'être produit de manière aléatoire après avoir effectué des tests intenses sur une application Three.js. Un moment, tout fonctionnait bien, maintenant je ne peux plus charger aucun contexte WebGL. L'accélération matérielle est activée dans les paramètres. Cependant dans chrome://gpu :

Rasterisation : Logiciel uniquement. Accélération matérielle désactivée
Canevas : logiciel uniquement, accélération matérielle non disponible

Des idées?

Je vois aussi ce problème sur Linux. Le redémarrage de Chrome ne résout pas le problème.

J'obtiens la même erreur "Erreur lors de la création du contexte WebGL". sur Chrome 50.0.2661.75 m (64 bits) /Windows 7.
Le pilote devrait être bon puisque je n'ai aucun problème à charger la même page dans Firefox.

@JamesMilnerUK Même problème ici, chargé de nombreux modèles collada, gelé le navigateur jusqu'à ce qu'il se bloque et maintenant je ne peux plus obtenir de contexte WebGL. La fermeture/réouverture de Chrome n'a pas résolu le problème. Avez-vous pu trouver une résolution ?

Edit: trouvé un correctif - a dû décocher l'accélération matérielle, redémarrer, revérifier et redémarrer à nouveau

Commencé par le redémarrage de Chrome et le redémarrage de Mac

Mac - Chrome - Version 52.0.2743.116 (64 bits) - OK

Mac - Chrome Canary - Version 55.0.2850.0 canary (64 bits) - ÉCHEC

THREE.WebGLRenderer: Error creating WebGL context.WebGLRenderer @ three.js:19571
Uncaught TypeError: Cannot read property 'getExtension' of null
    at Object.get (three.js:16906)
    at new WebGLRenderer (three.js:19577)
    at init ((index):59)
    at (index):54
                    case 'WEBGL_depth_texture':
                        extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );
                        break;

J'ai essayé chrome://flags/ et activé celui-ci :

WebGL Draft Extensions Mac, Windows, Linux, Chrome OS, Android
L'activation de cette option permet aux applications Web d'accéder aux extensions WebGL qui sont encore à l'état de brouillon.

Toujours pas de chance...

Canari? Vous devriez probablement signaler la régression au projet Chromium.

S ** T !!!

Mon Chrome mis à jour automatiquement - l'écurie est à 53.0.2785.101 et a cessé de fonctionner, moi aussi...

ÉDITER:

Rapport de bogue : https://bugs.chromium.org/p/chromium/issues/detail?id=645390

Pareil pour moi. J'ai découvert que mon GPU (Intel HD 3000) est désormais blacklisté sur Chrome (vérifiez le vôtre sur chrome://gpu/). Je suis allé sur chrome://flags/ et j'ai activé le drapeau --ignore-gpu-blacklist . Maintenant, tout est revenu à la normale.

Chrome ajoute parfois des pilotes à sa liste noire entre les versions. Mon samsung galaxy s6 n'avait pas webgl 1 mois et le mois suivant, il l'avait fait parce que chrome l'avait supprimé de la liste noire. Les choses peuvent aussi aller dans l'autre sens. Vous pouvez cependant ignorer la liste noire à vos risques et périls. Je l'ai ignoré avec mon téléphone et tout a fonctionné correctement.

c'est-à-dire + firefox a fonctionné, le dernier chrome n'a pas été l'un de mes dev. systèmes, derniers pilotes Nvideo Quadro pour carte 2011...
Corrigé en allant dans les paramètres avancés de Chrome - Utiliser le matériel Acc. GFX n'était pas coché, vérifié - redémarré et fonctionne maintenant

Flash me manque :-( - Je ne peux tout simplement pas m'attendre à ce que les utilisateurs finaux passent par ce problème

Je reçois la même exception après un temps indéterminé dans Chrome. Cela n'arrive que très occasionnellement et cela ne semble être que lorsqu'il s'agit d'une scène en plein écran, mais le seul moyen de résoudre ce problème que je puisse trouver jusqu'à présent est de redémarrer le navigateur, ce qui n'est pas assez bon sur un site public ! Je peux créer des contextes pendant un certain temps, mais tout à coup, cela échouera lorsque j'essaierai à nouveau de new THREE.WebGLRenderer() , donc cela ne peut pas être dû à des cartes gfx sur liste noire. Je suis incapable de le reproduire ad hoc, ce qui le rend pratiquement impossible à réparer. Quelqu'un a-t-il une idée sur la façon de rechercher la cause profonde?

L'accélération matérielle est activée.

Error creating WebGL context.
Uncaught TypeError: Cannot read property 'getExtension' of null

oui, ça m'arrive aussi à partir de maintenant - Chrome sur Macbook Pro OS 10.11.5

@deejbee @cindyloo, ce serait utile si vous pouviez partager vos informations matérielles.

@mrdoob Il s'agit d'Intel HD Graphics 530 sous Win10. La version du pilote est 4.4.0 Build 10.18.15.4279. C'est un Dell Optiplex 7040

Rapport GPU Caps Viewer v1.31.1.0

pareil ici

Peut-être un repli sur CanvasRenderer dans ce cas ?

Que diable, cela se passe-t-il sur Win10 avec Chrome actuel, un nouvel indice sur la façon de résoudre ce problème ? Fonctionne même dans Internet Explorer :)

@alberto2000 quel GPU as-tu ?

@mrdoob c'était une carte Radeon et la réinstallation des pilotes l'a résolu.

obtenir cela aussi, pas souvent mais occasionnellement.

Système d'exploitation
Mac OS 10.11.6
Navigateur
Chrome 54.0.2840.98

Pour tous ceux qui lisent ceci en 2017, j'ai corrigé ce problème sur mon MacBook Pro fin 2011 en désactivant le basculement automatique de la carte graphique de l'économiseur d'énergie pour forcer le GPU hautes performances à prendre le relais à tout moment.

Je les vois toujours venir de nos journaux de serveur. Le plus récent était de :
Système d'exploitation : Windows 10
Navigateur : Chrome 55.0.2883.87

Remarque : nous utilisons la version r74 (jusqu'à ce que le problème de brouillard qui a été récemment résolu soit fusionné dans une nouvelle version 👍)

Remarque : nous utilisons la version r74 (jusqu'à ce que le problème de brouillard qui a été récemment résolu soit fusionné dans une nouvelle version 👍)

Quel problème de brouillard ?

Ce problème de brouillard :) https://github.com/mrdoob/three.js/issues/10582

Ah, je vois!

L'activation de « utiliser l'accélération matérielle lorsqu'elle est disponible » dans les paramètres avancés de Chrome a résolu mon problème

J'ai vu cette erreur apparaître dans le système de suivi des erreurs que j'utilise. Au cas où cela serait utile, voici les informations système pour l'utilisateur qui a eu un bogue tel que capturé par le tracker :

User-Agent : Mozilla/5.0 (Macintosh ; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/56.0.2924.87 Safari/537.36
Système d' exploitation : Mac OS X 10.12.3
Navigateur : Chrome 56.0.2924

Et voici ce que le traqueur d'erreurs a détecté dans la console :

THREE.WebGLRenderer 84
THREE.WebGLRenderer: Error creating WebGL context.
TypeError: Cannot read property 'getExtension' of null

Ces informations système ne contiennent pas les détails de la carte graphique pour être pleinement utiles.

Carte graphique : Intel HD Graphics 4000 1024 Mo

J'ai pu parler à l'utilisateur qui a rencontré cette erreur, et ils ont transmis les informations de la carte graphique ci-dessus. J'espère que cela pourra aider! Merci!

@kenrussell L'Intel HD Graphics 4000 est-il sauvegardé ? En fait, existe-t-il une liste publique de cartes graphiques sur liste noire ?

@mrdoob Non, l'Intel HD 4000 n'est pas sur liste noire.

Besoin du contenu de about:gpu (le texte

Si la carte est sur liste noire, la raison sera décrite sur cette page.

Ces deux fichiers décrivent quels GPU sont sur liste noire et lesquels ont des solutions de contournement de bogue de pilote appliquées.

https://cs.chromium.org/chromium/src/gpu/config/software_rendering_list_json.cc

https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list_json.cc

Notez cependant qu'une refactorisation est en cours, ces deux fichiers seront donc probablement remplacés par des fichiers .json dans le même répertoire dans la semaine ou les deux prochaines. Voir http://crbug.com/691703 .

J'ai la même erreur...
Il semble qu'Intel HD 2000 soit sur liste noire dans Chrome 58.0.3029.81 (64 bits), Ubuntu 14.04
J'ai défini chrome://flags/ --ignore-gpu-blacklist ; et ça marche bien.

Si cela peut aider quelqu'un qui regarde cela sous un angle différent. J'obtiens cette erreur lorsque j'essaie de monter un composant de réaction contenant TROIS bits et bobs lorsque j'essaie de le tester.

Je le fais comme non testable pour le moment.

@YoneMoreno Je ne vois pas de Error creating WebGL context. dans votre problème. Qu'est-ce qui te fait penser que tu as le même problème ?

Pourquoi est-ce fermé ? Il semble que beaucoup de gens connaissent encore ce problème.

@nicolethenerd Malheureusement, il n'y a rien de ce que nous pouvons faire dans la bibliothèque.

Vous pouvez ajouter un message d'erreur plus utile. En parcourant ce fil, il est difficile d'avoir une idée de ce qu'était réellement la résolution - les gens prétendent avoir résolu ce problème en changeant quelques drapeaux différents.

Si la solution est plus compliquée que ce que peut contenir un message d'erreur, faites en sorte que le message renvoie à une page FAQ qui explique le problème et recommande les indicateurs à définir en fonction de votre navigateur.

S'il s'agit d'une erreur courante qui ne peut pas être résolue en réparant la bibliothèque, ajoutez-la peut-être à une section FAQ du site de démonstration ?

@nicolethenerd Si je me souviens bien, c'était l'indicateur d'accélération matérielle de Chrome qui devait être activé pour mon MacBook Pro 2012.

La carte graphique n'est qu'une des raisons pour lesquelles le contexte ne peut pas être créé. Nous ne voudrions pas ajouter un message qui pourrait être trompeur.

Peut-être pourrions-nous commencer à collecter des raisons.

Cependant, nous ne devrions pas recommander aux utilisateurs de désactiver la liste noire. Si ces cartes graphiques ont été blacklistées, c'est pour des raisons de bugs et/ou de sécurité.

J'ai vu cette réponse lorsque j'avais ouvert trop d'onglets avec des scènes WebGL en même temps.

Même erreur pour moi avec Version 72.0.3626.121 (Official Build) Arch Linux (64-bit) . Fonctionne avec Firefox 65.0.1 sur le même système d'exploitation.

Processeur graphique : NVidia 2080TI.

Assurez-vous que cette option est sélectionnée dans vos paramètres Chrome.
screen shot 2016-02-09 at 1 59 46 pm
Après avoir relancé le paramètre chrom, le WebGL fonctionne correctement comme avant.
Bonne réponse.

Erreur : Échec de la création du contexte WebGL : Échec de la création de WebGL :

  • GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS : 0 est < 8 !

J'obtiens ceci maintenant, dans Firefox 74. J'ai forcé webgl.force-enabled=true dans la configuration, activé l'accélération matérielle, rien. Cela a très bien fonctionné pour moi en 66, mais je suppose que leur mise à jour "quantique" s'est fichue presque tout, y compris webgl pour moi.

Assurez-vous que vous n'appelez pas l'initialiseur de contexte WebGL à partir d'un écouteur (par exemple, essayez de l'écrire dans votre fonction d'initialisation avec un indicateur booléen pour l'empêcher de boucler ou de déclarer gl comme variable globale). Le premier a fonctionné pour moi et affiche correctement le contexte.

EDIT : En fait, j'ai fini par trouver le canevas WebGL à l'intérieur du moteur de rendu (THREE.WebGLRenderer). J'ai utilisé la méthode canvas renderer.getContext().canvas et ajouté l'écouteur webglcontextlost, qui à son tour a appelé la fonction handleContextLost avec init().

function handleContextLost() {
    event.preventDefault();
    cancelAnimationFrame(requestId)
    init();
}

canvas.addEventListener("webglcontextlost", handleContextLost, false)

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

boyravikumar picture boyravikumar  ·  3Commentaires

jack-jun picture jack-jun  ·  3Commentaires

makc picture makc  ·  3Commentaires

Horray picture Horray  ·  3Commentaires

seep picture seep  ·  3Commentaires