Javascript Safari iOS 8上的Webgl图像纹理失败
下面的示例在所有主要浏览器上都能正常工作,甚至在Safari Mac os上也能正常工作,但它无法在我的iPad上用最新的iOS8显示正确的图像。 另外,下面的教程在iOS8上也不起作用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上
我们应该如何在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);
我也在寻找解决此问题的方法: