diff --git a/docs/api/renderers/WebGLRenderer.html b/docs/api/renderers/WebGLRenderer.html index 9e984fd3f684edc96c39fc2a6e8cc56819d82446..af954bcf4edb87c2268e128b8cf9078a67b6e883 100644 --- a/docs/api/renderers/WebGLRenderer.html +++ b/docs/api/renderers/WebGLRenderer.html @@ -51,7 +51,10 @@ Default is *true*.
[page:Boolean preserveDrawingBuffer] - whether to preserve the buffers until manually cleared - or overwritten. Default is *false*.
+ or overwritten. Default is *false*.
+ + [page:String powerPreference] - Provides a hint to the user agent indicating what configuration + of GPU is suitable for this WebGL context. Can be *"high-performance"*, *"low-power"* or *"default"*. Default is *"default"*.
[page:Boolean depth] - whether the drawing buffer has a [link:https://en.wikipedia.org/wiki/Z-buffering depth buffer] of at least 16 bits. diff --git a/src/renderers/WebGL2Renderer.js b/src/renderers/WebGL2Renderer.js index a329883bdccbac40e32f240fdbf5a221fb0289e7..94730d48db216924e5ba558410be81dcf5815137 100644 --- a/src/renderers/WebGL2Renderer.js +++ b/src/renderers/WebGL2Renderer.js @@ -22,7 +22,8 @@ function WebGL2Renderer( parameters ) { _stencil = parameters.stencil !== undefined ? parameters.stencil : true, _antialias = parameters.antialias !== undefined ? parameters.antialias : false, _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, - _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false; + _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default'; // initialize @@ -36,9 +37,13 @@ function WebGL2Renderer( parameters ) { stencil: _stencil, antialias: _antialias, premultipliedAlpha: _premultipliedAlpha, - preserveDrawingBuffer: _preserveDrawingBuffer + preserveDrawingBuffer: _preserveDrawingBuffer, + powerPreference: _powerPreference, }; + _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.addEventListener( 'webglcontextrestored', function () { } ); + gl = _context || _canvas.getContext( 'webgl2', attributes ); if ( gl === null ) { @@ -55,8 +60,6 @@ function WebGL2Renderer( parameters ) { } - _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); - } catch ( error ) { console.error( 'THREE.WebGL2Renderer: ' + error ); diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index fb5f443c68c3cea5781df64f87bda93a4fbfd9f2..2d95e669f2de2739b11f10f288788787465ce0a1 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -59,7 +59,8 @@ function WebGLRenderer( parameters ) { _stencil = parameters.stencil !== undefined ? parameters.stencil : true, _antialias = parameters.antialias !== undefined ? parameters.antialias : false, _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, - _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false; + _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default'; var lights = []; @@ -228,9 +229,13 @@ function WebGLRenderer( parameters ) { stencil: _stencil, antialias: _antialias, premultipliedAlpha: _premultipliedAlpha, - preserveDrawingBuffer: _preserveDrawingBuffer + preserveDrawingBuffer: _preserveDrawingBuffer, + powerPreference: _powerPreference, }; + _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.addEventListener( 'webglcontextrestored', function () {} ); + _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); if ( _gl === null ) { @@ -259,8 +264,6 @@ function WebGLRenderer( parameters ) { } - _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); - } catch ( error ) { console.error( 'THREE.WebGLRenderer: ' + error );