2017-03-13 112 views
1

我最近更新了Unity到5.5.1(也測試過Unity 5.5.2p2),我的自定義視頻播放器不再適用於Chrome。它適用於Firefox和邊緣但是並繼續在Chrome瀏覽器5.3嘗試在Chrome上顯示視頻的Unity WebGL錯誤

我得到的錯誤時,建築是這樣的:

[.Offscreen-For-WebGL-000001C45847DE90]GL ERROR :GL_INVALID_OPERATION : glCopyTextureCHROMIUM: texture is immutable 

我不知道該代碼生成此錯誤,但這裏的我們正在做什麼在Javascript土地上顯示視頻:

WebGLMovieTextureCreate: function(url) 
{ 
    var str = Pointer_stringify(url); 
    var video = document.createElement('video'); 
    video.style.display = 'none'; 
    video.src = str; 
    video.crossOrigin='anonymous'; 
    return videoInstances.push(video) - 1; 
}, 

WebGLMovieTextureUpdate: function(video, tex) 
{ 
    if (videoInstances[video].paused) 
     return; 
    GLctx.bindTexture(GLctx.TEXTURE_2D, GL.textures[tex]); 
    GLctx.texImage2D(GLctx.TEXTURE_2D, 0, GLctx.RGBA, GLctx.RGBA, GLctx.UNSIGNED_BYTE, videoInstances[video]); 
}, 

WebGLMovieTexturePlay: function(video) 
{ 
    videoInstances[video].play(); 
}, 

任何熟悉錯誤的人都可以推薦解決嗎?

回答

1

我有同樣的問題。深入挖掘之後,我開始仔細查看日誌,注意到Unity 5.5.2在啓動時有如下消息。

Initialize engine version: 5.5.2f1 (3829d7f588f3) UnityLoader.js:2 Creating WebGL 2.0 context. Renderer: WebKit WebGL Vendor: WebKit Version: OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium)) GLES: 3

相比統一5.4具有消息:

Initialize engine version: 5.4.0f3 (a6d8d714de6f) Creating WebGL 1.0 context. Renderer: WebKit WebGL Vendor: WebKit Version: WebGL 1.0 (OpenGL ES 2.0 Chromium) GLES: 0

注意,API的版本是不同的。在看到我進入WebGL播放器設置並在「其他設置」下,您可以取消選中「Auto Graphics API」並刪除WebGL 2.0支持,這將強制Unity回到舊的API。我不知道如何解決這個WebGL 2.0,但至少應該讓你的視頻工作。

注意:*這是一個足夠體面的解決方法,假設您不需要訪問較新的API。我希望有人會有更好的答案,並知道如何修復新API的代碼。

+0

我可以吻你:D謝謝你,那很好。你有沒有把它作爲Unity的錯誤報告?如果沒有,我會提交一些東西 –

+0

我還沒有向Unity彙報過。我正在考慮通過論壇聯繫Jonas(webgl樣本視頻資產的原始作者),但尚未做任何事情。讓我知道你從Unity中找到什麼! –

相關問題