Javascript 只有geometry.elementsEndUpdate会导致内存分配-为什么?
如果我有一个简单的动画功能Javascript 只有geometry.elementsEndUpdate会导致内存分配-为什么?,javascript,memory,three.js,Javascript,Memory,Three.js,如果我有一个简单的动画功能 function animate() { geometry.elementsNeedUpdate = true; // allocates memory without geometry.faces[ 0 ].color = ... requestAnimationFrame( animate ); renderer.render( scene, camera ); } 我得到一个内存分配,即使没有改变任何元素。 然后我添加了面部颜色的操纵 functio
function animate() {
geometry.elementsNeedUpdate = true; // allocates memory without geometry.faces[ 0 ].color = ...
requestAnimationFrame( animate );
renderer.render( scene, camera ); }
我得到一个内存分配,即使没有改变任何元素。
然后我添加了面部颜色的操纵
function animate() {
geometry.elementsNeedUpdate = true;
// geometry.colorsNeedUpdate = true; // not necessary
// material.needsUpdate = true; // not necessary
time = clock.getElapsedTime();
if ( time * 16 % 10 < 5 ) {
geometry.faces[ 0 ].color = colorBlue;
} else {
geometry.faces[ 0 ].color = colorRed;
}
requestAnimationFrame( animate );
renderer.render( scene, camera ); }
function animate(){
geometry.elementsNedupdate=true;
//geometry.colorsnedupdate=true;//不需要
//material.needsUpdate=true;//不需要
time=clock.getElapsedTime();
如果(时间*16%10<5){
geometry.faces[0]。颜色=colorBlue;
}否则{
geometry.faces[0]。颜色=红色;
}
请求动画帧(动画);
渲染器。渲染(场景、摄影机);}
并且它仍保留在内存分配中
geometry.elementsNeedUpdate=true代码>是更改面颜色所必需的
如何避免内存分配
完整示例可在中找到,您希望更改对象的面颜色
您可以使用copy()
或setHex()
这样做:
mesh.geometry.faces[ 0 ].color.copy( myColor ); // or .setHex( 0xff0000 )
mesh.geometry.colorsNeedUpdate = true; // required if geometry previously rendered
不要不必要地设置其他needsUpdate
标志
不要像当前那样指定新的THREE.Color
对象
three.js r.84您想更改对象的面颜色
您可以使用copy()
或setHex()
这样做:
mesh.geometry.faces[ 0 ].color.copy( myColor ); // or .setHex( 0xff0000 )
mesh.geometry.colorsNeedUpdate = true; // required if geometry previously rendered
不要不必要地设置其他needsUpdate
标志
不要像当前那样指定新的THREE.Color
对象
3.js r.84