Преглед изворни кода

Fixed webgl_clipping_intersection sluggishness.

Mr.doob пре 8 година
родитељ
комит
adc0d8dbe7
1 измењених фајлова са 17 додато и 8 уклоњено
  1. 17 8
      examples/webgl_clipping_intersection.html

+ 17 - 8
examples/webgl_clipping_intersection.html

@@ -20,6 +20,8 @@
 
 		<script>
 
+			var hasChanged = true;
+
 			var camera, scene, renderer;
 
 			var params = {
@@ -35,7 +37,7 @@
 			];
 
 			init();
-			render();
+			animate();
 
 			function init() {
 
@@ -52,7 +54,7 @@
 				camera.position.set( - 20, 30, 40 );
 
 				var controls = new THREE.OrbitControls( camera, renderer.domElement );
-				controls.addEventListener( 'change', render ); // use only if there is no animation loop
+				controls.addEventListener( 'change', function () { hasChanged = true; } ); // use only if there is no animation loop
 				controls.minDistance = 10;
 				controls.maxDistance = 100;
 				controls.enablePan = false;
@@ -109,7 +111,7 @@
 
 					}
 
-					render();
+					hasChanged = true;
 
 				} );
 
@@ -121,7 +123,7 @@
 
 					}
 
-					render();
+					hasChanged = true;
 
 				} );
 
@@ -129,7 +131,7 @@
 
 					helpers.visible = value;
 
-					render();
+					hasChanged = true;
 
 				} );
 
@@ -146,13 +148,20 @@
 
 				renderer.setSize( window.innerWidth, window.innerHeight );
 
-				render();
+				hasChanged = true;
 
 			}
 
-			function render() {
+			function animate() {
+
+				requestAnimationFrame( animate );
+
+				if ( hasChanged ) {
 
-				renderer.render( scene, camera );
+					renderer.render( scene, camera );
+					hasChanged = false;
+
+				}
 
 			}