android GL无效帧缓冲区操作:帧缓冲区不完整或与命令不兼容

fruv7luv  于 2023-01-28  发布在  Android
关注(0)|答案(3)|浏览(252)

我做了一个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");
    }
}

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

b1payxdu

b1payxdu1#

分辨率为9999x2429,sphereMS是公共变量,我已使用拖放操作将sphere赋值给它
这就是问题所在。9999真的很大。大多数Android设备的上限大约是2048。任何高于这个上限的东西都是个问题,除非你在非常高端和昂贵的Android设备上运行这个。
有一种方法可以尝试

texturas = www.texture;

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

LoadImage函数用于将jpg/png图像加载到纹理中。由于图像的大小,它可能也会失败。
如果LoadImage也失败了,那么你应该在服务器上为每个平台设置不同的纹理分辨率。Android平台应该要求你的纹理的低分辨率版本。只要不断降低纹理分辨率,直到它停止崩溃。2048分辨率应该没问题。
我建议你阅读this关于Unity中纹理大小限制的帖子。
编辑:
如果您已经将分辨率更改为低于2048,而问题仍然存在,那么这是一个bug。
安装Unity 2017.2.0p1或2017.3.0b3来获得修复。很少有人在使用谷歌纸板插件时遇到这种情况。

hivapdat

hivapdat2#

大多数情况下,它发生在使用Mali GPU的Android设备上,即使是沥青8也无法在这些设备上运行(至少旧设备)。
我尝试了华为伴侣10和三星Galaxy A50 s,因为两者都使用Mali-G72 MP 12和MP3分别所以得到相同的错误和图像变黑/空白(无法渲染).
虽然同样的工作在其他Android和iOS设备上

shyt4zoc

shyt4zoc3#

使用参数

-disable-gpu


应用程序禁用硬件加速()
请在此处输入链接描述

相关问题