一日将周围的机子进行了一系列的测试,主要是显卡的3D加速性能测试,包括D3D加速性能和OpenGL加速性能,前者使用3D Mark2001,后者使用Quake3。大部分显卡都是TNT2 Pro的,有小影霸、硕泰克、丽台、艾尔莎等各种品牌,结果发现D3D加速性能相当,但艾尔莎显卡的OpenGL加速性能却高出一截,看来艾尔莎确实是不错的。所以本人决定将其小影霸TNT2 Pro显卡刷成艾尔莎的雷影者(刷新过程略),其BIOS是从另外一台雷影者显卡上备份下来的,因为是同样的芯片,刷新后一切正常,开机自检显示为艾尔莎的信息,但遗憾的是此举并没有带来OpenGL性能上的提升,却出现了一个问题,在《极品飞车5—保时捷之旅》(以下简称NFS5)中,画面一片粉红,没有死机,游戏照样能玩,也有声音,但就是图像无法显示。
大家知道NFS5是用D3D的,这显然是D3D设置问题,打开显示设置属性,找到TNT2的附加属性:“Additional Properties...”,发现在“Direct3D Settings”中选择了“Enable fog table emulation”,此项为雾化效果,将其关闭,再次进入NFS5中竟还是一片粉红!以前在另一台机子上见过同样的问题,但更改Enable fog table emulation设置就解决问题了,这次为什么不行呢?重新安装驱动也不行,而其他游戏都很正常,找来找去找不出什么原因,在刷BIOS前是好的,但刷了BIOS后就出现这样的问题了,根据以往经验就是与“Enable fog table emulation”一项有关,会不会Windows根本没有正确改变“Enable fog table emulation”这项的值呢?所以不管我在D3D设置中是否打开“Enable fog table emulation”都没用,而这一切肯定是离不开Windows的灵魂——注册表。
想出问题后,就是确认Windows是怎样在注册表里设置的。而对于这项设置在注册表中的位置很陌生,查找了半天没头绪,突然灵感一动,何不用此方法呢!打开和关闭Enable fog table emulation时,注册表里肯定会发生变化,所以只要找到哪里变了就行了。第一步,安上另外一块显卡,在显示属性中打开Enable fog table emulation这项,然后进入注册表,用“运行”中的“regedit”打开注册表编辑器,点击列表中的“我的电脑”,使用“注册表”菜单中的“导出注册表文件”,导出范围选择全部,将其存到一个目录下,如d:\1.reg;第二步,在显示属性中关闭Enable fog table emulation这项,同样导出注册表,存为d:\2.reg;第三步,分析两个REG文件的不同之处。使用MS-DOS窗口,进入D盘,用FC命令比较两个文件显示它们之间的不同并重定向到一个TXT文件中“fc 1.reg 2.reg>0.txt”,打开0.txt文件,看到1.reg和2.reg确实有变化,找到FOGTABLEENABLE字眼,当关闭Enable fog table emulation时其dword键值为00000000,打开Enable fog table emulation时其dword键值却为00330000,但是应该是00000001才对啊,那就改成这个值试试看;第四步,回到注册表编辑器,用查找找到FOGTABLEENABLE一项,将值修改成00000001。安装上有问题的卡,进入游戏,这一次终于看到了熟悉的画面。
同其他显卡比较得知,FOGTABLEENABLE的值是0和256,0为关闭,256为打开,但是非0值基本上都为打开,也就是说在NFS5中都能正常显示,但这块显卡也就怪!应该说是这个卡刷成艾尔莎BIOS后有缺陷。可能这是驱动程序与系统的兼容性问题,Windows不能正常地反映显卡驱动中所作的修改,有趣的是不管换哪一个驱动程序都是如此,使用艾尔莎的或是nVIDIA公版驱动都不能成功解决问题,难道就是其BIOS的设计问题?原来那块雷影者也是这种情况,无论你重装多少次系统都无效,当时用的都是Windows 98,不知Windows 2000下会是怎样的情况?而这一现象只在NFS5中出现,其他同样用D3D加速的游戏都未遇此问题,有其他朋友用的也是艾尔莎的卡,但并没有遇到这个问题,看来还是得靠实践来检测。
本文提倡的是一种解决方法,即怎样从表面的问题入手,一步步推断出关键所在,和类似的问题之间所具有的某种联系。玩机这么多年也见过不少稀奇古怪的问题,冷静思考总结一下,也是见怪不怪,从中都能找到些蛛丝马迹,使问题简单化,所谓现象七十二变,变来变去一个样。