首先,我可以说我对maths / three.js / webgl只有一个非常基本的知识,很抱歉,如果其中一些问题听起来很糟糕!
无论如何,我想制作一个粒子系统 - 就像这样:https://www.youtube.com/watch?v=jwCAsyiYimY
当我做到这一点时,我意识到我有很多问题!
我创造了一个具有速度和方向等的粒子。
这些被推到了THREE.PointCloud
对于每个渲染循环,我遍历点云中的每个粒子并改变速度/方向,
//move the particles
for( var i = 0; i < _this.pool.length; i++ ){
//direction is the mouse pos
var dir = mousePos;
//var dir = new THREE.Vector3(500, 500, 0);
dir.sub( _this.pool[i].position).normalize().multiplyScalar(0.10);
//acceleration
_this.pool[i].force = dir;
//velocity
_this.pool[i].velocity.add( _this.pool[i].force );
//position
_this.pool[i].position.add( _this.pool[i].velocity );
}
我想这一切都还可以,直到我开始添加大量粒子,10000或粒子循环通过每个渲染循环,开始减慢速度。
我想我做错了,因为我可以听到麦克风上的粉丝开始吹。
目前我没有使用任何着色器。
有没有一种方法可以将计算,定位,速度等计算到GPU上,因为我会比使用JS计算更快的成像更快?