WebGLRenderingContext: Methode isContextLost()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die Methode WebGLRenderingContext.isContextLost()
gibt einen booleschen Wert zurück, der angibt, ob der WebGL-Kontext verloren gegangen ist und neu erstellt werden muss, bevor das Rendering fortgesetzt werden kann.
Syntax
isContextLost()
Parameter
Keine.
Rückgabewert
Ein boolescher Wert, der true
ist, wenn der Kontext verloren gegangen ist, oder false
, wenn nicht.
Hinweise zur Verwendung
Es gibt mehrere Gründe, warum ein WebGL-Kontext verloren gehen kann, sodass es notwendig ist, den Kontext neu zu erstellen, bevor das Rendering fortgesetzt werden kann. Beispiele hierfür sind:
- Zwei oder mehr Seiten nutzen die GPU, stellen jedoch zusammen eine zu hohe Belastung für die GPU dar, sodass der Browser den beiden Kontexten mitteilt, dass sie die Verbindung verloren haben, und dann einen der beiden auswählt, um den Zugriff wiederherzustellen.
- Der Computer des Benutzers verfügt über mehrere Grafikprozessoren (wie ein Laptop mit mobilen und Desktop-GPUs, wobei ersterer hauptsächlich im Akkubetrieb verwendet wird), und der Benutzer oder das System entscheidet sich für einen Wechsel der GPUs. In diesem Fall gehen alle Kontexte verloren und werden nach dem Wechsel der GPUs wiederhergestellt.
- Eine andere Seite im Browser des Benutzers führt einen Vorgang mit der GPU aus, der zu lange dauert, wodurch der Browser entscheidet, die GPU zurückzusetzen, um den Stillstand zu beenden. Dies würde dazu führen, dass jeder WebGL-Kontext im gesamten Browser verloren geht.
- Der Benutzer aktualisiert seinen Grafiktreiber auf einem Betriebssystem, das es erlaubt, Grafiktreiber zu aktualisieren, ohne das System neu zu starten.
Beispiele
Zum Beispiel, wenn Sie den Erfolg der Programmverlinkung überprüfen, könnten Sie auch überprüfen, ob der Kontext nicht verloren ist:
gl.linkProgram(program);
if (!gl.getProgramParameter(program, gl.LINK_STATUS) && !gl.isContextLost()) {
const info = gl.getProgramInfoLog(program);
console.log(`Error linking program:\n${info}`);
}
Spezifikationen
Specification |
---|
WebGL Specification # 5.14.13 |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Der
WebGLContextEvent
signalisiert Änderungen im Kontextstatus. - Umgang mit verlorenem Kontext in WebGL: Khronos WebGL Wiki