Jelajahi Sumber

WebGLRenderer: Refactoring viewport/scissor a bit more.

Mr.doob 9 tahun lalu
induk
melakukan
89cee59178
1 mengubah file dengan 15 tambahan dan 13 penghapusan
  1. 15 13
      src/renderers/WebGLRenderer.js

+ 15 - 13
src/renderers/WebGLRenderer.js

@@ -79,7 +79,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	// internal state cache
 
-	_currentViewport = null,
 	_currentProgram = null,
 	_currentRenderTarget = null,
 	_currentFramebuffer = null,
@@ -87,6 +86,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 	_currentGeometryProgram = '',
 	_currentCamera = null,
 
+	_currentScissor = new THREE.Vector4(),
+	_currentScissorTest = null,
+
+	_currentViewport = new THREE.Vector4(),
+
 	_usedTextureUnits = 0,
 
 	_scissor = new THREE.Vector4( 0, 0, _canvas.width, _canvas.height ),
@@ -3395,7 +3399,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		}
 
 		var isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube );
-		var framebuffer, scissor, scissorTest, viewport;
+		var framebuffer;
 
 		if ( renderTarget ) {
 
@@ -3411,19 +3415,19 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			}
 
-			scissor = renderTarget.scissor;
-			scissorTest = renderTarget.scissorTest;
+			_currentScissor.copy( renderTarget.scissor );
+			_currentScissorTest = renderTarget.scissorTest;
 
-			viewport = renderTarget.viewport;
+			_currentViewport.copy( renderTarget.viewport );
 
 		} else {
 
 			framebuffer = null;
 
-			scissor = _scissor;
-			scissorTest = _scissorTest;
+			_currentScissor.copy( _scissor );
+			_currentScissorTest = _scissorTest;
 
-			viewport = _viewport;
+			_currentViewport.copy( _viewport );
 
 		}
 
@@ -3435,10 +3439,10 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		}
 
-		state.scissor( scissor );
-		state.setScissorTest( scissorTest );
+		state.scissor( _currentScissor );
+		state.setScissorTest( _currentScissorTest );
 
-		state.viewport( viewport );
+		state.viewport( _currentViewport );
 
 		if ( isCube ) {
 
@@ -3447,8 +3451,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		}
 
-		_currentViewport = viewport;
-
 	};
 
 	this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {