Mithilfe von rgl
in knitr
können Benutzer Dokumente mit mehreren WebGL-Szenen in separaten Anzeigen erstellen. Jedes dieser Elemente wird erstellt, indem eine Arbeitsfläche erstellt wird, ein WebGL-Kontext zugeordnet wird und anschließend eine Reihe von WebGL-Plots ausgeführt werden.Wie bekomme ich einen Kontext wiederhergestellt?
Benutzer können für eine beliebige Anzahl von Anzeigen in einer einzigen HTML-Seite, fragen und schließlich werden sie aus Kontexten laufen, und (in Firefox) wird die Konsole
Exceeded 16 live WebGL contexts for this principal
zeigen und ich werde das WebGLcontextlost-Ereignis. Wenn Sie auf der Seite blättern, sind alle früheren Anzeigen leer, nur die späteren werden angezeigt.
Wie bitte ich um die Wiederherstellung derjenigen, die gerade im Fenster angezeigt werden?
Bearbeitet hinzuzufügen: Eine Variante zu dieser Frage: Wie setze ich eine Leinwand, um nur zu versuchen, sich selbst zu zeichnen, wenn es in Sicht gescrollt hat? Im typischen Fall sind nur ein oder zwei Kontexte gleichzeitig sichtbar, daher sollte es in Ordnung sein, beide zu zeichnen. Aber der Code muss gesagt werden, wenn das passiert.
Einige andere mögliche Lösungen. [Verwenden Sie eine Leinwand und rendern Sie nur Ansichtsfenster] (http://stackoverflow.com/questions/30541121/multiple-webgl-models-on-the-same-page). [Verwendung von 1 WebGL-Canvas und mehreren Nicht-Webgl-Canvases] (http://stackoverflow.com/questions/15824840/display-different-scenes-sharing-resources-on-multiple-canvases). Nur wenn ein Kontext angezeigt wird, siehe. Wie nur für das Rendern auf dem Bildschirm sehen Sie https://github.com/greggman/requestanimationframe-fix.js – gman