Я создаю приложение THREE.js (последняя версия, r71), а иногда мне нужно вручную удалить 3D-сцену, чтобы отобразить классический 2D-контент. Итак, что я делаю, это очистка всех переменных, таких как сцена или рендерер, и уничтожение контекста WebGL с использованием renderer.forceContextLoss()
Microsoft Edge WebGL теряют контекст
Этот метод отлично работает в Firefox или Chrome, но он не поддерживается в Interner Explorer или Microsoft Edge, что вызывает множественные задержки на моей веб-странице. Я не могу найти обходное решение, чтобы сделать это правильно, как в Firefox или Chrome.
Если кто-то имеет наконечник, не стесняйтесь сказать мне :)
Благодаря
Я не понимаю цели этого. Зачем использовать два холста в верхней левой части страницы? Мне нужно очистить полотно WebGL правильно, я не понимаю, почему создание 2 холста может мне помочь. Кроме того, мой холст - это WebGL, а не 2D. – Rotan
Спасибо за это право. Ваше предположение верно. Но то, что мне не нравится при таком подходе, - это загрузка обоих холстов (2D и 3D). Представьте себе пользователя с устройством с низким оборудованием, если он не может поддерживать WebGL, будет отображаться 2D-холст, но 3D-холст будет по-прежнему активным в фоновом режиме (что приводит к потере производительности) – Rotan
Если webGL не поддерживается то 3D-холст не будет активен ... Также, когда вы вынуждаете потерю контекста, вы вынуждены снова отправлять все активы на GPU.Это, вероятно, самое большое узкое место в 3d-рендеринге сегодня, совместное использование контента, такого как разделяющие и между графическим процессором и процессором. Но вместо того, чтобы спекулировать, профилируйте его и посмотрите. Вы не можете оптимизировать спекуляцию. –