我做了一个360图像查看器上的统一和我改变图像纹理动态使用C#脚本,所以它的工作在PC上的统一罚款,但当我在Android设备上运行它说下面的错误:
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");
}
}
所以任何人都可以帮助我解决这个问题,我可以解决它。谢谢!
3条答案
按热度按时间b1payxdu1#
分辨率为9999x2429,sphereMS是公共变量,我已使用拖放操作将sphere赋值给它
这就是问题所在。9999真的很大。大多数Android设备的上限大约是2048。任何高于这个上限的东西都是个问题,除非你在非常高端和昂贵的Android设备上运行这个。
有一种方法可以尝试
与
LoadImage
函数用于将jpg/png图像加载到纹理中。由于图像的大小,它可能也会失败。如果
LoadImage
也失败了,那么你应该在服务器上为每个平台设置不同的纹理分辨率。Android平台应该要求你的纹理的低分辨率版本。只要不断降低纹理分辨率,直到它停止崩溃。2048分辨率应该没问题。我建议你阅读this关于Unity中纹理大小限制的帖子。
编辑:
如果您已经将分辨率更改为低于2048,而问题仍然存在,那么这是一个bug。
安装Unity 2017.2.0p1或2017.3.0b3来获得修复。很少有人在使用谷歌纸板插件时遇到这种情况。
hivapdat2#
大多数情况下,它发生在使用Mali GPU的Android设备上,即使是沥青8也无法在这些设备上运行(至少旧设备)。
我尝试了华为伴侣10和三星Galaxy A50 s,因为两者都使用Mali-G72 MP 12和MP3分别所以得到相同的错误和图像变黑/空白(无法渲染).
虽然同样的工作在其他Android和iOS设备上
shyt4zoc3#
使用参数
或
应用程序禁用硬件加速()
请在此处输入链接描述