2017-09-29 1049 views
1

不相容我已经对统一360的图像浏览器,我使用动态C#脚本改变图像的纹理,所以在PC上的团结工作正常,但当我的Android设备上运行它,它说以下错误:GL_INVALID_FRAMEBUFFER_OPERATION:帧缓冲区是不完整的或命令

OPENGL NATIVE PLUG-IN ERROR: GL_INVALID_FRAMEBUFFER_OPERATION: Framebuffer is not complete or incompatible with command 

我下面

IEnumerator registerFunc(WWW www) 
{ 
    yield return www; 
    if (www.error == null) 
    //if(true) 
    { 
     Debug.Log("OK - CountTime"); 
     texturas = www.texture; 
     www.Dispose(); 
     www = null; 

     sphereMS.material.mainTexture = texturas;// here i am getting error 
    } 
    else 
    { 
     Debug.Log("ERROR"); 
    } 
} 

代码,以便任何人可以帮助我在这我怎么能解决it.Thanks!

+0

我有几个问题:1.图像扩展名是什么? 2.图像的大小是多少? 3.删除'www.Dispose();'会发生什么? 4.你的Unity版本是什么? – Programmer

+0

扩展名为jpg,大小为1.36 mb,www.dispose我不知道正在做什么,但如果我们删除同样的事情hppn和统一版本是2017.1.0f3 –

+0

当我说尺寸,我其实是指决议。另外,请说明'sphereMS'是如何声明的。 – Programmer

回答

0

分辨率为9999x2429和sphereMS是公共变量,而我已经 分配领域使用拖放

这就是问题所在。 9999真的很大。大多数Android设备的限制约为2048.除非您在非常高端且昂贵的Android设备上运行此操作,否则以上任何情况都是问题。

一件事是尝试更换

texturas = www.texture; 

texturas = new Texture2D(4, 4); 
texturas.LoadImage(www.bytes); 

的​​功能是用来加载JPG/PNG图像到纹理。由于图像的大小,它可能也会失败。


如果​​失败过,那么你应该有你的服务器上的每个平台不同的纹理分辨率。 Android平台应该请求更低分辨率的纹理版本。只要继续减少纹理分辨率,直到它停止崩溃。 2048分辨率应该没问题。

我建议你阅读this后约在Unity纹理大小限制。

编辑:

如果更改分辨率为2048之下,问题仍然存在,那么这是一个错误。

安装统一2017.2.0p1或2017.3.0b3得到修复。很少有人通过google-cardboard插件体验这一点。

+0

由于已分配球,但我已经使用较低分辨率的图像也与 –

+0

关于限制同一个hppn你可能是错的怎么把它360图像n在Android原生代码我正在下载这个图像,它工作fine.coz整个9999x2429不会在屏幕上呈现,一旦我们高清移动相机看到其他东西 –

+0

不管它是否是360图像或不。使用2048纹理,这应该工作。另外,请阅读我的答案,在哪里说*“LoadImage”*的一部分。也尝试一下。不要在没有尝试答案的情况下发表评论。你可以怀疑它,但先试一下,然后再评论 – Programmer