如何解决在iOS Cordova应用中渲染纹理时发生安全错误
我正在使用Cordova开发一个移动应用程序,其中包含一个HTML画布,并且我在3d环境中使用three.js。
当我尝试渲染3d环境时,纹理无法正确渲染;我所有的3d对象都显示为黑色。控制台抛出错误,提示:
THREE.WebGLState:–安全错误:操作不安全。 — three.min.js:111 q — three.min.js:114:271
这正在发生texImate2d函数。
我不认为这是CORS问题,因为我所有的纹理文件都在应用程序本地。我正在创建图像对象,并使用cordova.file.applicationDirectory + path作为加载纹理的源。当我在Three.js WebGLRenderer上调用render()时,在加载纹理并将对象添加到场景之后,会发生错误。
更为疯狂的是,它一周前就已经工作了,纹理加载失败似乎无处不在。我没有在应用程序中更改与此相关的任何内容,并且不知道有任何重大更新。在Android设备上,一切仍然正常。
我已经在这个问题上进行了大量搜索,并且大多数类似的问题似乎都与CORS有关,但是正如我所说,由于所有纹理文件都位于应用程序本地,因此我认为情况并非如此。有人遇到过吗?谢谢!
解决方法
我终于想通了。对于纹理图像,我正在使用路径字符串设置图像的src,这显然是ios中的安全问题(尽管我仍然不知道为什么它首先会工作然后又停止)。
我将其切换为使用FileSystem API读取图像作为二进制文件,然后使用btoa()将其转换为base64,然后最终将结果字符串设置为带有前缀'data:image / jpeg;的src; base64,”。现在可以使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。