From 2feae0ee050507e944a287c665c47f4c6710bead Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Sun, 23 Dec 2012 18:29:42 +0100 Subject: [PATCH] Added devicePixelRatio to CanvasRenderer and WebGLRenderer. --- src/renderers/CanvasRenderer.js | 34 +++++++++++++++++++++++---------- src/renderers/WebGLRenderer.js | 12 ++++++++++-- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/renderers/CanvasRenderer.js b/src/renderers/CanvasRenderer.js index 9aa6382a5a..975f4a1c87 100644 --- a/src/renderers/CanvasRenderer.js +++ b/src/renderers/CanvasRenderer.js @@ -12,11 +12,19 @@ THREE.CanvasRenderer = function ( parameters ) { _renderData, _elements, _lights, _projector = new THREE.Projector(), - _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElement( 'canvas' ), + _canvas = parameters.canvas !== undefined + ? parameters.canvas + : document.createElement( 'canvas' ), _canvasWidth, _canvasHeight, _canvasWidthHalf, _canvasHeightHalf, _context = _canvas.getContext( '2d' ), + _devicePixelRatio = parameters.devicePixelRatio !== undefined + ? parameters.devicePixelRatio + : window.devicePixelRatio !== undefined + ? window.devicePixelRatio + : 1, + _clearColor = new THREE.Color( 0x000000 ), _clearOpacity = 0, @@ -104,14 +112,18 @@ THREE.CanvasRenderer = function ( parameters ) { this.setSize = function ( width, height ) { - _canvasWidth = width; - _canvasHeight = height; + _canvasWidth = width * _devicePixelRatio; + _canvasHeight = height * _devicePixelRatio; + _canvasWidthHalf = Math.floor( _canvasWidth / 2 ); _canvasHeightHalf = Math.floor( _canvasHeight / 2 ); _canvas.width = _canvasWidth; _canvas.height = _canvasHeight; + _canvas.style.width = width + 'px'; + _canvas.style.height = height + 'px'; + _clipBox.min.set( - _canvasWidthHalf, - _canvasHeightHalf ); _clipBox.max.set( _canvasWidthHalf, _canvasHeightHalf ); _clearBox.min.set( - _canvasWidthHalf, - _canvasHeightHalf ); @@ -195,11 +207,13 @@ THREE.CanvasRenderer = function ( parameters ) { } - var e, el, element, material; + if ( this.autoClear === true ) { + + this.clear(); - this.autoClear === true - ? this.clear() - : _context.setTransform( 1, 0, 0, - 1, _canvasWidthHalf, _canvasHeightHalf ); + } + + _context.setTransform( 1, 0, 0, - 1, _canvasWidthHalf, _canvasHeightHalf ); _this.info.render.vertices = 0; _this.info.render.faces = 0; @@ -221,11 +235,11 @@ THREE.CanvasRenderer = function ( parameters ) { } - for ( e = 0, el = _elements.length; e < el; e++ ) { + for ( var e = 0, el = _elements.length; e < el; e++ ) { - element = _elements[ e ]; + var element = _elements[ e ]; - material = element.material; + var material = element.material; if ( material === undefined || material.visible === false ) continue; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 8a551f483d..6d8f027722 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -20,6 +20,11 @@ THREE.WebGLRenderer = function ( parameters ) { _antialias = parameters.antialias !== undefined ? parameters.antialias : false, _stencil = parameters.stencil !== undefined ? parameters.stencil : true, _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _devicePixelRatio = parameters.devicePixelRatio !== undefined + ? parameters.devicePixelRatio + : window.devicePixelRatio !== undefined + ? window.devicePixelRatio + : 1, _clearColor = parameters.clearColor !== undefined ? new THREE.Color( parameters.clearColor ) : new THREE.Color( 0x000000 ), _clearAlpha = parameters.clearAlpha !== undefined ? parameters.clearAlpha : 0; @@ -266,8 +271,11 @@ THREE.WebGLRenderer = function ( parameters ) { this.setSize = function ( width, height ) { - _canvas.width = width; - _canvas.height = height; + _canvas.width = width * _devicePixelRatio; + _canvas.height = height * _devicePixelRatio; + + _canvas.style.width = width + 'px'; + _canvas.style.height = height + 'px'; this.setViewport( 0, 0, _canvas.width, _canvas.height ); -- GitLab