And*_*nko 5 javascript performance textures three.js
我在开始渲染对象并为其设置动画之前预加载并创建材质纹理。
但是,只有当物体显示在相机中时,三个 JS 才会将纹理上传到 GPU。
因此,当新对象出现在屏幕上时,由于 GPU 上的纹理发送,动画会出现抖动。问题是如何在创建纹理期间将纹理发送到 GPU,以避免在运行时发生这种情况?
将图像加载到 GPU 需要花费大量时间。
我的猜测是遍历你的对象树,将每个对象的frustumCulled标志设置为 false,调用renderer.render(scene, ...)一次,然后将标志放回 true(或其他任何值)。
function setAllCulled(obj, culled) {
obj.frustumCulled = culled;
obj.children.forEach(child => setAllCulled(child, culled));
}
setAllCulled(scene, false);
renderer.render(scene, camera);
setAllCulled(scene, true);
Run Code Online (Sandbox Code Playgroud)
您还可以调用renderer.setTexture2D(texture, 0)强制初始化纹理。
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |