在iOS cordova应用程序中渲染纹理时出现安全错误

在iOS cordova应用程序中渲染纹理时出现安全错误,ios,cordova,three.js,html5-canvas,phonegap,Ios,Cordova,Three.js,Html5 Canvas,Phonegap,我正在使用Cordova开发一个移动应用程序,它包含一个HTML画布,我正在使用three.js进行3d环境 当我试图渲染3d环境时,纹理没有被正确渲染;我的所有3d对象都显示为黑色。控制台正在抛出以下错误: 3.WebGLState:–SecurityError:操作不安全。-3.min.js:111 q-three.min.js:114:271 这是一个texImate2d函数 我不认为这是CORS的问题,因为我所有的纹理文件都是应用程序的本地文件。我正在创建图像对象,并使用cordova.

我正在使用Cordova开发一个移动应用程序,它包含一个HTML画布,我正在使用three.js进行3d环境

当我试图渲染3d环境时,纹理没有被正确渲染;我的所有3d对象都显示为黑色。控制台正在抛出以下错误:

3.WebGLState:–SecurityError:操作不安全。-3.min.js:111 q-three.min.js:114:271

这是一个texImate2d函数

我不认为这是CORS的问题,因为我所有的纹理文件都是应用程序的本地文件。我正在创建图像对象,并使用cordova.file.applicationDirectory+path作为加载纹理的源。当我在Three.js WebGLRenderer上调用render()时,在加载纹理并将对象添加到场景后会发生错误

更疯狂的是,这是一周前的工作,而无法加载的纹理似乎不知从何而来。我没有在应用程序中更改任何与此相关的内容,也不知道有任何重大更新。这在Android设备上仍然可以正常工作


我在这个问题上做了大量的搜索,大多数类似的问题似乎都与CORS有关,但正如我所说的,我认为情况并非如此,因为所有的纹理文件都是应用程序的本地文件。以前有人遇到过这种情况吗?谢谢

我终于明白了。对于纹理图像,我使用路径字符串设置图像的src,这在ios中显然是一个安全问题(尽管我仍然不知道为什么它开始工作然后停止)


我将其切换为使用文件系统API以二进制形式读取图像,然后使用btoa()将其转换为base64,最后将生成的字符串设置为带前缀“data:image/jpeg”的src;base64'。现在可以用了。

我终于明白了。对于纹理图像,我使用路径字符串设置图像的src,这在ios中显然是一个安全问题(尽管我仍然不知道为什么它开始工作然后停止)

我将其切换为使用文件系统API以二进制形式读取图像,然后使用btoa()将其转换为base64,最后将生成的字符串设置为带前缀“data:image/jpeg”的src;base64'。现在可以了