Просмотр исходного кода

SoftwareRenderer: Added clearAlpha

Mugen87 7 лет назад
Родитель
Сommit
cd8c4f0a59
1 измененных файлов с 12 добавлено и 9 удалено
  1. 12 9
      examples/js/renderers/SoftwareRenderer.js

+ 12 - 9
examples/js/renderers/SoftwareRenderer.js

@@ -19,8 +19,6 @@ THREE.SoftwareRenderer = function ( parameters ) {
 		alpha: parameters.alpha === true
 		alpha: parameters.alpha === true
 	} );
 	} );
 
 
-	var alpha = parameters.alpha;
-
 	var shaders = {};
 	var shaders = {};
 	var textures = {};
 	var textures = {};
 
 
@@ -30,6 +28,7 @@ THREE.SoftwareRenderer = function ( parameters ) {
 	var viewportXOffs, viewportYOffs, viewportZOffs;
 	var viewportXOffs, viewportYOffs, viewportZOffs;
 
 
 	var clearColor = new THREE.Color( 0x000000 );
 	var clearColor = new THREE.Color( 0x000000 );
+	var clearAlpha = parameters.alpha === true ? 0 : 1;
 
 
 	var imagedata, data, zbuffer;
 	var imagedata, data, zbuffer;
 	var numBlocks, blockMaxZ, blockFlags;
 	var numBlocks, blockMaxZ, blockFlags;
@@ -75,9 +74,10 @@ THREE.SoftwareRenderer = function ( parameters ) {
 
 
 	this.autoClear = true;
 	this.autoClear = true;
 
 
-	this.setClearColor = function ( color ) {
+	this.setClearColor = function ( color, alpha ) {
 
 
 		clearColor.set( color );
 		clearColor.set( color );
+		clearAlpha = alpha;
 		clearColorBuffer( clearColor );
 		clearColorBuffer( clearColor );
 
 
 	};
 	};
@@ -104,9 +104,6 @@ THREE.SoftwareRenderer = function ( parameters ) {
 		canvas.width = canvasWidth;
 		canvas.width = canvasWidth;
 		canvas.height = canvasHeight;
 		canvas.height = canvasHeight;
 
 
-		context.fillStyle = alpha ? "rgba(0, 0, 0, 0)" : clearColor.getStyle();
-		context.fillRect( 0, 0, canvasWidth, canvasHeight );
-
 		imagedata = context.getImageData( 0, 0, canvasWidth, canvasHeight );
 		imagedata = context.getImageData( 0, 0, canvasWidth, canvasHeight );
 		data = imagedata.data;
 		data = imagedata.data;
 
 
@@ -323,6 +320,12 @@ THREE.SoftwareRenderer = function ( parameters ) {
 
 
 	};
 	};
 
 
+	function getAlpha() {
+
+		return parameters.alpha === true ? clearAlpha : 1;
+
+	}
+
 	function clearColorBuffer( color ) {
 	function clearColorBuffer( color ) {
 
 
 		var size = canvasWidth * canvasHeight * 4;
 		var size = canvasWidth * canvasHeight * 4;
@@ -332,11 +335,11 @@ THREE.SoftwareRenderer = function ( parameters ) {
 			data[ i ] = color.r * 255 | 0;
 			data[ i ] = color.r * 255 | 0;
 			data[ i + 1 ] = color.g * 255 | 0;
 			data[ i + 1 ] = color.g * 255 | 0;
 			data[ i + 2 ] = color.b * 255 | 0;
 			data[ i + 2 ] = color.b * 255 | 0;
-			data[ i + 3 ] = alpha ? 0 : 255;
+			data[ i + 3 ] = getAlpha() * 255 | 0;
 
 
 		}
 		}
 
 
-		context.fillStyle = alpha ? "rgba(0, 0, 0, 0)" : color.getStyle();
+		context.fillStyle = 'rgba(' + ( ( clearColor.r * 255 ) | 0 ) + ',' + ( ( clearColor.g * 255 ) | 0 ) + ',' + ( ( clearColor.b * 255 ) | 0 ) + ',' + getAlpha() + ')';
 		context.fillRect( 0, 0, canvasWidth, canvasHeight );
 		context.fillRect( 0, 0, canvasWidth, canvasHeight );
 
 
 	}
 	}
@@ -1476,7 +1479,7 @@ THREE.SoftwareRenderer = function ( parameters ) {
 				data[ poffset ++ ] = clearColor.r * 255 | 0;
 				data[ poffset ++ ] = clearColor.r * 255 | 0;
 				data[ poffset ++ ] = clearColor.g * 255 | 0;
 				data[ poffset ++ ] = clearColor.g * 255 | 0;
 				data[ poffset ++ ] = clearColor.b * 255 | 0;
 				data[ poffset ++ ] = clearColor.b * 255 | 0;
-				data[ poffset ++ ] = alpha ? 0 : 255;
+				data[ poffset ++ ] = getAlpha() * 255 | 0;
 
 
 			}
 			}