Skip to content

WebGL 2 或 WebGPU 不受支持?各浏览器修复方法(2026) ​

最后更新:2026 年 9 月。

浏览器窗口显示黑色游戏画布和 WebGL 不受支持警告

如果游戏或 3D 页面提示你的浏览器不支持 WebGL 2 或 WebGPU,原因几乎总是以下四种之一:硬件加速已关闭、你的 GPU 或驱动程序被列入浏览器的黑名单、浏览器版本过旧而不支持该 API,或者你正在没有真实 GPU 的虚拟机或远程桌面会话中运行。请开启硬件加速、更新显卡驱动程序、更新浏览器,然后使用功能检测工具确认结果。对于 WebGPU,还要检查平台支持情况:截至 2026 年 9 月,Firefox 仅在 Windows 和 Apple 芯片 Mac 上正式提供 WebGPU;Linux 上的 Chrome 则仅支持 Intel Gen12+ 和较新的 NVIDIA 硬件。

本页专门用于故障排查。要了解这两种 API 并选择适合开发的方案,请阅读游戏开发中的 WebGPU 与 WebGL 对比。

快速解答 ​

  • **先进行诊断:**打开 WebGL 和 WebGPU 检测工具。它会显示 WebGPU、WebGL 2 和 WebGL 1 是否可用,并列出浏览器正在使用的 GPU。如果渲染器显示 SwiftShader、llvmpipe 或“Software”,说明正在使用 CPU 渲染,下面的修复方法适用于这种情况。
  • **Chrome 和 Edge:**依次进入“设置”“系统”,开启“可用时使用图形加速”,然后重新启动浏览器。检查 chrome://gpu(或 edge://gpu)。如果 WebGL 显示“Software only”或“Unavailable”,请更新 GPU 驱动程序。最后手段:chrome://flags/#ignore-gpu-blocklist。
  • **Firefox:**依次进入“设置”“常规”“性能”,取消勾选“使用推荐的性能设置”,再勾选“可用时使用硬件加速”。检查 about:support 中的“图形”部分。最后手段:在 about:config 中将 webgl.force-enabled 设为 true。
  • **Safari:**要使用 WebGPU,请更新至 Safari 26;要使用 WebGL 2,请更新至 Safari 15 或更高版本。Safari 没有可切换的硬件加速开关。
  • Unity 的“does not support graphics API WebGL 2”消息表示 canvas.getContext('webgl2') 没有返回任何内容。修复方法相同;如果出现在 Safari 中,则说明版本低于 15。
  • **公司或学校设备、虚拟机、远程桌面:**GPU 可能被策略禁用,或者根本不存在。请联系 IT 管理员,或改用配有真实 GPU 的设备游玩。

快速参考 ​

截至 2026 年 9 月的 WebGPU 支持情况,信息来自 WebGPU 实现状态 Wiki(更新于 2026 年 8 月 13 日)、Firefox 和 WebKit 发行说明以及 caniuse。

