Расскажите о потере контекста в Webgl
Пытаюсь создать рисовалку на webgl2
Желательна поддержка большого количества слоёв (>10) в 128бит/пикс. формате
Почитал в интернете, оказывается, с каждым может случиться такая страшная вещь как потеря webgl контекста
В связи с этим созрели несколько вопросов
- Должна ли чем-то отличаться обработка потери контекста в webgl и webgl2 ?
- Вот у меня потерялся контекст, это значит, что все программы и шейдеры текущего контекста просто слетели и сама переменная контекста (обычно
gl) осталась доступной и я должен как-то восстанавливать все данные в ней
или мне нужно получить полностью новый контекст вызвавgl = canvas.getContext("webgl2");, а только потом восстанавливать его? Тогда старый контекст автоматически удалится или так и будет висеть в небытии? - Самый главный вопрос, что произойдёт с данными при потере контекста? Если я буду хранить слои как 2d текстуры, то они все уничтожатся? Как мне тогда сохранять их? Дублировать их ещё и в оперативной памяти? Не слишком ли жирно? Тогда при изменении (а это будет часто) текстуры придётся копировать через
gl.readPixels? Не слишком ли это ударит по производительности? Как мне дальше жить? - Может вообще забить на эту потерю контекста? Как часто она происходит? Раз на миллион? А если мне не нужна поддержка мобилок?
Спасибо.