Oyente desde hace mucho tiempo pero primera vez que llamo. Estoy trabajando en un proyecto babylon-js dentro del contexto de una aplicación React. En un esfuerzo por ayudar a mejorar el rendimiento, me gustaría cargar texturas solo una vez y conservarlas en todas las eliminaciones de escena/motor. El motor y la escena se eliminan porque el lienzo que ejecuta babylon-js no existe en todas las páginas de la aplicación. Investigué la serialización de la escena, los materiales, etc., pero eso no pareció funcionar ya que las texturas aún se cargan nuevamente (aunque desde indexdb ahora que estoy usando un proveedor fuera de línea). La hipótesis de ejecución actual es extraer el lienzo fuera del vDOM de reacción y simplemente alternar su visibilidad css al ingresar o salir del componente del visor de babylon-js. La pregunta que tengo es que: ¿me estoy perdiendo algo? Extraer el lienzo fuera del contexto de reacción me parece un antipatrón
La creación y eliminación frecuente de contextos webgl es un gran no-no, ya que no solo requiere muchos recursos/computación, sino que también puede provocar la pérdida de contexto en otras pestañas, ya que solo hay una cantidad limitada de contextos que el navegador puede proporcionar y los recursos se liberan de forma asíncrona. Tenga en cuenta que los patrones son conceptos, no reglas y deben evaluarse como tales caso por caso.
Entonces, para responder a su pregunta: no, no se perdió nada, la mejor solución es almacenar el lienzo webgl fuera de reacciona vDOM.