Der WebGL-Kontext ging unter iOS sofort verlorenIOS

Programmierung für iOS
Anonymous
 Der WebGL-Kontext ging unter iOS sofort verloren

Post by Anonymous »

Ich habe Code in meinem Webspiel wie diesen:

Code: Select all

const canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;

const glContextAttributes = { alpha: true, antialias: false };
let gl = canvas.getContext('webgl2', glContextAttributes);
if (!gl) {
console.log('WebGL2 not supported, falling back to WebGL1.');
gl = canvas.getContext('webgl', glContextAttributes);
}
if (!gl) {
throw new Error('WebGL not supported in this browser.');
}
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
document.body.appendChild(canvas);

const shader = gl.createShader(gl.VERTEX_SHADER);
if (!shader) {
debugInfo.glError = gl.getError();
debugInfo.contextLost = gl.isContextLost();
throw new Error(`Failed to create ${gl.VERTEX_SHADER} shader. ${JSON.stringify(debugInfo)}`);
}
Das funktioniert auf meinem Computer einwandfrei und funktioniert auch bei den meisten meiner Benutzer, aber ich erhalte vereinzelt E-Mails von iOS-Safari-Benutzern, dass diese Ausnahme ausgelöst wird.

Fehler beim Erstellen des 35633-Shaders. {"glError":37442,"contextLost":true

Für die Benutzer, denen das passiert, passiert es in 100 % der Fälle. Ich habe keine Ahnung, wie ich ihnen helfen kann.
Wie konnte der WebGL-Kontext so verloren gehen? Ich habe gerade die Leinwand erstellt. Es ist noch nicht einmal eine einzige Runde der Ereignisschleife vergangen. Kann ich irgendetwas tun, um dies zu verhindern (oder es zumindest abzumildern)?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post