web-dev-qa-db-ja.com

Three.js-レンダー警告:レンダーカウントまたはプリムカウントが0です

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 );
}
8
dman

この警告は、Three.jsがまだ存在していないオブジェクトをレンダリングしようとしたときにスローされます。

たとえば、ここで線を引くプログラムを考えてみましょう。

ポイントを追加する前にシーンにラインを追加すると、最初のポイントが追加されてラインが表示されるまで、この警告が表示されます。

これを取得した場合、シーンに何かが追加されるのを待っているか、あなたの場合、毎回約105を取得すると言うので、オブジェクトがシーンに追加され、非同期のために実際に作成されると思います事後の別の機能。

警告ですので、心配することはあまりありません。

7
Rush2112

position属性をBufferGeometryオブジェクトに渡さなかったため、この問題が発生しました。私のシェーダーは独自の計算でpositionをオーバーライドしますが、これは必須の属性のようです。

私はこれを次のように解決しました:

const positions = new Float32Array(PARTICLE_COUNT * 3);
myGeometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));

シェーダーで値を使用していない場合は、デフォルト値の0で問題ありません。

1
ty.