浏览器WindowsmacOSLinuxAndroidiOS 和 iPadOS
Chrome 和 Edge113+(Windows on ARM:需启用标志)113+Intel Gen12+ 上为 144+;Wayland 下 NVIDIA 为 147+(驱动程序 535.183.01+);其他硬件需启用标志Android 12+ 搭配 ARM、Qualcomm 或 Intel GPU 时为 121+;Android 16+ 搭配 Imagination GPU 时为 139+;Samsung Xclipse 支持正在开发中使用 Apple 的 WebKit 引擎,因此请在设备上实测
Firefox141+(2025 年 7 月 22 日)macOS 26 搭配 Apple 芯片时为 145+;所有受支持的 macOS 搭配 Apple 芯片时为 147+;Intel Mac 仅限 Nightly仅限 Nightly,计划于 2026 年正式发布需启用标志使用 Apple 的 WebKit 引擎
Safari不适用26+(2025 年 9 月 15 日发布,适用于 macOS Tahoe、Sequoia 和 Sonoma)不适用不适用26+
目前正式支持 WebGPU 的平台2026 年 9 月的正式版本。版本号表示首次默认启用该功能的版本。WindowsmacOSLinuxAndroidiOS、iPadOSChrome、EdgeFirefoxSafari113+ARM:需启用标志113+部分 GPU144+ Intel Gen12+147+ NVIDIA121+Android 12+139+ ImaginationWebKit 引擎参见 Safari141+145+ / 147+仅限 Apple 芯片Intel:Nightly仅限 Nightly计划于 2026 年发布需启用标志WebKit 引擎参见 Safari不适用26+Tahoe 至 Sonoma不适用不适用26+已正式发布已在部分硬件上发布需启用标志正式版本尚未提供iOS 和 iPadOS 上的所有浏览器都使用 Apple 的 WebKit 引擎,因此应以 Safari 行为准。
同一张表格的网格视图。绿色表示正式版本默认启用。有两个单元格为半绿色,因为支持情况取决于 GPU:Linux 上的 Chrome(Intel Gen12+,或 Wayland 下较新的 NVIDIA)和 macOS 上的 Firefox(仅限 Apple 芯片)。Linux 和 Android 上的 Firefox,以及 Windows on ARM 上的 Chrome,仍需要 Nightly 版本或启用标志。

WebGL 2 是基本要求。根据 caniuse,Chrome 56+、Edge 79+、Firefox 51+、Safari 15+ 和 iOS Safari 15+ 均支持 WebGL 2;Unity 的兼容性页面还列出了 Android 上的 Chrome 58+。如果 WebGL 2 在任何当前版本的浏览器中都无法运行,问题出在设备,而不是浏览器版本。

30 秒诊断 ​

先打开 WebGL 和 WebGPU 检测工具。页面加载后会自动运行,并且不会上传任何数据。请查看其中三项信息。

在存在问题的设备上,页面看起来会是这样。

检测工具显示橙色的“无可用 GPU 渲染”横幅、黑色画布,以及 WebGPU、WebGL 2 和 WebGL 1 三张标为红色“否”的卡片
被屏蔽或仅使用软件渲染的浏览器在检测工具中会显示成这样:橙色横幅、没有 FPS 读数的黑色渲染画布,以及三张全部标为“否”的 API 卡片。请注意“如何修复”框,其中已经提示你检查硬件加速。

**哪些 API 通过检测。**如果 WebGL 2 正常,只有 WebGPU 失败,请查看上面的表格,因为 WebGPU 的支持情况同时取决于浏览器、操作系统和 GPU,答案可能是“该平台暂不支持”。如果 WebGL 2 也失败,请继续阅读:这通常意味着硬件加速、驱动程序或黑名单存在问题。

**渲染器一行。**真实 GPU 会显示类似“ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 ...)”或“Apple M2”的内容。SwiftShader、llvmpipe、“Microsoft Basic Render Driver”,或者任何包含“software”的内容,都表示浏览器正在使用 CPU 绘制画面。游戏会运行得极其缓慢,而且 WebGPU 不会出现。

**浏览器自身的 GPU 页面。**在 Chrome 地址栏中输入 chrome://gpu(Edge:edge://gpu)。“Graphics Feature Status”会将 WebGL 和 WebGL2 列为“Hardware accelerated”“Software only, hardware acceleration unavailable”或“Unavailable”;页面下方的“Problems Detected”会说明原因,通常会指出具体的黑名单条目或驱动程序。在 Firefox 中,about:support 的“图形”部分会通过“Compositing”显示加速是否开启,“Failure Log”或“Decision Log”则会解释被屏蔽的原因。Safari 没有对应页面。

