Three.jsの使用
Nvidia GNUを搭載した自宅のPCでは、ブラウザコンソールにこれらのうち約105個が表示されます。
/#/home:1 [.CommandBufferContext]RENDER WARNING: Render count or primcount is 0
しかし、私のインテルではGNUラップトップではありません。これはGNUドライバーとの不一致ですか?それとも私が修正できるものですか?
var animationId;
var CAMERA_POSITION = 5000;
function runClouds() {
var speed = 0.8;
cloudsContainer.style.display = 'block';
animationId = requestAnimationFrame( runClouds );
camera.position.y = -75;
if (camera.position.z <= 0) {
window.cancelAnimationFrame(animationId);
camera.position.z = CAMERA_POSITION;
cloudsContainer.style.display = 'none';
return true;
} else if (camera.position.z <= 400) {
speed = 0.1;
} else if (camera.position.z <= 900) {
speed = 0.3;
} else if (camera.position.z <= 2000) {
speed = 0.7;
}
camera.position.z -= 100 * speed;
renderer.render( scene, camera );
}
この警告は、Three.jsがまだ存在していないオブジェクトをレンダリングしようとしたときにスローされます。
たとえば、ここで線を引くプログラムを考えてみましょう。
ポイントを追加する前にシーンにラインを追加すると、最初のポイントが追加されてラインが表示されるまで、この警告が表示されます。
これを取得した場合、シーンに何かが追加されるのを待っているか、あなたの場合、毎回約105を取得すると言うので、オブジェクトがシーンに追加され、非同期のために実際に作成されると思います事後の別の機能。
警告ですので、心配することはあまりありません。
position
属性をBufferGeometry
オブジェクトに渡さなかったため、この問題が発生しました。私のシェーダーは独自の計算でposition
をオーバーライドしますが、これは必須の属性のようです。
私はこれを次のように解決しました:
const positions = new Float32Array(PARTICLE_COUNT * 3);
myGeometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));
シェーダーで値を使用していない場合は、デフォルト値の0で問題ありません。