随着3d技术的发展,3d应用软件(尤其是3d游戏软件)的大量涌现,使得3d图形加速卡成为大家谈论的一个热点,近年来,随着硬件技术的高速发展,以及微软direct 3d的出台,更加快了3d图形加速卡大量面市的步伐。以往只能在高档图形工作站和专用电脑中见到的这类图形卡,今天已逐渐走进我们的办公室和家庭。相信3d图形加速卡很快便会成为继声音卡和cd-rom之后的多媒体电脑的又一标准配置。
我们在了解3d加速卡及其相关技术时,往往会频繁遇到一些抽象的术语,本期特推出“3d图形加速卡术语大放送”一文,帮助你快速跨入3d之门。
●3d api (3d应用程序接口)
api是application programming interface的缩写。api是许多程序的集合,一个3d api 能让编程人员所设计的3d软件只要调用api内的程序,api就会自动和硬件的驱动程序沟通,启动3d芯片内强大的3d图形处理功能。目前几种主流的3d api有direct x、opengl、3dr、 renserware 、 brender 、 glide/3dfx 及quickdraw 3d rave等。
●direct x
微软公司专为pc 游戏开发的api , 特点是:比较容易控制,可令显示卡发挥不同的功能,与windows 95 和windows nt操作系统兼容性好, 而且目前基本上是免费使用的(以后就难说了)。在direct x 5. 0 中共分六个部分: directdraw管理游戏的视频输出、direct3d管理游戏的3d图形、directplay 管理游戏的网络通讯、 directsound 管理游戏的声音输出、 directinput 管理游戏的摇杆控制、directsetup 管理游戏的安装。
●opengl (开放式图形界面)
由silicon graphics公司(即大名鼎鼎的sgi)开发,能够在windows 95、windows nt、 macos 、beos、os/2、以及unix上应用的api。 它除了提供许多图形运算功能外,也提供了不少图形处理功能。由于opengl起步较早,一直用于高档图形工作站,其3d图形功能很强,超过direct x许多,可 大限度地发挥woodoo、power vr等超级3d芯片的巨大潜力。因此许多游戏开发公司和图形软件开发公司强烈要求微软公司在window的下一个版本中加入对opengl的支持。目前,这一合理要求已经被微软公司接受,他们将在windows 98中同时支持direct x和opengl。
●alpha biending (alpha值后处理)
简单地说这是一种让3d物件产生透明感的技术。一个在屏幕上显示的3d物件,每个像素中通常附有红、绿、蓝(rgb)三组数值。若3d环境中允许像素能拥有一组 alpha值,我们就称它拥有一个alpha channel。alpha值记载像素的透明度。这样一来使得每一个物件都可以拥有不同的透明程度。alpha blending这个功能,就是处理两个物件在屏幕画面上叠加的时候,将alpha值考虑在内, 使其呈现接近真实世界的效果。
●anti-aliasing (抗锯齿处理)
应用调色技术将图形边缘的“锯齿”缓和,在视觉上得到一种平滑边缘的效果。
●depth cueing (景深效果处理)
景深效果处理则是当物件远离观测者时,降低物件颜色与亮度的一项功能。例如,当一个物体离我们的视线越来越远时,它看起来就会越来越模糊。
●fog effect (雾化效果处理)
顾名思义,它的功能就是制造一块指定的区域笼罩在一股烟雾弥漫之中的效果,程序设计师可以自由调整雾的范围、程度、颜色等参数,再交由3d芯片负责将结果计算出来。
depth cueing和fog effect功能, 对于决定“立体空间”的外观显示有相当大的帮助,让虚拟出来的世界更加接近真实的世界。
●heidi
heidi的定位在开发3d图形应用的许多方面, 它扮演着协调动作的重要角色,是由autodesk公司提出来的规格。就图形处理工作的管理方面,如算图、着色、复制等作业,以及内部的信息传输,heidi 提供给应用软件一种动态化组织架构的管理方式。目前,采用 heidi 系统的应用程序,有kinetix的3d studio max动画制作程序,和autodesk为 autocad r13开发的whip加速驱动程序。
●mip mapping (贴图处理)
在显示3d图像时,mip贴图处理非常重要。 这项材质贴图的技术,是依据不同精度的要求,而使用不同版本的材质图样进行贴图。当物件移近或远离观测者时,会在物体表面贴上相对应的材质图案,于是让物体呈现出更加真实的效果。例如:物件逐渐远离,依据这种处理方式,程序就会贴上较单纯、细致度较低的材质图样,进而提高图形处理的整体效率。
●shading:flat,gouraud,and texture mapping (着色处理:平面着色、 高氏着色及材质贴图)
绝大多数的3d物体是由多边形(polygon)所构成的,它们都必须经过某些着色处理,才不会以线结构(wire frame)的面目示人。flat shading是 简单,也是 快速的着色方法,每个多边形都会被指定一个单一且没有变化的颜色。这种方法虽然会产生出不真实的效果,但非常适用于快速成像作业(quick rendering)及其它要求速度重于细致度的场合。gouraud shading就稍为好一点。在多边形上的每一点都会被指定一组色调(hue)值, 同时将多边形着上平顺的渐层色。
●texture mapping (材质贴图)
是在物体着色方面 引人注目,也是 拟真的方法,同时也多为目前的游戏软件所采用。一张平面图像(可以是数字化图像、小图标或点阵位图)会被贴到多边形上。
●video texture mapping (动态材质贴图)
是目前 好的材质贴图效果,具有此种功能的图形图像加速卡,采用高速的图像处理方式,将一段连续的图像(可能是即时运算或来自一个avi或mpeg的档案)以材质的方法处理,然后贴到3d物件的表面上去。例如在赛车游戏中,在挡风玻璃上贴一段连续的天空动画,就能做出类似即时反射环境贴图的效果。
●perspective correction (透视角修正处理)
要让一个经过材质贴图处理的3d物件具备相当真实的外貌,这项处理不可缺少。它采用数学运算的方式,以确保贴在物件上的部分影像图会向透视的消失方向贴出正确的收敛。由于这项工作十分依赖处理器,所以对新一代的3d加速器而言,这个功能也是相当重要。有了它,3d加速器才能保持图形的真实效果。我们以风靡世界的3d冒险游戏《古墓丽影2》中的图形为例,在图一中由于关闭了3d加速卡上“透视角修正”功能,人物所站的石板地面线条出现严重的弯曲变形;而图二中打开了3d加速卡上“透视角修正”功能,石板地面线条便保持了真实的效果。
●texture map interpolation (材质影像插补处理即滤化处理)
当材质被贴到屏幕所显示的一个3d模型上时,材质处理器必需决定每个图素要贴到的像素位置。由于材质是2d图片,而模型是3d物件,所以图素的范围与像素范围通常不能很好吻合。此时要解决这个像素的贴图问题,就得用插补处理的方式来解决。而这种处理的方式共分三种:nearest neighbor,bilinear以及trilinear。
●neaest neighbor (近邻取样处理)
是一种较简单的材质影像插补的处理方式。使用包含像素 多部份的图素来贴图。这种处理方式速度比较快,常被用于3d游戏开发,不过图形的品质较差。
●bilinear lnterpolation (双线性插补处理)
是一种较好的材质影像插补处理方式,能够先找出 近像素的四个图素,然后在它们之间作差补效果, 后产生的结果才会被贴到像素的位置上,这样,可以避免看到大块的像素呈现到萤幕上,就像在观察近距离图形时常常出现的“马赛克”现象。这种处理方式适用于有一定景深的静态影像,不过无法提供影像的 佳品质,同时也不适用于移动中的物件。我们还是采用《古墓丽影2》的图像来说明:在图三中,由于关闭了3d加速卡上的“双线性插补”功能,在人物身后左边的木桩上出现了明显的“马赛克”现象。而在图四中,我们将3d加速卡上“双线性插补”功能打开,于是木桩上的“马赛克”现象消失了。
●trilnear lnterpolation (三线性插补处理)
是一种更复杂的材质影像插补处理方式。会用到相当多的材质影像,而每张的大小恰好会是另一张的四分之一。例如:有一张材质影像是512×512个图素,第二张就会是256×256个图素,第三张便是128×128个图素...等等, 小的一张是1×1,使用这些多重解析度的材质影像,当遇到场景较深、较大时(如飞行模拟),就能提供高品质的贴图效果。三线性插补处理比双线性处理需要更大的计算量,而且需要更大的存储器时钟带宽。但是trilinear interpolation可以提供 高的贴图品质。
●frame rate (画面更新率)
荧光屏上画面更新的速度,其单位为fps(帧每秒),fps越高画面越流畅。
●frame buffer (图形画面缓冲区)
该区域主要用于存储可显示的图形信息, 它决定了可显示的 高分辨率与 大彩色数量。
●dopth buffering (双重缓冲区处理)
绝大多数支持opengl的3d加速卡都会提供两组图形画面信息,一组显示,另一组备用,这两组图形画面信息通常被看着front buffer和back buffer。这项功能让显示卡用front buffer存放正在显示的这格画面,而同时下一格画面已经在back buffer待命。 然后显示卡将两个buffer 互换,back buffer的画面显示出来,且同时再在front buffer中画好下一格待命,如此形成一种互补的工作方式,迅速对画面的快速改变做出反应。
●ramdac (存储器数模转换速度)
表示将存储器图形数据转换成显示器上可见的像素光点的转换速度, 单位为mhz。其工作速度越高,频带越宽,高分辨率时的画面质量越好。
●z buffer (z 缓存)
在3d环境中,每个像素会利用一组数据资料用来定义像素在显示时的纵深度(即z轴座标值)。z buffer所用的位数越高, 则代表该显示卡所提供的物件纵深感也越精确。一般的3d加速卡仅能支持到16位或24位的z buffer,对于普通的3d模型而言这也算足够了,不过高级的3d卡更可支持到32位的z buffer。对一个含有很多物体连接的较复杂的3d模型,能拥有较多的位数来表现深度感是相当重要的,能避免闪烁现象发生。
●z-buffering (z 缓存处理)
z-buffering是在为物件进行着色时, 执行“隐藏面消除”工作的一项技术,使隐藏物件背后的部份不会被显示出来。