Хорошо, я знаю, что canvas.toDataUrl() создаст изображение в формате png. Однако, когда я пытаюсь получить изображение с http://threejs.org/examples/#webgl_lines_sphere. Все, что я вижу, это черное изображение на хроме. Для повторения шагов -trjs canvas todataurl is blank
1) Откройте консоль разработчика и выберите элемент холста. 2) canvas = $0
3) context = canvas.getContext('webgl', {preserveDrawingBuffer: true})
4) img = canvas.toDataUrl()
5) document.write('<img src="'+img+'"/>')
изображение является пустым. Однако, я попробовал с другим холстом по ссылке http://threejs.org/examples/#canvas_geometry_cube. Проделайте следующие шаги для репликации.
1) Откройте консоль разработчика и выберите элемент холста. 2) canvas = $0
3) context = canvas.getContext('2d', {preserveDrawingBuffer: true})
4) img = canvas.toDataUrl()
5) document.write('<img src="'+img+'"/>')
Это дало ожидаемый результат. Почему существует разница и как этого можно избежать, чтобы получить первое изображение?
Есть ли работа, чтобы захватить изображение после визуализации всего документа, а не во время цикла рендеринга? Предположим, что я не могу и не смог бы обработать цикл рендеринга. –
Если у вас есть доступ к переменной renderer, вы можете вызвать 'renderer.domElement.toDataURL()', см. Мое редактирование. – Kaiido
Кажется, что renderer.domElement.toDataURL() также не работает. Это сработало для вас, Кайидо? Кроме того, нет никакой разницы в доступе к renderer.domElement и $ 0 в консоли, так как он просто возвращает холст в любом случае. –