diff --git a/docs/api/en/renderers/WebGLRenderer.html b/docs/api/en/renderers/WebGLRenderer.html index 492c61749772bdfc3c172fc674e876e46510e5f7..96fb648f9b0f0014058e5a6fe45cd18a175aa123 100644 --- a/docs/api/en/renderers/WebGLRenderer.html +++ b/docs/api/en/renderers/WebGLRenderer.html @@ -351,14 +351,22 @@

[method:RenderTarget getCurrentViewport]()

Returns the current viewport.

-

[method:Object getDrawingBufferSize]()

-

Returns an object containing the width and height of the renderer's drawing buffer, in pixels.

+

[method:Vector2 getDrawingBufferSize]( [param:Vector2 target] )

+

+ [page:Vector2 target] — the result will be copied into this Vector2.

+ + Returns the width and height of the renderer's drawing buffer, in pixels. +

[method:number getPixelRatio]()

Returns current device pixel ratio used.

-

[method:Object getSize]()

-

Returns an object containing the width and height of the renderer's output canvas, in pixels.

+

[method:Vector2 getSize]( [param:Vector2 target] )

+

+ [page:Vector2 target] — the result will be copied into this Vector2.

+ + Returns the width and height of the renderer's output canvas, in pixels. +

[method:null resetGLState]( )

Reset the GL state to default. Called internally if the WebGL context is lost.

