Javascript Unity WebGL尝试在Chrome上显示视频时出错
我最近将Unity更新为5.5.1(也测试了Unity 5.5.2p2),我的定制视频播放器不再使用Chrome。但是,它可以在Firefox和Edge上运行,并且在使用5.3构建时可以继续在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 我不确定是哪段代码产生了这个错误,但
[.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示例视频资产的原始作者),但还没有做任何事情。让我知道你从团结中学到了什么!