“软件渲染”指的是:浏览器维护着一份已知会导致崩溃或错误渲染的 GPU 与驱动程序组合列表。当你的设备与其中某个条目匹配时,浏览器就会禁用相应功能,或回退到 CPU 光栅化器。Chromium 的黑名单会对 Microsoft Basic Render Driver(“如果用户在安装 Windows 后没有安装正确的显卡驱动程序,则会阻止 GPU 访问”)、VMware、VirtualBox,以及旧版 Intel 和 NVIDIA 驱动程序禁用所有 GPU 加速。黑名单条目会按驱动程序版本匹配,这就是为什么“更新驱动程序”能够解决如此多此类问题。 有一件事在 2026 年发生了变化。过去,每当 GPU 被屏蔽时,Chromium 都会回退到 SwiftShader——一种通过 CPU 实现的 WebGL,因此 WebGL 仍然“能用”,只是很慢。微软的 Edge 策略文档指出,从版本 144 开始,SwiftShader 已被弃用,并且“在使用 SwiftShader 的场景中,WebGL 上下文创建会失败”;Chromium 的 SwiftShader 文档也说明 Chrome 同样如此,可通过 --enable-unsafe-swiftshader 主动启用。以前在黑名单机器上只是运行缓慢的游戏,如今会直接显示“不受支持”错误。

综合起来,诊断过程就是按固定顺序回答三个问题,每个问题都对应一个明确的修复方法。

三个问题,三种修复方法使用检测工具和浏览器自带的 GPU 页面逐项回答。“否”则向右,“是”则向下。画布黑屏,或出现“不受支持”错误打开检测工具并查看渲染器一行是是是否否否硬件加速是否已开启?重启后用 chrome://gpu 或 about:support 确认将其开启。Chrome:设置、系统。Firefox:设置、常规、性能。重新启动,设置需重启后才会生效。渲染器是否显示真实 GPU?SwiftShader、llvmpipe、Basic Render Driver 均表示否从 GPU 厂商处更新驱动程序。黑名单过时?启用 ignore-gpu-blocklist 标志。虚拟机或远程桌面:在宿主机上游玩。浏览器在此平台提供 WebGPU 吗?仅当 WebGL 2 通过而 WebGPU 失败时才需检查更新浏览器,然后查看支持表。Firefox:仅支持 Windows 和 Apple 芯片。Linux Chrome:仅 Intel Gen12+、NVIDIA。重新运行检测工具WebGL 2 显示“支持”,WebGPU 结果应与支持表一致
沿左栏向下检查,并在第一个“否”处停止。顺序很重要:硬件加速关闭时,更新驱动程序毫无意义;只有 WebGL 2 已正常工作后,WebGPU 问题才适用,因为在一台状态正常的机器上缺少 WebGPU,通常是平台支持问题,而不是故障。

Chrome 和 Edge ​

Chrome 与 Edge 共用 Chromium 引擎,因此这里的所有内容都适用于两者。需要时将 chrome:// 替换为 edge://。

硬件加速开关 ​

打开“设置”,然后进入“系统”,确保“可用时使用图形加速”已开启(Edge 中位于“系统和性能”下)。重新启动浏览器,因为此设置只有重启后才会生效。它关闭的情况出乎意料地常见,因为许多“修复 Chrome 闪烁”的建议都会让用户将其关闭。然后打开 chrome://gpu。如果 WebGL 和 WebGL2 显示“Hardware accelerated”,问题就解决了。如果没有,说明浏览器有意拒绝使用你的 GPU,具体原因可在“Problems Detected”下查看。

Windows ​

最常见的原因是驱动程序过旧或使用了通用驱动。如果渲染器显示“Microsoft Basic Render Driver”,说明 Windows 根本没有适用于该 GPU 的真正驱动,而 Chromium 会将这种情况视为“屏蔽所有功能”。请直接从 NVIDIA、AMD 或 Intel 安装驱动程序,不要等待 Windows Update。对于配备双 GPU 的笔记本电脑,可在 Windows 的“设置”、“系统”、“显示”、“图形”中指定浏览器使用高性能 GPU。浏览器使用集成显卡时可能会通过检测,但运行大型游戏时会慢得难以使用。

