Three.js: 创建 WebGL 上下文时出错

创建于 2014-06-16  ·  64评论  ·  资料来源: mrdoob/three.js

我正进入(状态

创建 WebGL 上下文时出错。
未捕获的类型错误:无法读取 null 的属性“getExtension”

http://threejs.org/examples和我的网站http://arefin.in ( r58 ) 上。
chrome:// gpu / 显示启用的所有内容。

你认为有什么不对?

Browser Issue

最有用的评论

我也是。 我发现我的 GPU(Intel HD 3000)现在在 Chrome 上被列入黑名单(在 chrome://gpu/ 查看你的)。 我去了chrome://flags/并启用了--ignore-gpu-blacklist标志。 现在一切都恢复正常了。

所有64条评论

您应该分享您的系统规格。 (CPU、操作系统、显卡型号、驱动程序版本、浏览器...)

AMD FX-4130,Win 7 build 7600,GeForce GTX 650 运行 9.18.13.2018,Chrome 35.0.1916.153 m。
大约一周前一切都很好。 自 2013 年 5 月以来一直在运行我的网站。

最新的驱动程序? 在其他浏览器上试过?

我的意思是,如果过去一切正常而您没有更改代码,则可能与操作系统、浏览器和/或图形驱动程序有关...

我认为 Windows 上最新的开发频道 Chrome 在更新后做了一些有趣的事情。 刚刚更新后,threejs 无法在任何示例上创建 webgl 上下文 - 在更新之前工作正常。

Chrome 版本 37.0.2054.2 dev-m(64 位)
视窗 8.1 64 位
ATI Radeon HD 6800 系列
ATI 驱动程序封装版本 14.10.1006-140417a-171099C

chrome://gpu显示
“WebGL:不可用。硬件加速不可用”
它还表明 --disable-gpu 标志已传递给 chrome.exe!

杀死所有 chrome.exe 进程并通过直接执行 chrome.exe 运行(在 C:\Program Files (x86)Google\ChromeApplication 中)似乎可以解决这个问题。 检查您的快捷方式以确保该标志不会被通过。

也许这不是同一个问题,但如果您在更新后看到此问题,请先检查一下。

让我试试看然后回复你。 我在这里也看到了这个问题 - http://japhr.blogspot.in/2014/05/webgl-in-chrome-36-linux-is-not-working.html

谢谢

现在一切都恢复正常了。 我猜 Chrome 更新后事情会自行解决? 大多数人没有遇到这个问题,也许只有少数人遇到过。 不过,Chrome 应该解决这些问题。
我想你可以关闭这个问题。
谢谢

重新启动 Chrome 为我解决了这个问题。

重新启动 chrome 我的 chrome 版本 37.0.2062.120(64 位)后仍然有问题......请帮助我解决这个问题。

及其在 ubuntu linux 13.04 上

适用于 linux 的最新 Chrome 是 39.0.2171.95。

我在 Ubuntu 14.10 上使用最新版本 39.0.217.95(64 位)也遇到了同样的问题(创建 WebGL 上下文时出错。)。

很抱歉重新启动此线程,但我遇到了同样的问题(创建 WebGL 上下文时出错,无法读取 null 属性 getExtension)、Chrome 47.0.2526.106 (64)、Ubuntu 15.10、专用 GPU 上的 nVidia Optimus(three.js 无法运行)如果我将其设置为集成,则完全没有)。 我并不在乎,因为我通常使用 Firefox,但其他人可能会阻止我使用 Chrome 进行测试。

同样的问题,在 Dev 频道和 Canary 上,已经发生了数周。 Three.js 适用于 FF 但不适用于 Chrome。 相当大的问题,因为我主要使用 Chrome。

Chrome 49.0.2609.0 canary(64 位)、49.0.2593.0 dev-m(64 位)、Windows 8.1、nVidia Optimus

@jwlarocque @GameKyuubi

在这些情况下,最好检查https://get.webgl.org/。 如果该页面不起作用,则three.js 对此无能为力,您应该将问题报告给Google/Chrome。

是的,那里坏了。 真的很奇怪会出现这样的问题
这么久都没人注意。
2016 年 1 月 2 日下午 5:09,“Mr.doob”通知@github.com 写道:

@jwlarocque https://github.com/jwlarocque @GameKyuubi
https://github.com/GameKyuubi

在这些情况下,最好检查https://get.webgl.org/。 如果说
页面不起作用,three.js 对此无能为力,而您
应该将问题报告给 Google/Chrome。


直接回复此邮件或在 GitHub 上查看
https://github.com/mrdoob/three.js/issues/4927#issuecomment -168372764。

我想指出,在我的 Mac 上有一个切换 Nvidia GPU,修改它的 GPU 切换行为,例如使用 gfxCardStatus 可能会导致 Chrome 在创建上下文时失败,直到您退出 Chrome 并重新打开它为止。 这是我能够在这台特定机器上显示问题的一种方式。

这是注销/重新启动通常可以很好地解决的问题类型。

确保在您的 chrome 设置中选择了此选项。
screen shot 2016-02-09 at 1 59 46 pm

是的,这根本不是问题。 一直在检查它,即使使用最新的 Chrome Canary 更新和最新的 NVIDIA 驱动程序,问题仍然存在。

这似乎是在对 Three.js 应用程序进行一些密集测试后随机发生的。 有一刻一切都渲染得很好,现在我无法加载任何 WebGL 上下文。 硬件加速在设置中开启。 但是在chrome://gpu 中

光栅化:仅限软件。 禁用硬件加速
Canvas:仅软件,硬件加速不可用

有任何想法吗?

我也在 Linux 上看到了这个问题。 重新启动 Chrome 不能修复它。

我收到同样的错误“创建 WebGL 上下文时出错”。 在 Chrome 50.0.2661.75 m(64 位)/Windows 7 上。
驱动程序应该没问题,因为我在 Firefox 中加载同一页面没有任何问题。

@JamesMilnerUK这里有同样的问题,加载了很多 collada 模型,冻结浏览器直到它崩溃,现在我无法再获得 WebGL 上下文。 关闭/重新打开 Chrome 没有修复它。 你能找到解决办法吗?

编辑:找到了一个修复程序——必须取消选中硬件加速,重新启动,重新检查它并再次重新启动

从重启 Chrome 和重启 Mac 开始

Mac - Chrome - 版本 52.0.2743.116(64 位) - 好的

Mac - Chrome Canary - 版本 55.0.2850.0 Canary(64 位) - 失败

THREE.WebGLRenderer: Error creating WebGL context.WebGLRenderer @ three.js:19571
Uncaught TypeError: Cannot read property 'getExtension' of null
    at Object.get (three.js:16906)
    at new WebGLRenderer (three.js:19577)
    at init ((index):59)
    at (index):54
                    case 'WEBGL_depth_texture':
                        extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );
                        break;

