Расскажите о потере контекста в Webgl

Пытаюсь создать рисовалку на webgl2
Желательна поддержка большого количества слоёв (>10) в 128бит/пикс. формате

Почитал в интернете, оказывается, с каждым может случиться такая страшная вещь как потеря webgl контекста
В связи с этим созрели несколько вопросов

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

Спасибо.


Ответы (0 шт):