浏览代码

Resize cameras viewports correctly on the webgl_camera_array example

Fernando Serrano 6 年之前
父节点
当前提交
b46942b78f
共有 1 个文件被更改,包括 24 次插入2 次删除
  1. 24 2
      examples/webgl_camera_array.html

+ 24 - 2
examples/webgl_camera_array.html

@@ -20,6 +20,7 @@
 
 
 			var camera, scene, renderer;
 			var camera, scene, renderer;
 			var mesh;
 			var mesh;
+			var AMOUNT = 6;
 
 
 			init();
 			init();
 			animate();
 			animate();
@@ -28,7 +29,6 @@
 
 
 				var ASPECT_RATIO = window.innerWidth / window.innerHeight;
 				var ASPECT_RATIO = window.innerWidth / window.innerHeight;
 
 
-				var AMOUNT = 6;
 				var WIDTH = ( window.innerWidth / AMOUNT ) * window.devicePixelRatio;
 				var WIDTH = ( window.innerWidth / AMOUNT ) * window.devicePixelRatio;
 				var HEIGHT = ( window.innerHeight / AMOUNT ) * window.devicePixelRatio;
 				var HEIGHT = ( window.innerHeight / AMOUNT ) * window.devicePixelRatio;
 
 
@@ -95,9 +95,31 @@
 
 
 			function onWindowResize() {
 			function onWindowResize() {
 
 
-				camera.aspect = window.innerWidth / window.innerHeight;
+				var ASPECT_RATIO = window.innerWidth / window.innerHeight;
+				var WIDTH = ( window.innerWidth / AMOUNT ) * window.devicePixelRatio;
+				var HEIGHT = ( window.innerHeight / AMOUNT ) * window.devicePixelRatio;
+
+				camera.aspect = ASPECT_RATIO;
 				camera.updateProjectionMatrix();
 				camera.updateProjectionMatrix();
 
 
+				for ( var y = 0; y < AMOUNT; y ++ ) {
+
+					for ( var x = 0; x < AMOUNT; x ++ ) {
+
+						var subcamera = camera.cameras[ AMOUNT * y + x ];
+
+						subcamera.viewport.set(
+							Math.floor( x * WIDTH ),
+							Math.floor( y * HEIGHT ),
+							Math.ceil( WIDTH ),
+							Math.ceil( HEIGHT ) );
+
+						subcamera.aspect = ASPECT_RATIO;
+						subcamera.updateProjectionMatrix();
+
+					}
+				}
+
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 
 
 			}
 			}