OffscreenCanvas недоступен? Пошаговая диагностика по платформам и средам
Наблюдаемые симптомы
Any3D выводит сообщение: «Текущий браузер не поддерживает OffscreenCanvas». Это один из ключевых компонентов для работы в фоновых потоках; без него процессы, требующие кодирования WebGL2 внутри Worker (например, сжатие текстур), не могут выполняться полноценно.
OffscreenCanvas позволяет создавать canvas и получать контекст WebGL внутри Web Worker, выполняя GPU-операции в фоне без блокировки основного потока страницы.
Основные причины
| Причина | Типичные сценарии |
|---|---|
| Устаревший браузер/WebView | Chrome < 69, Safari < 16.4, старый Android WebView |
| Отключённое аппаратное ускорение | Энергосберегающий режим или политика, отключающая GPU в Windows/macOS |
| Корпоративные политики | GPO, отключающие GPU; MDM, ограничивающие графические возможности |
| Встроенные WebView | WeChat, корпоративные приложения, устаревшие оболочки Electron |
| Сетевой уровень | Встречается редко; чаще проблема в загрузке скриптов, а не в самом API |
Диагностика по платформам
Windows
- Chrome / Edge: Настройки → Система → Включите «Использовать аппаратное ускорение» → полностью закройте и перезапустите браузер.
- Видеодрайвер: В ноутбуках с двумя видеокартами убедитесь, что браузер использует дискретную (NVIDIA Control Panel / AMD Software).
- Групповые политики: Политики вроде «Отключить аппаратное ускорение» могут вызывать ошибку создания контекста WebGL для OffscreenCanvas.
- Удалённый рабочий стол (RDP): В некоторых сессиях RDP возможности GPU ограничены. Сравните с локальным входом.
macOS
- Safari 16.4+ или актуальная версия Chrome.
- Системные настройки → Батарея: Режим энергосбережения может снижать приоритет GPU. Попробуйте с включённой зарядкой.
- Экранное время обычно напрямую не отключает OffscreenCanvas, но если MDM ограничивает графические API, обратитесь в IT.
Linux
- Убедитесь, что Mesa/проприетарные драйверы работоспособны. Тестируйте актуальную версию Chrome как под Wayland, так и под X11.
- В безголовых серверах удалённые браузеры могут требовать виртуальный GPU (редко в потребительских сценариях).
iOS / iPadOS
- Safari обновляется вместе с системой (поддержка OffscreenCanvas полномерно появилась с iOS 16.4).
- Встроенный в приложение WebView может отставать от системного Safari — открывайте ссылки в самом Safari.
- Школьные iPad в管理模式 могут быть заблокированы на старых версиях — потребуется обновление администратором.
Android
- Обновите Chrome и Android System WebView.
- Некоторые китайские браузеры с нестандартным ядром не поддерживают API — переключитесь на быстрое ядро или используйте Chrome.
- На бюджетных устройствах устаревшие GPU-драйверы: попробуйте отключить «Режим энергосбережения».
Сеть, VPN и корпоративная среда
OffscreenCanvas — это локальный API, обычно не зависящий напрямую от VPN. Однако если VPN вызывает переключение браузера в «безопасный режим» или загрузку корпоративных расширений с инжектируемыми скриптами, это может привести к косвенной ошибке:
- Отключите VPN и сравните результат;
- Проверьте, не принуждает ли корпоративный браузер к «программной рендерингу»;
- При встраивании через iframe убедитесь, что внешняя страница не блокирует Worker с WebGL.
Родительский контроль и управляемые устройства
- Family Link / Экранное время: крайне редко напрямую отключают OffscreenCanvas; чаще проблема в блокировке обновлений браузера, из-за чего API устаревает — разрешите автоматическое обновление системы.
- Экзаменационный/библиотечный режим: может использоваться кастомный браузер. Рекомендуется перейти на личное устройство.
Пошаговое исправление (универсальное)
- Обновите браузер до версии не ниже указанных в таблице выше.
- Включите аппаратное ускорение и перезапустите браузер.
- Откройте страницу в системном браузере, не используйте WebView внутри приложений.
- Если параллельно есть ошибки WebGL2, сначала выполните руководство по исправлению WebGL2.
Быстрая проверка
typeof OffscreenCanvas !== "undefined"
Если результат — false, текущая среда не поддерживает это API.
Итог
Отсутствие OffscreenCanvas чаще всего наблюдается в устаревших браузерах/WebView, при отключённом аппаратном ускорении, при удалённом доступе в Windows или под корпоративными GPU-политиками. Включите ускорение графики по платформе, обновите WebView или переключитесь на системный браузер — это обычно восстанавливает возможность GPU-кодирования в фоновых потоках.