Windows on ARM(骁龙笔记本电脑)是 WebGPU 的特殊情况:实现状态 Wiki 显示,需要通过 chrome://flags/#enable-unsafe-webgpu 或 --enable-unsafe-webgpu 开关启用。WebGL 2 在这类设备上可正常工作。

macOS ​

Mac 很少遇到此问题,因为 Apple 会随操作系统提供驱动程序。如果 Mac 上的 Chrome 报告使用软件渲染,应优先怀疑硬件加速开关、过于老旧的 macOS 或虚拟机。在 Mac 上,更新 macOS 就相当于更新驱动程序。

Linux ​

Linux 是 WebGPU 限制条件最多的平台。根据该 Wiki,从 Chrome 144 开始,Chrome 默认在使用 Intel Gen12 及更新 GPU 的 Linux 上提供 WebGPU;从 Chrome 147 开始,也支持在 Wayland 下使用 535.183.01 或更新驱动的 NVIDIA GPU。其他所有情况(AMD、较旧的 Intel、X11 下的 NVIDIA)都需要使用 Wiki 中列出的标志组合:--enable-unsafe-webgpu --ozone-platform=x11 --use-angle=vulkan --enable-features=Vulkan,VulkanFromANGLE。此分阶段发布方案让 WebGPU 在 Vulkan 上运行,而浏览器其余部分仍使用 OpenGL,因此需要按 GPU 系列逐步开放。

对于 Linux 上的 WebGL 2,关键是 Mesa 使用的究竟是你的 GPU,还是 llvmpipe 软件光栅化器。如果渲染器显示 llvmpipe,请更新适用于该 GPU 的 Mesa 驱动程序(或 NVIDIA 专有驱动程序)。

绕过黑名单 ​

chrome://flags/#ignore-gpu-blocklist(“Override software rendering list”)会强制 Chrome 使用 GPU,即使该 GPU 位于黑名单中。当黑名单错误地拒绝你的 GPU,或者你宁愿偶尔遇到图形异常也不愿完全无法使用 WebGL 时,这种做法是合理的。如果屏蔽的原因是驱动程序会崩溃,则不应这样做,因此请先尝试更新驱动程序。

Android Chrome ​

Android Chrome 从版本 58 起就已支持 WebGL 2,因此在任何较新的手机上,WebGL 2 失败通常意味着 GPU 驱动被列入黑名单,而 Android 无法单独更新 GPU 驱动。先检查系统更新,然后尝试 Android 上同样存在的 chrome://flags/#ignore-gpu-blocklist。

Android 上的 WebGPU 于 Chrome 121 开始支持运行 Android 12 或更新系统、并使用 ARM、Qualcomm 或 Intel GPU 的设备;Chrome 139 又开始支持运行 Android 16 或更新系统的 Imagination GPU。该 Wiki 仍将三星 Xclipse GPU(Exynos Galaxy 手机)列为开发中,因此即使 Exynos Galaxy 已完全更新,也可能报告不支持 WebGPU。这并不是你这边的错误。

Firefox ​

硬件加速与强制覆盖 ​

打开“设置”、“常规”,向下滚动到“性能”,取消勾选“使用推荐的性能设置”,并确保已勾选“可用时使用硬件加速”。重新启动 Firefox。然后查看 about:support 中的“图形”部分:“合成”应显示 WebRender;被屏蔽的 WebGL 会出现在故障日志或决策日志中,并注明被屏蔽的驱动程序或功能。

Mozilla 的被屏蔽图形驱动程序页面记录了强制覆盖方法。在 about:config 中,将 webgl.force-enabled 设为 true 可绕过 WebGL 屏蔽,将 layers.acceleration.force-enabled 设为 true 可绕过合成屏蔽。Mozilla 的原话是:“这样做的风险由你自行承担。功能被屏蔽通常有充分理由。”请先更新驱动程序。

