使用three.js
在我的家用电脑上使用Nvidia GNU,我的浏览器控制台中有大约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 );
}
答案 0 :(得分:8)
当Three.js尝试渲染尚不存在的对象时,抛出此警告。
例如,在这里绘制一条线程。
如果在添加任何点之前将该行添加到场景中,则会出现此警告,直到添加第一个点并且可以看到一行。
如果你得到这个,要么有东西等待添加到场景中,或者在你的情况下,因为你说你每次都得到大约105,我认为一个对象被添加到场景然后由于不同步,是实际上是在另一个函数中制作的。
由于这是一个警告,没有太多可怕的。
答案 1 :(得分:2)
我遇到了这个问题,因为我没有将position
属性传递给BufferGeometry
对象。尽管我的着色器使用自己的计算覆盖了position
,但它似乎是必需的属性。
我用以下方法解决了这个问题:
const positions = new Float32Array(PARTICLE_COUNT * 3);
myGeometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));
如果不使用着色器中的值,则默认值为0即可。