瞒天过海——Direct3D模拟OpenGL 1999年 第8期 52版 微软Direct3D、OpenGL以及Glide是目前最重要的三大3D API应用程序接口,OpenGL作为3D图形应用上的一个跨平台、高性能的API,对于显卡厂商来说,OpenGL驱动程序的开发要比Direct3D驱动程序复杂得多,像MGA的G200从去年年中推出便一直等待它的OpenGL驱动程序,可到了年底才好不容易发表了一个1.0Beta版本的OpenGL ICD驱动程序,所以至今为止好多显卡开发商都还没有一个高质量的 OpenGL驱动程序,3Dfx Banshee至今还没有OpenGL驱动程序。一些低端显示卡更是没有,要是你正在使用这样的显卡,恐怕像Quack、Quack2、SIN虚幻这样只支持OpenGL硬件加速的游戏就只有望而兴叹了,当然也可以软件方式运行,但画面的惨状实在有点不堪忍受。不过现在好了,笔者日前发现了两个利用Direct3D模拟OpenGL的仿真程序,现在你再也用不着为自己的显卡不支持OpenGL而愁眉苦脸了。 原理: OpenGL Function → D3D Function 映射 SciTech GLDirect 1.01版 SciTech GLDirect 1.01版是SciTech软件公司发布的第二个版本OpenGL仿真程序,作为一个Windows95/98应用程序包,几乎可以在目前支持Direct3D 6.X的所有显卡上仿真OpenGL,运行绝大多数OpenGL的游戏及部分应用程序。 支持的显卡: 3Dfx Voodoo、Voodoo Rush、Voodoo2、Banshee 3DLabs Permedia、Permedia 2 ATI Technologies 3D Rage Ⅱ、Ⅱ+、Ⅱ+DVD、ⅡC、3D Rage Pro、Rage 128 Cirrus Logic CL-GD5462/64/65 Laguna VisualMedia Intel i740 Matrox MGA Millennium Ⅱ、Mystique、Mystique 220、G100、G200 Number Nin“e Ticket 2 Ride、Ticket 2 Ride IV nVidia RIVA-128、RIVA-128 TNT Rendition Verite V1000、V2100、V2200 S3 ViRGE、ViRGE/DX/GX/VX、ViRGE/GX2、Trio3D、Savage3D SiS 6326 Trident 3DImage 975、3DImage 985 特性: 你可以选择Direct3D下软件渲染还是硬件渲染 利用ARB多材质扩展实现多材质贴图 通过DirectX 6的stencil buffer蜡板缓冲支持硬件stencil buffering蜡版缓冲 尽管这个仿真程序我们感觉已经作得比较不错,支持的显卡相当丰富,从S3 ViRGE、SiS 6326这样的低档卡到目前主流的RivaTNT、Banshee、Savage3D、G200。但在测试中我们还是发现了不少问题。在使用Voodooo卡时,你必须关掉GLQuake的控制项gl_ztrick,将其设置为0,否则运行Quake时将错误百出,另外在新近推出的一些OpenGL游戏中问题也比较多,像Unreal虚幻,我们在i740、Riva 128以及G200上都发现贴图严重错误,整个画面暗淡,很多材质都没有帖上,而Half-Life半死不活也好不了多少。如果你还在用PowerVR PCX1这样的3D加速子卡,最好将“2D/3D Rendering”这个选项从“Optimized”设为“Standard”。另外,偶尔还会出现Primary Direct3D设备显示错误。 从Direct3D仿真OpenGL的画面质量来看,应该说在大多数OpenGL游戏以及少数小型应用程序中的效果都还可以接受,只是有轻微的马赛克,在亮度上也稍微差一些,所以感觉游戏中各种建筑、山石的质感略差。 ALT.SoftWare MESA 3.0 ALT.SoftWare MESA 3.0 OpenGL仿真驱动程序和SciTech GLDirect 1.01版一样只能够在Direct3D 6.0以上版本下才能够使用,不支持Direct3D 5.0,在显卡的支持数量上不及SciTech GLDirect,但效果却非常不错,甚至在我们的测试中还略好于SciTech GLDirect。在Sin“原罪”中,SciTech GLDirect仿真程序的画面非常糟糕,存在大量贴图错误,而ALT OpenGL仿真出来的效果却没有发现什么错误,非常棒,并且3D Max中也完全正确。ALT OpenGL声称甚至已经支持Viewperf这样的专业OpenGL测试软件,但我们在i740以及Riva 128显卡上测试时,仍然没有能够正常完成测试。ALT OpenGL还会进一步改进,并不断推出更新的版本,以支持更多的显卡和OpenGL程序。 支持的显卡: Matrox G200 AGP (all resolutions) ATI 3D Rage Ⅱ+ PCI ATI 3D RagePro AGP 8M Diamond SteathⅡ (Intel i740) 8M AGP S3 Virge (VX/988) (^085201a^)为我们在赛扬450、微星6163、128MBSDRAM、I740上测试的一组数据,可以看出两个仿真程序的执行效率都不及原OpenGL驱动程序,在Quack2的几个测试Demo中都相差好几帧,在640×480分辨率模式下差距大一些,而在800×600模式下差距却缩小了,从这两个仿真程序的效率来看,低分辨率下SciTech GLDirect 1.01的效率高一些,而高分辨率下,ALT OpenGL反而略占优势。