瞒天过海——Direct3D模拟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反而略占优势。