我正在尝试使用当前的webglview创建一个popview。
我的计划如下:每当我需要一个节目弹出窗口时,我创建一个scissorRect并开始向它渲染弹出场景。我希望保留以前屏幕的内容。据我所知,setScissor必须阻止清除弹出窗口之外的内容。但是弹出窗口以外的代码内容将是黑色的。注意当调用renderer.render()时会自动调用glclear
if (this.options.showPopUP) {
this.renderer.setScissorTest(true);
this.renderer.setViewport(popupViewPort.x, popupViewPort.y, popupViewPort.z, popupViewPort.w);
this.renderer.setScissor(popupViewPort.x, popupViewPort.y, popupViewPort.z, popupViewPort.w);
this.renderer.render(this.popUpScene, camera.camera);
}
if (!this.options.showPopUP) {
var size = this.renderer.getSize();
this.renderer.setScissorTest(false);
this.renderer.setViewport(0, 0, size.width, size.height);
this.renderer.setScissor(0, 0, size.width, size.height);
this.renderer.render(this.scene, camera.camera);
}
有什么建议吗?
答案 0 :(得分:0)
“我希望保留上一个屏幕的内容”和“当renderer.render()被称为”与彼此冲突时,注意glclear会自动调用吗?您应该渲染两者并在非弹出内容之后呈现弹出窗口。
var size = this.renderer.getSize();
this.renderer.setScissorTest(false);
this.renderer.setViewport(0, 0, size.width, size.height);
this.renderer.setScissor(0, 0, size.width, size.height);
this.renderer.render(this.scene, camera.camera);
if (this.options.showPopUP) {
this.renderer.setScissorTest(true);
this.renderer.setViewport(popupViewPort.x, popupViewPort.y, popupViewPort.z, popupViewPort.w);
this.renderer.setScissor(popupViewPort.x, popupViewPort.y, popupViewPort.z, popupViewPort.w);
this.renderer.render(this.popUpScene, camera.camera);
}
您可能希望在渲染弹出窗口之前清除颜色/ z缓冲区。