Я пытаюсь написать приложение, которое использует очень большие текстуры.Идея состоит в том, что вы работаете с масштабированной версией текстуры в изменяющих шейдерах в реальном времени, и по завершении приложение применяет ваши изменения к исходной немасштабированной (большой) текстуре.Проблема в том, что профилирование показывает что-то вроде следующего:
- img.src = имя файла (500 мс)
- texImage2d (...) (1500 мс)
- bind/ рендеринг (100 мс)
- readPixels (300 мс)
- Поместить на холст (1000 мс)
- Сохранить холст в файл (300 мс)
По существуэто означает, что браузер блокируется почти на четыре секунды при сохранении более крупной немасштабированной текстуры, когда пользователь не может ничего сделать.Возможно ли сделать это асинхронно, чтобы браузер оставался отзывчивым?Все это должно быть сделано в javascript и на стороне клиента, так как я использую локальные файлы (файл / файловая система HTML5).
Веб-работники звучат как хорошая идея, но они не могут получить доступ к DOM,поэтому я не могу использовать функцию загрузки и сохранения изображений в браузере, и у них нет доступа к контексту WebGL, поэтому они не могут вызвать texImage2d, что занимает больше всего времени.
Из-за размера и количестваизображения Я не могу загрузить их все в память в качестве текстур при первоначальной загрузке страницы.
Можно ли что-то сделать, чтобы сделать это более отзывчивым для пользователя?Я бы хотел, чтобы они могли продолжить работу над следующим изображением, пока воспроизводится предыдущее.