|
@@ -252,6 +252,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
// event listeners must be registered before WebGL context is created, see #12753
|
|
// event listeners must be registered before WebGL context is created, see #12753
|
|
_canvas.addEventListener( 'webglcontextlost', onContextLost, false );
|
|
_canvas.addEventListener( 'webglcontextlost', onContextLost, false );
|
|
_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
|
|
+ _canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );
|
|
|
|
|
|
if ( _gl === null ) {
|
|
if ( _gl === null ) {
|
|
|
|
|
|
@@ -593,6 +594,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
|
|
|
_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
|
|
_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
|
|
_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
|
|
+ _canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
|
|
|
|
|
|
renderLists.dispose();
|
|
renderLists.dispose();
|
|
renderStates.dispose();
|
|
renderStates.dispose();
|
|
@@ -653,6 +655,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ function onContextCreationError( event ) {
|
|
|
|
+
|
|
|
|
+ console.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
function onMaterialDispose( event ) {
|
|
function onMaterialDispose( event ) {
|
|
|
|
|
|
const material = event.target;
|
|
const material = event.target;
|