尝试在Chrome上显示视频时出现Unity WebGL错误

时间:2017-03-13 17:06:24

标签: javascript google-chrome unity3d

我最近将Unity更新为5.5.1(也测试了Unity 5.5.2p2),我的自定义视频播放器不再使用Chrome。它可以在Firefox和Edge上运行,并且在使用5.3

构建时继续在Chrome上运行

我得到的错误是:

[.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 个答案:

答案 0 :(得分: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

与Unity 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播放器设置并在“其他设置”下进行了搜索。你可以取消选中“自动图形API”#39;并删除WebGL 2.0支持,这将支持Unity回到旧的API。我不知道如何为WebGL 2.0修复此问题,但至少应该让您的视频正常工作。

注意:* 这是一个不错的解决方法,假设您不需要访问较新的API。我希望有人会有更好的答案并知道如何修复新API的代码。