Может ли контекст визуализации 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
.