diff --git a/examples/js/effects/OutlineEffect.js b/examples/js/effects/OutlineEffect.js index 44a1a01801b2a9d684ec437095bd3bbd5651cb20..92fa33735518a20d894d98f333a43cb29bf389ef 100644 --- a/examples/js/effects/OutlineEffect.js +++ b/examples/js/effects/OutlineEffect.js @@ -478,9 +478,9 @@ THREE.OutlineEffect = function ( renderer, parameters ) { }; - this.getSize = function () { + this.getSize = function ( target ) { - return renderer.getSize(); + return renderer.getSize( target ); }; diff --git a/examples/js/effects/StereoEffect.js b/examples/js/effects/StereoEffect.js index ab5006d3a970e9ee34a45cb2bd0bdf337560ad80..437fead806a7859ba914ed530eb4acae908132bf 100644 --- a/examples/js/effects/StereoEffect.js +++ b/examples/js/effects/StereoEffect.js @@ -9,6 +9,7 @@ THREE.StereoEffect = function ( renderer ) { var _stereo = new THREE.StereoCamera(); _stereo.aspect = 0.5; + var size = new THREE.Vector2(); this.setEyeSeparation = function ( eyeSep ) { @@ -30,7 +31,7 @@ THREE.StereoEffect = function ( renderer ) { _stereo.update( camera ); - var size = renderer.getSize(); + renderer.getSize( size ); if ( renderer.autoClear ) renderer.clear(); renderer.setScissorTest( true ); diff --git a/examples/js/nodes/postprocessing/NodePostProcessing.js b/examples/js/nodes/postprocessing/NodePostProcessing.js index cc24ba1d0fa88f0da15e4dd921f2f63bb6712e00..d326d84afe01f0b82027a43a0257e1c5397e7d3a 100644 --- a/examples/js/nodes/postprocessing/NodePostProcessing.js +++ b/examples/js/nodes/postprocessing/NodePostProcessing.js @@ -16,7 +16,7 @@ function NodePostProcessing( renderer, renderTarget ) { stencilBuffer: false }; - var size = renderer.getDrawingBufferSize(); + var size = renderer.getDrawingBufferSize( new THREE.Vector2() ); renderTarget = new THREE.WebGLRenderTarget( size.width, size.height, parameters ); } diff --git a/examples/js/postprocessing/EffectComposer.js b/examples/js/postprocessing/EffectComposer.js index f5548bc2ebe5af2b8bd239bf34b78f3bc70388f8..4c01ee5a099a80eab8d6df0c35965381603f44de 100644 --- a/examples/js/postprocessing/EffectComposer.js +++ b/examples/js/postprocessing/EffectComposer.js @@ -15,7 +15,7 @@ THREE.EffectComposer = function ( renderer, renderTarget ) { stencilBuffer: false }; - var size = renderer.getDrawingBufferSize(); + var size = renderer.getDrawingBufferSize( new THREE.Vector2() ); renderTarget = new THREE.WebGLRenderTarget( size.width, size.height, parameters ); renderTarget.texture.name = 'EffectComposer.rt1'; @@ -64,7 +64,7 @@ Object.assign( THREE.EffectComposer.prototype, { this.passes.push( pass ); - var size = this.renderer.getDrawingBufferSize(); + var size = this.renderer.getDrawingBufferSize( new THREE.Vector2() ); pass.setSize( size.width, size.height ); }, @@ -139,7 +139,7 @@ Object.assign( THREE.EffectComposer.prototype, { if ( renderTarget === undefined ) { - var size = this.renderer.getDrawingBufferSize(); + var size = this.renderer.getDrawingBufferSize( new THREE.Vector2() ); renderTarget = this.renderTarget1.clone(); renderTarget.setSize( size.width, size.height ); diff --git a/examples/js/renderers/WebGLDeferredRenderer.js b/examples/js/renderers/WebGLDeferredRenderer.js index 057ed2d1dd869092a3a4469a44032fc552dfa835..223880fd23901de326f07b23d280d4c8a43f2945 100644 --- a/examples/js/renderers/WebGLDeferredRenderer.js +++ b/examples/js/renderers/WebGLDeferredRenderer.js @@ -125,8 +125,8 @@ THREE.WebGLDeferredRenderer = function ( parameters ) { _gl = _this.renderer.context; - _width = parameters.width !== undefined ? parameters.width : _this.renderer.getSize().width; - _height = parameters.height !== undefined ? parameters.height : _this.renderer.getSize().height; + _width = parameters.width !== undefined ? parameters.width : _this.renderer.getSize( new THREE.Vector2() ).width; + _height = parameters.height !== undefined ? parameters.height : _this.renderer.getSize( new THREE.Vector2() ).height; var antialias = parameters.antialias !== undefined ? parameters.antialias : false; diff --git a/examples/webgl2_multisampled_renderbuffers.html b/examples/webgl2_multisampled_renderbuffers.html index 5c7e6890772afbe8ab9cfdc4a6e8e58968d20ef5..584b940649cf51d4ad687e13dced06eb4af796f0 100644 --- a/examples/webgl2_multisampled_renderbuffers.html +++ b/examples/webgl2_multisampled_renderbuffers.html @@ -130,7 +130,7 @@ stencilBuffer: false }; - var size = renderer.getDrawingBufferSize(); + var size = renderer.getDrawingBufferSize( new THREE.Vector2() ); var renderTarget = new THREE.WebGLMultisampleRenderTarget( size.width, size.height, parameters ); var renderPass = new THREE.RenderPass( scene, camera ); diff --git a/examples/webgl_postprocessing_nodes.html b/examples/webgl_postprocessing_nodes.html index 07bea6c3caee9a6f8606d74bc610a117072f374e..e13169d39d107982dc49e36348928c8819bd6ec6 100644 --- a/examples/webgl_postprocessing_nodes.html +++ b/examples/webgl_postprocessing_nodes.html @@ -369,7 +369,7 @@ // POST - var size = renderer.getDrawingBufferSize(); + var size = renderer.getDrawingBufferSize( new THREE.Vector2() ); var screen = new THREE.ScreenNode(); @@ -451,7 +451,7 @@ // POST - var size = renderer.getDrawingBufferSize(); + var size = renderer.getDrawingBufferSize( new THREE.Vector2() ); var blurScreen = new THREE.BlurNode( new THREE.ScreenNode() ); blurScreen.size = new THREE.Vector2( size.width, size.height ); diff --git a/examples/webgl_postprocessing_nodes_pass.html b/examples/webgl_postprocessing_nodes_pass.html index c641f79f4278bb84dd3b92f82bf777e469913655..47d7eff9acad2ca2b1b940a3bea5701b97ee345e 100644 --- a/examples/webgl_postprocessing_nodes_pass.html +++ b/examples/webgl_postprocessing_nodes_pass.html @@ -432,7 +432,7 @@ // PASS - var size = renderer.getDrawingBufferSize(); + var size = renderer.getDrawingBufferSize( new THREE.Vector2() ); var blurScreen = new THREE.BlurNode( new THREE.ScreenNode() ); blurScreen.size = new THREE.Vector2( size.width, size.height ); diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 68e20dd4f89169d867099637511ed01d8173d905..113809aa8a9a241538520aca4017484292363063 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -17,6 +17,7 @@ import { Matrix4 } from '../math/Matrix4.js'; import { ShaderLib } from './shaders/ShaderLib.js'; import { UniformsLib } from './shaders/UniformsLib.js'; import { cloneUniforms } from './shaders/UniformsUtils.js'; +import { Vector2 } from '../math/Vector2.js'; import { Vector3 } from '../math/Vector3.js'; import { Vector4 } from '../math/Vector4.js'; import { WebGLAnimation } from './webgl/WebGLAnimation.js'; @@ -360,12 +361,17 @@ function WebGLRenderer( parameters ) { }; - this.getSize = function () { + this.getSize = function ( target ) { - return { - width: _width, - height: _height - }; + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width, _height ); }; @@ -395,12 +401,17 @@ function WebGLRenderer( parameters ) { }; - this.getDrawingBufferSize = function () { + this.getDrawingBufferSize = function ( target ) { - return { - width: _width * _pixelRatio, - height: _height * _pixelRatio - }; + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width * _pixelRatio, _height * _pixelRatio ); };