LogoSiWei's Blog

Godot 4.7 和 NVIDIA 驱动冲突闪退排查记

PSW 2026-07-01 44 阅读 4 分钟

起因

最近用 Godot 4.7 做游戏开发,遇到了一个非常诡异的闪退问题。

游戏跑起来之后,只要执行某个特定操作就会直接闪退,没有任何错误提示。一开始我以为是我代码里有什么内存泄漏或者死循环,排查了半天一无所获。

后来我发现除了游戏内操作会触发闪退之外,还有一个更离谱的触发方式——我只要用鼠标拖拽游戏窗口的下边沿(就是拉伸窗口大小),游戏也崩。没错,就是拉伸窗口底部那条边,必崩。这个发现让我哭笑不得。

排查过程:Godot 帮不上忙

Godot 本身没有给出任何有用的错误信息。编辑器日志、输出面板都是干干净净的,就好像程序是被直接 kill 了一样。

最后只能去翻 Windows 事件查看器(Windows 日志 > 应用程序),总算找到了线索——报错指向了 nvidia-opencl32.dll,明确是 NVIDIA 驱动的问题。

于是开始常规操作:

  1. 升级显卡驱动到最新版 → 问题依旧
  2. 切换渲染器,在项目设置里改 Rendering > Drivers > Driver Name,试了 Forward+ 和 Mobile → 还是闪退

到这里其实有点想放弃了。甚至考虑过切回 Godot 3.6——但 3.6 不支持 MCP 插件,这个没法妥协。

转机:两个启动参数

继续搜,看到有人提到在启动时加两个参数可以解决类似的闪退问题:

-v --single-window

帖子里的人遇到的是另一种闪退场景(他们是在启动时崩,我是在运行时崩),跟我的情况不太一样。但反正死马当活马医,试一下也不亏。

在 Godot 编辑器里配一下启动参数:

  1. 打开 项目 > 项目设置
  2. 找到 一般 > 编辑器 > 运行 > 主场景运行参数
  3. 在值里填入 -v --single-window

或者用命令行启动:

godot4 --path 你的项目目录 -v --single-window

然后运行游戏——好了,游戏操作和拉伸窗口都不崩了。

复盘

说实话,这个问题的根因到底是什么,我到现在也没完全搞明白。-v 是 verbose 日志,按理说只是输出更多信息,不应该影响运行行为;--single-window 是把编辑器和游戏共用一个窗口。猜测可能是 Godot 在多窗口模式下和 NVIDIA 驱动的某些交互有 bug。

如果你也遇到 Godot 闪退又找不到原因,不妨试试这两个参数,说不定就救你一命。

当然,这个方案不一定是最终解,说不定以后换个驱动版本又出问题。但至少现在能正常开发了。

目录

评论

© 2026 SiWei's Blog. All rights reserved.