Контекст WebGL сразу теряется на iOSIOS

Программируем под IOS
Ответить
Anonymous
 Контекст WebGL сразу теряется на iOS

Сообщение Anonymous »

В моей веб-игре есть такой код:

Код: Выделить всё

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)}`);
}
Это отлично работает на моем компьютере и работает для большинства моих пользователей, но я получаю кучу писем от пользователей iOS Safari о том, что выдается это исключение.

Не удалось создать шейдер 35633. {"glError":37442,"contextLost":true

Для пользователей, с которыми это происходит, это происходит в 100% случаев. Я понятия не имею, как им помочь.
Как контекст WebGL потерялся так быстро? Я только что создал холст. Не прошло ни одного оборота цикла событий. Могу ли я что-нибудь сделать, чтобы предотвратить это (или хотя бы смягчить последствия)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ost-on-ios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»