2017-09-29 1054 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