WebGPU:哪些操作系统上的 Firefox 支持它 ​

在 Firefox 中,“不支持 WebGPU”最常见的原因就是平台本身尚未支持。根据发行说明:Firefox 141(2025 年 7 月 22 日)在 Windows 上启用了 WebGPU;Firefox 145(2025 年 11 月 11 日)增加了对 Apple 芯片设备上 macOS 26 Tahoe 的支持;Firefox 147 又将支持范围扩展到“所有受支持 macOS 版本中配备 Apple 芯片处理器的设备”。Intel Mac、Linux 和 Android 仍不受支持:MDN 的实验性功能页面称,对于“Linux 和使用 Intel 芯片的 macOS 等其他平台,可在 Nightly 中启用”;该 Wiki 则显示 Linux 预计于 2026 年支持,Android 仍需通过标志启用。

对应的首选项是 about:config 中的 dom.webgpu.enabled。在 Firefox 尚未正式支持的平台上,即使在正式版中将其改为 true,启用的也是 Mozilla 尚未为该操作系统完成的实现,因此可能发生崩溃。如果现在就想在 Linux Firefox 上使用 WebGPU,请使用默认已启用该功能的 Nightly。Caniuse 将 Firefox 标记为“默认禁用”,是因为它按浏览器而非操作系统追踪标志,所以不要让该页面误导 Windows 用户,以为自己的浏览器不支持 WebGPU。

Safari ​

Safari 没有硬件加速开关,也没有可供绕过的黑名单。版本决定了一切。

WebGL 2 在 macOS 和 iOS 上需要 Safari 15 或更新版本。Unity 的兼容性页面说得很明确:“Apple Safari 15 之前的版本不支持 WebGL 2。”如果一台 Mac 因旧版 macOS 而无法安装新版 Safari,解决方法是更新 macOS,或者安装可在旧版 macOS 上运行 WebGL 2 的 Chrome 或 Firefox。

WebGPU 于 2025 年 9 月 15 日随 Safari 26.0 正式推出,支持 macOS Tahoe、Sequoia 和 Sonoma,以及 iOS 26、iPadOS 26 和 visionOS 26,并默认启用。WebKit 的发布文章称,WebGPU“在 macOS、iOS、iPadOS 和 visionOS 上取代 WebGL,并推荐用于新网站和 Web 应用”。如果你使用 Safari 26,而 WebGPU 仍然失败,请确认页面通过 HTTPS 提供(所有浏览器中的 WebGPU 都只能在安全上下文中工作),并确认页面没有位于嵌入式 WebView 中。

Safari 17 和 18 中也存在 WebGPU,但需要通过功能标志启用。在 macOS 上,打开 Safari“设置”、“高级”,勾选“显示网页开发者功能”,随后会出现“功能标志”标签页,可在其中开启 WebGPU。在 iOS 18 上,路径为“设置”、“App”、“Safari 浏览器”、“高级”、“功能标志”(旧版 iOS:设置、Safari 浏览器、高级)。这是预发布实现,适合演示,但不适合作为正式发布游戏所依赖的运行环境。

无论修复的是哪款浏览器,都请重新加载检测工具。正常结果应如下所示。

检测工具显示紫色的就绪横幅、一个通过 WebGPU 以 60 FPS 渲染的渐变三角形,以及 WebGPU 和 WebGL 2 均为“支持”的状态卡片
修复后应看到的结果:三角形以 60 FPS 渲染,实时渲染行显示 WebGPU,并且 WebGPU 与 WebGL 2 均显示“支持”。此处 WebGL 1 显示“否”是正常现象。检测工具会先在一个画布上请求 WebGL 2,而一个画布只能持有一种上下文类型,因此旧版 WebGL 探测不会返回结果。

工作笔记本电脑、学校 Chromebook、虚拟机和远程桌面 ​

