就是这个标题说的这事儿,我碰上了,折腾了三天,最后弄明白了。写出来给同样中招的人看,省得走弯路。
先说现象。魔兽争霸,不是重制版,是那个十年前的老版本。一进游戏,屏幕直接黑掉,显示器提示无信号,但主机还在转,声音也有。切出去用任务管理器强关,一切恢复正常。别的游戏,英雄联盟、绝地求生、甚至赛博朋克2077,全特效拉满,跑几个小时一点问题没有。就魔兽,进去就黑。
我开始以为是分辨率问题。老游戏默认分辨率低,有些新显示器不支持那个刷新率。进游戏配置文件,把分辨率改成和桌面一致,刷新率锁到60,还是黑。又试试窗口模式,能进去了,但一全屏就黑。窗口模式玩了一会儿,发现画面偶尔会有撕裂,但还能接受。
后来我注意到了一个细节。黑屏的时候,显卡风扇会突然狂转,声音很大,过几秒又降下来。这不像死机,像是显卡在跑什么高负载的东西。但我明明是在主菜单,不该有什么高负载场景。
于是我打开任务管理器,在进程列表里找到了war3.exe,用管理员权限把进程优先级改成“高”,再进游戏。这次撑了大概五分钟,然后还是黑屏。但我捕捉到了一个信息,黑屏瞬间GPU使用率从40%跳到99%。

这就奇怪了,主菜单能有这么高的占用?我用另一个软件监控了一下,发现是显卡在无限渲染一个看不见的东西。可能是驱动在处理老游戏时出了bug,把某个本该忽略的指令当成高负载任务处理了。
在网上翻了很久,终于找到一个差不多的帖子,情况一模一样,底下回复都说是显卡驱动兼容性问题。新款N卡驱动对老游戏支持不好,DirectX 8时代的渲染管线在现在的新架构上会出各种怪毛病。楼主给了个方案,把显卡驱动的“图形增强”功能关掉,然后再去NVIDIA控制面板里,把“线程优化”关掉。
我试了,但我的卡是A卡,没有这个选项。只能在驱动软件里关掉一切锐化、增强类的功能,然后还试着把Radeon Anti-Lag也关了。进了游戏,还是黑屏。
最后让我顿悟的,其实是某个论坛深水区里的一句话,大概意思是魔兽争霸这个引擎在win10上面跑的时候,需要一次旧版DirectX的兼容转换,而新驱动对这个转换支持有缺陷。解决办法很简单,安装一个DirectX 9.0c的运行库,很多老游戏都需要这个,但新系统默认不装。
我下了个DirectX修复工具,一检查,发现果然缺了d3d9相关的几个文件。修复完成后,再进游戏,全屏,不黑了,一切正常,GPU占用率也老实了。
这件事给我一个教训。很多所谓的老游戏黑屏问题,真不是显卡坏了,也不是显示器不兼容,而是系统环境变了。新驱动、新系统、新硬件,全是在为现代游戏做优化,没人管十几年前的老人了。那些老游戏还按着当年的接口去找组件,找不到了就疯狂调用,最终卡在某种死循环里,表现就是黑屏加上显卡满载。
如果你们也碰到类似问题,先别急着重装系统,也别换显卡。动手检查一下DirectX运行库,把老版本组件装全,再关掉显卡驱动里那些花里胡哨的增强功能,一般能解决。要是还不行,再考虑兼容模式,右键魔兽的启动程序,选择Windows 7兼容,加上“禁用全屏优化”,两个选项都勾上。
我最后还把兼容模式也开了,虽然可能不必要,但双重保险心里踏实。现在魔兽随便玩,通宵都没事。希望这篇记录能帮一些人省下折腾的时间。