我尝试了chrome://flags/并启用了这个:

WebGL 草稿扩展 Mac、Windows、Linux、Chrome 操作系统、Android
启用此选项允许 Web 应用程序访问仍处于草稿状态的 WebGL 扩展。

还是没有运气...

金丝雀? 您可能应该向 Chromium 项目报告回归。

英石!!!

我的 Chrome 自动更新 - 稳定版在 53.0.2785.101 并停止工作,我也是...

编辑:

错误报告: https : =645390

我也是。 我发现我的 GPU(Intel HD 3000)现在在 Chrome 上被列入黑名单(在 chrome://gpu/ 查看你的)。 我去了chrome://flags/并启用了--ignore-gpu-blacklist标志。 现在一切都恢复正常了。

Chrome 有时会在发布之间将驱动程序添加到其黑名单中。 我的三星 Galaxy s6 1 个月没有 webgl,下个月它有,因为 chrome 将它从黑名单中删除了。 事情也可以反过来。 不过,您可以自行承担风险忽略黑名单。 我用手机忽略了它,一切都_did_工作正常。

即 + firefox 工作正常,chrome 最新版本不是我的开发人员之一。 系统,2011 卡的最新 Nvideo Quadro 驱动程序...
通过进入 Chrome 的高级设置修复 - 使用硬件 Acc。 GFX 未选中,已选中 - 重新启动,现在可以工作

我想念 flash :-( - 我不能指望最终用户经历这个麻烦

在 Chrome 中不确定的时间后,我遇到了同样的异常。 它只是偶尔发生,似乎只有在全屏场景时才会发生,但目前我能找到的唯一修复方法是重新启动浏览器,这在公共站点上还不够好! 我可以在很长一段时间内创建上下文,但是当我再次尝试new THREE.WebGLRenderer()时它会突然失败,所以它不可能是由于列入黑名单的 gfx 卡。 我无法临时复制它,尽管这使得它几乎无法修复。 任何人都知道如何追踪根本原因?

硬件加速已启用。

Error creating WebGL context.
Uncaught TypeError: Cannot read property 'getExtension' of null

是的,现在我也遇到了 - Macbook Pro OS 10.11.5 上的 Chrome

@deejbee @cindyloo如果你们能分享你的硬件信息会很有帮助。

@mrdoob这是运行 Win10 的 Intel HD Graphics 530。 驱动程序版本为 4.4.0 Build 10.18.15.4279。 这是戴尔 Optiplex 7040

GPU Caps Viewer v1.31.1.0 报告

同样在这里

在这种情况下,可能会退回 CanvasRenderer 吗?

这到底是怎么回事,这是在 Win10 上使用当前的 Chrome 发生的,有没有关于如何解决这个问题的新提示? 即使在 Internet Explorer 中也能工作 :)

@alberto2000你有什么 GPU?

@mrdoob这是一张 Radeon 卡,重新安装驱动程序解决了它。

也得到这个,不经常但偶尔。

操作系统
Mac 操作系统 10.11.6
浏览器
铬 54.0.2840.98

对于 2017 年读到这篇文章的任何人,我在 2011 年末的 MacBook Pro 上修复了这个问题,方法是禁用节电自动显卡切换以强制高性能 GPU 一直接管。

我仍然看到这些来自我们的服务器日志。 最近的来自:
操作系统:Windows 10
浏览器:Chrome 55.0.2883.87

注意:我们正在运行 r74 版本(直到最近解决的雾问题合并到新版本中👍)

注意:我们正在运行 r74 版本(直到最近解决的雾问题合并到新版本中👍)

什么雾问题?

啊,我明白了!

在 chrome 的高级设置中打开“在可用的情况下使用硬件加速”解决了我的问题

我在我使用的错误跟踪系统中看到了这个错误。 如果它有帮助,以下是跟踪器捕获的有错误的用户的系统信息:

用户代理: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
操作系统: Mac OS X 10.12.3
浏览器: Chrome 56.0.2924

这是错误跟踪器在控制台中捕获的内容:

THREE.WebGLRenderer 84
THREE.WebGLRenderer: Error creating WebGL context.
TypeError: Cannot read property 'getExtension' of null

该系统信息缺少完全有用的显卡详细信息。

显卡:Intel HD Graphics 4000 1024 MB

我能够与遇到此错误的用户交谈,他们传递了上面的图形卡信息。 希望有帮助! 谢谢!

@kenrussell英特尔核芯显卡 4000 是否遭到抵制? 实际上,是否有公开的黑名单显卡?

@mrdoob不,英特尔 HD 4000 未列入黑名单。

需要about:gpu的内容(首选纯文本,只需复制/粘贴)来诊断此类问题。

如果该卡被列入黑名单,则将在该页面上描述原因。

这两个文件描述了哪些 GPU 被列入黑名单,哪些应用了驱动程序错误解决方法。

https://cs.chromium.org/chromium/src/gpu/config/software_rendering_list_json.cc

https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list_json.cc

请注意,重构正在进行中,因此这两个文件可能会在接下来的一两周内被同一目录中的 .json 文件替换。 请参阅http://crbug.com/691703

我有同样的错误...
似乎 Intel HD 2000 在 Chrome 58.0.3029.81(64 位)、Ubuntu 14.04 中被列入黑名单
我设置了chrome://flags/ --ignore-gpu-blacklist ; 它工作正常。

如果这对从不同角度看待这个问题的任何人有任何帮助。 尝试安装包含三个位和 bob 的 react 组件时,我收到此错误。

我暂时将其设为不可测试。

@YoneMoreno我在您的问题中没有看到Error creating WebGL context. 。 是什么让你觉得你有同样的问题?

为什么这是关闭的? 看起来很多人仍然遇到这个问题。

@nicolethenerd不幸的是,我们在图书馆中无能为力。

您可以添加更有用的错误消息。 浏览此线程,很难了解分辨率究竟是什么——人们声称已经通过更改一些不同的标志来解决这个问题。

如果解决方案比错误消息更复杂,则将消息链接到常见问题解答页面,该页面解释问题并建议根据您的浏览器设置哪些标志。

如果这是通过修复库无法解决的常见错误,是否可以将其添加到演示站点的常见问题解答部分?

@nicolethenerd如果我

显卡只是不能创建上下文的原因之一。 我们不想添加可能具有误导性的消息。

也许我们可以开始收集理由。

但是,我们不应该建议用户禁用黑名单。 如果这些显卡被列入黑名单是由于错误和/或安全原因。

当我同时打开太多带有 WebGL 场景的选项卡时,我看到了这个响应。

Version 72.0.3626.121 (Official Build) Arch Linux (64-bit)对我来说也是同样的错误。 在同一操作系统上与 Firefox 65.0.1 一起使用。

GPU:英伟达 2080TI。

确保在您的 chrome 设置中选择了此选项。
screen shot 2016-02-09 at 1 59 46 pm
重新启动 chrom 设置后,WebGL 可以像以前一样正常工作。
好答案。

错误:无法创建 WebGL 上下文:WebGL 创建失败:

  • GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:0 小于 8!

我现在在 Firefox 74 中得到这个。我在配置中强制 webgl.force-enabled=true,启用硬件加速,什么都没有。 它在 66 中对我来说效果很好,但我猜他们的“量子”更新几乎打破了一切,包括对我来说的 webgl。

确保您没有从侦听器调用 WebGL 上下文初始值设定项(例如,尝试在您的 init 函数中使用布尔标志来阻止它循环或将 gl 声明为全局变量)。 前者为我工作并正确显示上下文。

编辑:实际上,我最终在渲染器 (THREE.WebGLRenderer) 中找到了 WebGL 画布。 我使用了画布方法 renderer.getContext().canvas 并添加了 webglcontextlost 侦听器,后者又通过 init() 调用了 handleContextLost 函数。

function handleContextLost() {
    event.preventDefault();
    cancelAnimationFrame(requestId)
    init();
}

canvas.addEventListener("webglcontextlost", handleContextLost, false)

此页面是否有帮助?
0 / 5 - 0 等级