Pull to refresh

Comments 6

В рамках коммерческого проекта реализовывал через OffscreenCanvas трансляцию с видео камеры и захват экрана, обработку WebCodecs в качество (encode/decode) и все это обернуто в WebWorker. Половина функционала экспериментальная в Хром, но все же работало!

Обычно сразу плохо рендерить на экран - сначала все рендерится в так называемый backbuffer, вопрос - в основном потоке данный канвас доступен чтобы с него можно было скопировать на другой канвас?

Зачем это все? Канвас сам по себе фреймбуфер который будет отрисован только в animation frame вызов в браузере. В webgl вообще есть persistentDrawBuffer хинт чтобы нивелировать инвалидацию на всякие ресайзы, фреймдропы ( чтоб не было мерцания )

Только desynchronized флаг для 2d включает immediate flush.

где живые примеры? есть код - хотелось бы перейти по ссылке и увидеть, как это работает) обычно делают так. по теме советую почитать ещё вот этот материал https://habr.com/ru/articles/829220/

То есть MessageChannel позволяет передать bitmap (например) по ссылке в другой поток, а не копировать его?

ImageData transferable, так что это единственный способ обмена изолированным кадром.

На деле в статье ошибка. transferControlToOffscreen отдаёт УПРАВЛЕНИЕ, картинка как была на холсте - так и останется. Если сконструировать OffscreenCanvas вручную - тогда забиндить на Dom канвас не получится, тогда нужно получить ImageData если требуется.

Причем MessageChannel вообще тут не упёрся. Межпотокове host<-> worker / tab сразу есть, каналы городить нету смысла. Каналы нужны когда у тебя есть например пул воркеров, которые нужно между собой обнкдинять - порты прокинул, и они пишут в нужные сами, SharedWorkers.

Sign up to leave a comment.