如果相关开关缺失或设置无法保持,请先确认设备由谁管理。 受管理的浏览器可能会被策略关闭硬件加速。Chrome 和 Edge 都有一项 HardwareAccelerationModeEnabled 策略,微软文档称,禁用该策略后,浏览器会“关闭图形加速”。设置中的开关会变灰或自动恢复原状,而 chrome://policy 会列出已应用的策略。从 Chromium 144 开始,还有一项 EnableUnsafeSwiftShader 临时策略,可在没有 GPU 的机器上继续使用旧版 CPU 回退方案。如果你管理的学校机房突然无法访问任何 WebGL 网站,这项策略可以作为权宜之计,让你有时间解决驱动程序问题。

虚拟机提供的虚拟 GPU 可能会被浏览器拒绝。Chromium 的阻止列表中有明确条目(“不要在 Windows 上将 GPU 加速渲染与 VMware 配合使用”“VirtualBox 驱动程序在 Linux 上不稳定”“低于版本 7 的 Parallels 驱动程序存在缺陷”),这些条目都会禁用所有加速功能。请在虚拟机设置中启用 3D 加速并安装最新的客户机工具;否则,就将虚拟机仅用于测试无 GPU 路径,并在宿主机上游玩。

远程桌面只是同一问题的另一种表现形式。RDP 会话、Citrix 或 Horizon 桌面以及云电脑通常只会提供基础显示适配器,因此浏览器检测不到可用的 GPU。请改为在本地机器上运行浏览器,而不是在远程会话中运行。

Chromebook 的情况最简单:ChromeOS 从 Chrome 113 开始就已支持 WebGPU,因此如果出现故障,几乎总是策略所致,或者设备已经过了更新支持期限。

Unity 的“不支持图形 API WebGL 2”错误 ​

玩家看到的确切文本是:

你的浏览器不支持此内容所需的图形 API“WebGL 2”。

当请求 webgl2 上下文返回 null 时,这条消息会由 Unity 的网页加载器显示。Unity 的浏览器兼容性页面指出,Web 构建需要使用“支持 WebGL 2”的浏览器,并将 WebGL 2 作为默认图形 API,因此除非开发者添加了其他方案,否则加载器没有可用的回退路径。

如果你是玩家,最可能的原因依次是:硬件加速已关闭;GPU 驱动程序位于阻止列表中(并且从 Chromium 144 开始不再由 SwiftShader 自动兜底);你正在虚拟机或远程会话中运行;或者你使用的是 Safari 14 或更早版本。如果检测工具显示 WebGL 2 可用,但游戏仍然失败,那么页面可能位于无法访问 GPU 的嵌入式框架或 WebView 中;直接打开游戏 URL 通常可以解决问题。

如果你是开发者,Player Settings、Web、Other Settings 中的 Graphics APIs 列表决定了玩家遇到此问题的频率。启用 Auto Graphics API 后,Unity 会先尝试 WebGL 2。社区讨论指出,即使成功回退到 WebGL 1,只要 WebGL 2 失败,也会显示同一条警告,因此仅凭该消息无法判断游戏是否成功运行。Linear 色彩空间会强制仅使用 WebGL 2。添加“WebGL 1 (Deprecated)”可以让非常旧的浏览器继续运行游戏,但会牺牲后期处理和纹理格式;根据一位开发者的测量,数据文件大约还会增加 1.5 MB。Unity 6 还允许添加仍标记为实验性的 WebGPU。其启用指南指出,Unity 会使用列表中的第一个 API,并依次向下回退,因此安全的顺序是先 WebGPU,再 WebGL 2。无论选择哪种方案,都应该将模板中的默认错误文本替换为玩家可以据此采取行动的提示。

从症状判断原因 ​

画布为黑色或空白,但没有错误。 上下文已经创建,但 GPU 没有进行绘制。常见原因包括:上下文在创建后立即丢失、GPU 无法处理着色器,或者隐私扩展伪造了 WebGL 信息。请先关闭扩展并使用隐私窗口重试,然后在控制台中查找“context lost”或着色器编译错误。

