2
0
Эх сурвалжийг харах

SoftwareRenderer: Implemented clearColor.

Mr.doob 11 жил өмнө
parent
commit
9fe88e67e6

+ 13 - 6
examples/js/renderers/SoftwareRenderer.js

@@ -18,6 +18,8 @@ THREE.SoftwareRenderer = function () {
 	var viewportXScale, viewportYScale, viewportZScale;
 	var viewportXScale, viewportYScale, viewportZScale;
 	var viewportXOffs, viewportYOffs, viewportZOffs;
 	var viewportXOffs, viewportYOffs, viewportZOffs;
 
 
+	var clearColor = new THREE.Color( 0x000000 );
+
 	var imagedata, data, zbuffer;
 	var imagedata, data, zbuffer;
 	var numBlocks, blockMaxZ, blockFlags;
 	var numBlocks, blockMaxZ, blockFlags;
 
 
@@ -53,7 +55,7 @@ THREE.SoftwareRenderer = function () {
 
 
 	this.setClearColor = function ( color, alpha ) {
 	this.setClearColor = function ( color, alpha ) {
 
 
-		// TODO
+		clearColor.set( color );
 
 
 	};
 	};
 
 
@@ -76,8 +78,12 @@ THREE.SoftwareRenderer = function () {
 		canvas.width = canvasWidth;
 		canvas.width = canvasWidth;
 		canvas.height = canvasHeight;
 		canvas.height = canvasHeight;
 
 
+		context.fillStyle = 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;
+
 		zbuffer = new Int32Array( data.length / 4 );
 		zbuffer = new Int32Array( data.length / 4 );
 
 
 		numBlocks = canvasWBlocks * canvasHBlocks;
 		numBlocks = canvasWBlocks * canvasHBlocks;
@@ -569,7 +575,7 @@ THREE.SoftwareRenderer = function () {
 	function clearBlock( blockX, blockY ) {
 	function clearBlock( blockX, blockY ) {
 
 
 		var zoffset = blockX * blockSize + blockY * blockSize * canvasWidth;
 		var zoffset = blockX * blockSize + blockY * blockSize * canvasWidth;
-		var poffset = zoffset * 4 + 3;
+		var poffset = zoffset * 4;
 
 
 		var zlinestep = canvasWidth - blockSize;
 		var zlinestep = canvasWidth - blockSize;
 		var plinestep = zlinestep * 4;
 		var plinestep = zlinestep * 4;
@@ -578,11 +584,12 @@ THREE.SoftwareRenderer = function () {
 
 
 			for ( var x = 0; x < blockSize; x ++ ) {
 			for ( var x = 0; x < blockSize; x ++ ) {
 
 
-				zbuffer[ zoffset ] = maxZVal;
-				data[ poffset ] = 0;
+				zbuffer[ zoffset ++ ] = maxZVal;
 
 
-				zoffset ++;
-				poffset += 4;
+				data[ poffset ++ ] = clearColor.r * 255 | 0;
+				data[ poffset ++ ] = clearColor.g * 255 | 0;
+				data[ poffset ++ ] = clearColor.b * 255 | 0;
+				data[ poffset ++ ] = 255;
 
 
 			}
 			}
 
 

+ 1 - 0
examples/software_sandbox.html

@@ -80,6 +80,7 @@
 				scene.add( cube );
 				scene.add( cube );
 
 
 				renderer = new THREE.SoftwareRenderer();
 				renderer = new THREE.SoftwareRenderer();
+				renderer.setClearColor( 0xf0f0f0 );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 
 
 				container.appendChild( renderer.domElement );
 				container.appendChild( renderer.domElement );