Совместное использование контекста WebGL с iframe и / или всплывающими окнами - PullRequest
0 голосов
/ 27 мая 2020

Мы пытаемся создать приложение, которое позволит «перемещать» встроенный контент (DOM или iFrame), ie. перемещен в отдельное окно через window.open().

  1. Может ли контекст визуализации WebGL быть разделен между двумя windows? Это предотвратит перестройку контекста графического процессора в новом окне: загрузка текстур, компиляция шейдеров и т. Д. *

  2. Двойной бонус: для сценария Electron может ли контекст быть разделен между процессами рендеринга?

1 Ответ

1 голос
/ 28 мая 2020

Может ли контекст визуализации WebGL быть разделен между двумя windows? Это предотвратит перестройку контекста графического процессора в новом окне: загрузка текстур, компиляция шейдеров и т. Д. c.

Контекст WebGL можно использовать только с одним холстом, поэтому, пока вы можете использовать контекст в другом окне (при условии, что это окно было открыто той же страницей), он может отображать только тот холст, с которым он был изначально связан.

Бонусный вопрос: может ли контекст быть разделен между iframe ?

То же, что и выше

Двойной бонус: для сценария Electron можно ли разделить контекст между процессами рендеринга?

нет, вы можете поделиться через windows в одном процессе. Вы не можете делиться между процессами.

Вы можете использовать холст 2d, чтобы нарисовать холст WebGL на 2D-холсте, чтобы вы могли использовать один холст, визуализировать на этом холсте, а затем копировать его в фреймы.

Для примера см. http://greggman.github.io/doodles/webgl_multiple_windows.html В левом верхнем углу щелкните create new window. Каждое новое окно - это еще один вид той же сцены. windows, включая главное окно, рендерится с использованием 2D-холстов и drawImage

Возможно, вы можете использовать OffscreenCanvas и выполнять рендеринг на нескольких холстах в iframe через transferToImageBitmap.

...