我创建了一个cubeCamera,它可以为我的一些实体的材质生成所有反射。
为了使这个相机能够被任何需要它的元素访问,我将它设为全局,并通过一次调用的自定义组件初始化它。一个场景>装了。
//<a-scene init-experience>
var cubeCamera
AFRAME.registerComponent('init-experience', {
init: function(){
cubeCamera = new THREE.CubeCamera( 0.1, 5000, 512 );
cubeCamera.renderTarget.texture.minFilter = THREE.LinearMipMapLinearFilter;
cubeCamera.updateCubeMap( this.el.renderer, this.el.object3D );
this.el.setObject3D('cube-camera', cubeCamera);
},
tick: function(){
cubeCamera.updateCubeMap( this.el.sceneEl.renderer, this.el.sceneEl.object3D );
}
});
这样,我以后可以创建一个对象,只需将 cubeCamera.renderTarget; 分配给 envMap
一切都很好。
问题是,一旦我的场景加载并且 tick:function()开始做它的事情,我会收到以下错误: GL_INVALID_OPERATION:glDrawArrays:绘图的源纹理和目标纹理是相同的。
即使有这些错误,我的场景也会在桌面和Android上运行,但会崩溃iOS上的所有浏览器。