优化静态场景的Three.JS渲染时间
Optimize Three.JS render time for a static scene
我有一个包含15-20个对象和4个灯光的场景。我的渲染器的属性是
function getRenderer(container, width, height) {
var renderer;
renderer = new THREE.WebGLRenderer({ alpha: false, antialias: true, preserveDrawingBuffer: false });
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(width, height);
container.appendChild(renderer.domElement);
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;
renderer.setClearColor(new THREE.Color(0xCCE0FF), 1);
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.clear();
return renderer;
}
我的渲染循环每秒渲染一次场景。
function renderLoop() {
this.renderer.render(this.scene, this.camera);
setTimeout(function () {
renderLoop();
}, 1000);
}
我面临的问题是this.renderer.render(this.scene, this.camera)
渲染场景大约需要100毫秒,但我希望它低于33毫秒,这样我就可以拥有至少30帧/秒的帧速率。
有没有一种方法可以通过任何方式优化渲染器性能(比如更改任何属性或其他什么)?
我不想使用worker.js,因为我的场景是静态的,不包含任何复杂的计算。
如果有一个静态场景,就没有理由有动画循环。只需在场景和所有资源加载后渲染一次即可。
这就是为什么存在对加载器函数的回调。这就是为什么存在CCD_ 2。
有许多可能的用例。研究三个.js示例,为您的特定用例找到解决方案。
如果使用OrbitControls
来控制相机,则可以在相机移动时强制重新渲染,如下所示:
controls = new THREE.OrbitControls( camera, renderer.domElement );
controls.addEventListener( 'change', render ); // use if there is no animation loop
three.js r.75
相关文章:
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- 如何使用自定义功能覆盖时间轴对象.js时间轴对象的_repaintMinorText
- D3 JS时间格式
- CreateJS:吐温JS时间轴补间多次更改属性而不链接
- d3.js 时间序列图表上的标签
- 如何在这个js时间脚本上添加day
- D3.js时间刻度刻度-仅限年和月-自定义时间格式
- D3.js时间格式
- 如何将瞬间JS时间插入MySQL
- D3.js时间序列无限滚动
- D3 JS-时间轴上的刻度间距被月份边界搞砸了
- Node.js时间模块时区列表
- JS时间选择器设置和谐的最小和最大时间
- Moment.js时间格式错误
- Moment js时间选择器
- 在JS时间轴上以JSON文件显示时间
- 在d3.js时间序列图上插入分钟和小时
- JS时间计算-一个日期在两个日期之间发生了多少次
- 将yyyy-mm-dd转换为JS时间戳
- D3.JS时间序列折线图,具有实时数据、平移和缩放功能