我创建了一个 cubeCamera,它为我的一些实体的材质生成所有反射。
为了使它成为一个可以被任何需要它的元素访问的相机,我将它设为全局并通过一个自定义组件对其进行初始化,该组件在 <a-scene> 加载后调用。
//<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 上崩溃任何浏览器。