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

Javascript Unity WebGL尝试在Chrome上显示视频时出错,javascript,google-chrome,unity3d,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 我不确定是哪段代码产生了这个错误,但

我最近将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 land中显示视频的步骤:

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();
},

任何熟悉错误的人都可以推荐解决方法吗

我也有同样的问题。在深入研究之后,我开始仔细查看日志,并注意到Unity 5.5.2在启动时有如下消息

初始化引擎版本:5.5.2f1(3829d7f588f3)
js:2创建WebGL 2.0上下文。
渲染器:WebKit WebGL
供应商:WebKit
版本:OpenGL ES 3.0(WebGL 2.0(OpenGL ES 3.0))
GLES:3

与Unity 5.4相比,Unity 5.4有一个信息:

初始化引擎版本:5.4.0f3(a6d8d714de6f)
创建WebGL 1.0上下文。
渲染器:WebKit WebGL
供应商:WebKit
版本:WebGL 1.0(OpenGL ES 2.0)
GLES:0

请注意,API版本是不同的。在看到我转到WebGL播放器设置后,在“其他设置”下,您可以取消选中“自动图形API”,并删除WebGL 2.0支持,这将强制Unity回到旧API。我不知道如何为WebGL 2.0解决这个问题,但这至少可以让您的视频正常工作


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

我可以吻你:D谢谢你,这非常有效。你有没有把它作为一个bug报告给Unity?如果没有,我会提交一些我没有向Unity报告的东西。我正在考虑通过论坛联系Jonas(webgl示例视频资产的原始作者),但还没有做任何事情。让我知道你从团结中学到了什么!