我写了一个webgl程序,可以很好地与本地服务器协同工作,现在,我想在本地运行它。 但我有错误,经过一番研究,我发现它是加载纹理时的跨域问题。WebGL本地纹理和跨域
function loadTexture(path) {
var texture = new THREE.Texture(texture_placeholder);
var material = new THREE.MeshBasicMaterial({ map: texture, overdraw: true});
var image = new Image();
image.onload = function() {
texture.needsUpdate = true;
material.map.image = this;
render();
};
texture.deallocate();
renderer3D.deallocateTexture(texture);
return material;
}
我尝试了几种解决方案:
github.com/mrdoob/three.js/issues/1305
github.com/mrdoob/three.js/issues/944
gist.github.com/ekeneijeoma/1186920
github.com/mrdoob/three.js/wiki/How-to-run-things-locally(1.更改浏览器中本地文件的安全性(访问页面为file:/// example))
我确切地说我在Firefox上没有问题,它的工作原理没有改变任何东西。 在Chrome上运行的唯一解决方案是使用--allow-file-access-from-files启动它。 而在IE上,我不知道如何解决它,我启用了浏览器安全选项“跨域访问数据源”和“导航不同域的子帧”(http://msdn.microsoft.com/fr-fr/library/ee797612(v=cs.20).aspx),但没有任何内容。我使用IEWebGL,我注意到在http://iewebgl.com/,“IEWebGL v1.0发布”部分,它被写为“ - 安全(没有本地内容加载,没有跨域纹理)”。所以也许它不能在IE浏览器上解决由于IEWebGL!?
那么如果有IE浏览器的解决方案是什么?有没有办法通过更改代码来解决问题,而无需使用特殊选项启动本地服务器或Chrome?
谢谢!
这部分是为答案,而不是答复;您应该将其添加为其他答案的评论,而不是。如果您对其他答案感到满意,请点击复选标记接受答案。 – WestLangley