游戏运行过程中出现“WebGL context lost”。 MDN 的上下文丢失说明列出了可能的原因:多个页面争用 GPU;笔记本电脑在集成 GPU 和独立 GPU 之间切换;浏览器为了终止其他标签页造成的卡死而重置 GPU;或者驱动程序正在后台更新。请关闭其他大量使用 GPU 的标签页,为笔记本电脑接通电源以避免切换 GPU,然后重新加载。如果每次都会发生,则说明游戏耗尽了设备的 GPU 内存;这是游戏本身的缺陷,而不是浏览器设置问题。

只能以 1 到 5 fps 运行。 这通常是软件渲染。检查渲染器中是否出现 SwiftShader、llvmpipe 或“Software”,然后修复硬件加速或驱动程序问题。在手机上,3 倍设备像素比意味着每个 CSS 像素需要绘制 9 个像素。如果游戏没有限制分辨率,运行速度就会极其缓慢,而这属于开发者需要解决的问题。

WebGL 2 正常工作,但机器上没有 WebGPU。 请先查看表格,然后检查 URL:在普通 http:// 页面上,navigator.gpu 是 undefined。接着查看 Graphics Feature Status 中是否有 WebGPU 条目。在 Linux 版 Chrome 和非 Windows 版 Firefox 上,通常是因为“此平台尚未支持”。

面向开发者:检测、回退并告知玩家 ​

在加载任何大型资源之前检测这两个 API,并在失败时显示提示消息,而不是留下空白页面。MDN 的 WebGPU 模式是先检查 navigator.gpu,再调用 requestAdapter();没有可用适配器时,该调用会解析为 null。对于 WebGL,getContext('webgl2') 会在失败时返回 null。

js
async function pickRenderer(canvas) {
  if (navigator.gpu) {
    const adapter = await navigator.gpu.requestAdapter()
    if (adapter) return { api: 'webgpu', adapter }
  }
  const gl2 = canvas.getContext('webgl2', { failIfMajorPerformanceCaveat: true })
  if (gl2) return { api: 'webgl2', gl: gl2 }
  const gl2soft = canvas.getContext('webgl2')
  if (gl2soft) return { api: 'webgl2', gl: gl2soft, software: true }
  return { api: null }
}

这里有两个重要细节。failIfMajorPerformanceCaveat: true 会让 getContext 直接失败,而不是提供软件渲染上下文。这样你就能检测到“游戏只能以 2 fps 运行”的情况,向玩家发出警告,然后再决定是否仍要接受软件上下文。另外,一个画布只能持有一种上下文类型,因此请在创建上下文前作出决定,或使用不同的画布。requestAdapter() 还接受 featureLevel: 'compatibility',这是面向 OpenGL ES 3.1 和 Direct3D 11 级硬件的受限 WebGPU 子集。

还要处理上下文丢失。监听 webglcontextlost,调用 preventDefault() 告知浏览器你打算恢复上下文,并在 webglcontextrestored 中重新创建 GPU 资源。忽略这一步的游戏,每当笔记本电脑切换 GPU 时,都会出现“画布为黑色但没有错误”的症状。

js
canvas.addEventListener('webglcontextlost', (e) => {
  e.preventDefault()
  pauseGame()
})
canvas.addEventListener('webglcontextrestored', () => {
  recreateGpuResources()
  resumeGame()
})

请向玩家提供真正有用的信息。对于使用学校 Chromebook 的十二岁孩子来说,“不支持 WebGL 2”只会让他们无从下手。更好的消息应该说明你检测到了什么(浏览器、操作系统、WebGL 1 是否可用、渲染器是否像是软件渲染),提供适用于其浏览器的一行修复方法,并链接到类似本页面或检测工具的页面,让他们确认问题是否已经解决。还应将相同结果记录到分析系统中,因为 WebGL 2 失败玩家所占的比例可以帮助你判断是否值得开发更轻量的回退方案。

