Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Safari iOS 8上的Webgl图像纹理失败_Javascript_Ios8_Three.js_Webgl - Fatal编程技术网

Javascript Safari iOS 8上的Webgl图像纹理失败

Javascript Safari iOS 8上的Webgl图像纹理失败,javascript,ios8,three.js,webgl,Javascript,Ios8,Three.js,Webgl,下面的示例在所有主要浏览器上都能正常工作,甚至在Safari Mac os上也能正常工作,但它无法在我的iPad上用最新的iOS8显示正确的图像。 另外,下面的教程在iOS8上也不起作用 我们应该如何在webgl iOS中显示全景图像?移动设备不允许使用与桌面浏览器相同的纹理大小。webgl\u panorama\u equirectangle.html示例中的纹理是4096x2048,这对于移动设备来说非常大。减小纹理的大小,但保持二次方的效果 2048x2048是IOS8 safari上

下面的示例在所有主要浏览器上都能正常工作,甚至在Safari Mac os上也能正常工作,但它无法在我的iPad上用最新的iOS8显示正确的图像。

另外,下面的教程在iOS8上也不起作用


我们应该如何在webgl iOS中显示全景图像?

移动设备不允许使用与桌面浏览器相同的纹理大小。
webgl\u panorama\u equirectangle.html
示例中的纹理是4096x2048,这对于移动设备来说非常大。减小纹理的大小,但保持二次方的效果

2048x2048是IOS8 safari上的最大纹理大小,或者对于全景img的2048x1024,使用带有6x 1024x1024x1024纹理的skybox是分辨率和性能方面更好的解决方案

访问iOS,我们看到“最大纹理大小:4096”。事实上,iOS支持高达4096*2048的全景图像,但我相信three.js中有一个bug。在我的测试中,如果全景图像的大小大于4096,它将自动缩放到4096*2048,并将正确渲染。但是,如果图像大小正好为4096*2048,则不会发生缩放,渲染有问题

作为一种解决方法,您可以对3.js的函数clampToMaxSize进行一个小的更改:

改变

if(image.width>maxSize | | image.height>maxSize){

if(image.width>=maxSize | | image.height>=maxSize){
这意味着我们缩放4096*2048大小的图像。在函数clampToMaxSize中,它所做的最重要的事情是

context.drawImage(image,0,0,image.width,image.height,0,0,canvas.width,canvas.height);

我也在寻找解决此问题的方法: