GL_INVALID_FRAMEBUFFER_OPERATION:帧缓冲不完整或与命令不兼容

时间:2017-09-29 07:28:03

标签: android unity3d google-cardboard

我已经制作了一个360度图像查看器,我正在使用c#脚本动态更改图像纹理,因此它在PC统一上运行良好但是当我在Android设备上运行时它会说错误如下:

 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");
    }
}

我的代码

var div = document.createElement('img');
div.innerHTML = '<img src=`https://321.com/2<3.png` / >';
var elements = div.childNodes;

console.log(elements[0].src);

所以任何人都可以帮我解决这个问题。谢谢!

2 个答案:

答案 0 :(得分:0)

  

分辨率为9999x2429,sphereMS是我拥有的公共变​​量   使用拖放分配球体

这就是问题所在。 9999真的很大。大多数Android设备的限制大约是2048.除非你在非常高端和昂贵的Android设备上运行,否则任何超出此限定都是一个问题。

要尝试的一件事是替换

texturas = www.texture; 

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

LoadImage函数用于将jpg / png图像加载到纹理中。由于图像的大小,它可能也会失败。

如果LoadImage失败,那么您的服务器上的每个平台都应具有不同的纹理分辨率。 Android平台应该请求较低分辨率版本的纹理。只需继续降低纹理分辨率,直到它停止崩溃。 2048分辨率应该没问题。

我建议您阅读有关Unity中纹理大小限制的this帖子。

编辑:

如果您已将分辨率更改为低于2048并且问题仍然存在,那么这是一个错误。

安装Unity 2017.2.0p1或2017.3.0b3以获取修复程序。很少有人通过google-cardboard插件体验这一点。

答案 1 :(得分:-1)

使用参数

-disable-gpu  

<块引用>

app.disableHardwareAcceleration()

看这里 enter link description here