游戏引擎会处理其中的大部分工作。Three.js 的 WebGPU 渲染器、Babylon.js 和 PlayCanvas 都会自动回退到 WebGL 2,而网页游戏技术栈指南介绍了各个方案的功能。如果你直接使用这些 API,请参阅 WebGPU 入门和面向游戏的 WebGL 基础教程,它们都从一个可用的检测代码块开始。

常见问题 ​

如何检查浏览器是否已启用 WebGPU? ​

打开 WebGL 与 WebGPU 检测工具,它会报告是否支持 WebGPU,并显示适配器厂商和架构。在 Chrome 或 Edge 中,chrome://gpu 会在 Graphics Feature Status 下列出 WebGPU;在控制台中,如果该 API 未开放,navigator.gpu 会是 undefined。WebGPU 只能在 HTTPS 页面上使用。

如何在 Chrome 中启用 WebGL? ​

进入设置中的系统页面,开启“可用时使用图形加速”,然后重新启动 Chrome。接着打开 chrome://gpu,确认 WebGL 和 WebGL2 显示为“Hardware accelerated”。如果没有,请更新 GPU 驱动程序;作为最后手段,可以启用 chrome://flags/#ignore-gpu-blocklist。

如何在 Firefox 中启用 WebGPU? ​

从 Firefox 141 开始,Windows 已默认启用 WebGPU;Apple Silicon Mac 则从 Firefox 145(macOS 26)以及 Firefox 147(所有受支持的 macOS 版本)开始默认启用。Linux、Intel Mac 和 Android 版本尚未正式发布:about:config 中的 dom.webgpu.enabled 首选项可以启用尚未完成的构建,而 Firefox Nightly 已默认启用它。因此,如果你现在就需要在这些平台上使用 WebGPU,请使用 Nightly。

Safari 支持 WebGPU 吗? ​

支持。从 Safari 26.0(2025 年 9 月 15 日)开始,WebGPU 在 macOS Tahoe、Sequoia 和 Sonoma、iOS 26、iPadOS 26 以及 visionOS 26 上默认启用。Safari 17 和 18 则需要在设置、高级、“显示面向网页开发者的功能”下通过功能标志启用。WebGL 2 需要 Safari 15 或更新版本。

为什么开启硬件加速后,WebGL 仍显示被阻止或使用软件渲染? ​

你的 GPU 或其驱动程序位于浏览器的阻止列表中,因此即使启用了硬件加速,浏览器仍会拒绝使用它。chrome://gpu 的“Problems Detected”部分或 Firefox about:support 的 Graphics 部分会指出对应条目。请从 GPU 制造商处更新驱动程序;如果阻止条目已经过时,可以使用 chrome://flags/#ignore-gpu-blocklist 或 Firefox 的 webgl.force-enabled 强制覆盖。

为什么我的 Unity WebGL 游戏无法在浏览器中运行? ​

如果页面显示“你的浏览器不支持图形 API WebGL 2”,说明浏览器无法创建 WebGL 2 上下文。请开启硬件加速、更新 GPU 驱动程序,确保你没有在虚拟机或远程桌面会话中运行;如果使用 Safari,请更新到版本 15 或更高版本。如果检测工具显示 WebGL 2 正常工作,但游戏仍然失败,请直接打开游戏 URL,而不要在嵌入式框架中运行。

Android 版 Chrome 支持 WebGL 2 吗? ​

支持,从 Chrome 58 开始即可使用,因此任何当前手机通常都能运行,除非 GPU 驱动程序位于阻止列表中。你可以通过系统更新或 chrome://flags/#ignore-gpu-blocklist 解决该问题。WebGPU 则是另一回事:需要 Android 12+ 上的 Chrome 121+,并使用 ARM、Qualcomm 或 Intel GPU;Imagination GPU 需要 Android 16+ 上的 Chrome 139+;Samsung Xclipse GPU 的支持仍在开发中。

相关内容 ​