做个3D程序,痛苦的不是做不出那些复杂绚丽的画面效果,最痛苦的莫过于面对无奇不有的玩家机器运行环境,不同的显卡,不同的驱动程序,还有那不同的木马病毒,不同的杀毒软件.有一天你的程序不幸阵亡了,我们可爱的玩家到论坛上骂一句,合理地表达一下他愤怒的心情,说那个程序躺尸躺的很是恶心,然后挥挥手不留下一片云彩,只留下我在那里红着脸,低着头,绞尽脑汁地在代码里检讨自己可能的错误. 由于无法重现这个邪恶的Bug,而且自己周围的机器都表现的很善良,所以剩下的技术手段就是纯粹靠猜.于是变得格外多疑敏感和恶心,怀疑这个API有问题,怀疑那个驱动程序版本有问题,怀疑代码里这个优化太过分,那个地方不够兼容,整天神经兮兮.
绝大多数的国内游戏玩家是不知道怎么安装显卡驱动程序的,你请他安装驱动程序,他是会直接把游戏删除的,得罪不起.所以即使驱动程序有差误,程序也应当兼容错误,嗯,这个要求的难度相当高.
我非常的憎恨ATI的显卡,因为几乎所有的问题都出在ATI显卡上.喜欢MyWarcraftStudio的朋友请以后购买显卡时优先考虑Nvidia的,当我在公司红着脸时,我很想回家在MyWarCraftStudio里加上拒绝运行在ATI显卡上以示报复,我自己的程序我想不支持那个显卡我就不支持,比微软都牛:). 我看WoWModelViewer的作者大部分时间也都在解决各种各样的和显卡有关的Bug,有段时间都不想在搞下去了,确实写这种非官方程序只是图个乐,自己happy,大家happy,太多的责任最后就很厌倦了.
以前我相信这种论调,说DirectX对显卡兼容性比OpenGL好,现在我觉得DirectX的兼容性比OpenGL乱.DirectX是有标准,但在Intel 845G集成显卡的操作系统上安装了DirectX9,不等于它就支持了DirectX 9.有时那些Caps也是乱七八遭,如在有的ATI显卡上,caps参数显示支持抗锯齿,可一旦打开抗拒齿,崩溃的崩溃,花屏的花屏. DirectX的那个设备丢失最恶心了,Resize一下窗口设备都会丢失,分明是个架构设计上的Bug,死活不改,还搞出个对付DeviceLost的专题来,每个对象再来个OnDeviceLost接口,奇丑无比.
我一直希望NVIDIA或ATI能出个能模拟各种显卡的驱动程序,这样能稍微缓解一下测试问题.有时我也跑到网吧去测试程序,不过现在网吧的显卡配置都高,而且型号统一,都是主流显卡,以后得找个比较破的野店才行.
做3D,安全第一.