我看到的所有示例都使用循环结构来渲染场景,如下所示:
renderer.render(cena, camera);
function render(){
renderer.render(cena, camera);
//code to render
requestAnimationFrame(render);
}
render();
但是我想在另一个结构中控制渲染,只有当我与一个东西进行交互时......比如
while(true){
//code - operations
alert('press ok to another step'); // or wait 2 sec
renderer.render(scene,camera);
}
这样做的正确方法是什么?
答案 0 :(得分:1)
当然,如果你愿意,你可以随时调用renderer.render,尽管在requestAnimationFrame()中渲染它可能要好得多(性能要好得多)。 如果你真的需要改变你不想渲染的东西(例如,修改场景对象的几个异步函数),你总是可以这样做。
function render(){
//code to update scene
if (toRender) renderer.render(scene, camera);
requestAnimationFrame(render);
}
render();
在更新场景时将toRender
设置为false,这会阻止渲染器重新绘制场景,然后将toRender
设置为true以使其在下一帧中绘制场景
答案 1 :(得分:0)
如本例所示,您只需调用renderer.render() http://threejs.org/examples/#raytracing_sandbox