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

标签 javascript google-chrome unity-game-engine

我最近将 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();
},

任何熟悉该错误的人都可以建议解决方法吗?

最佳答案

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

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

相比Unity 5.4有一条消息:

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

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

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

关于javascript - Unity WebGL 尝试在 Chrome 上显示视频时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769415/

相关文章:

c# - 《2048》的游戏开发者是如何让他们的方 block 移动流畅的?请参阅下面的详细信息

javascript - 在 Angular 组件中共享大的 json 数据是好是坏?

javascript - 如何使用Redux-Saga配合Hooks调用API

javascript - Bokeh:将变量传递给 Widgets 的 CustomJS

javascript - Firefox 中的大子字符串比 Chrome 快约 9000 倍 : why?

c# - 如何在 Unity 中将对象序列化为 JSON

C# Unity JsonUtility,如何将这个简单的 json 转换为某种有用的 C# 对象?

通过索引号怪癖的javascript字符串分配

javascript - Chrome 扩展 : how can I intercept a cookie?

javascript - 如何将 chrome tts 输出保存到客户端或服务器(仅限浏览器)