D3D基本矩阵函数和显卡硬件术语
矩阵 - 基本操作 平移 旋转 缩放
D3DXMatrixTranslation()
旋转
D3DXMatrixRotationX()
D3DXMatrixRotationY()
D3DXMatrixRotationZ()
D3DXMatrixRotationAxis()
缩放
D3DXMatrixScaling()
显卡篇
EDO DRAM (Extended Data Out DRAM):扩展数据输出DRAM。对DRAM的访问模式进行一些改进,缩短内存有效访问的时间。
VRAM (Video DRAM):视频RAM。这是专门为了图形应用优化的双端口存储器(可同时与RAMDAC以及CPU进行数据交换),能有效地防止在访问其他类型的内存时发生的冲突。
WRAM (WINDOWS RAM):增强型VRRAM,性能比VRAM提高20%,可加速常用的如传输和模式填充等视频功能。
SDRAM (Synchronous DRAM):同步DRAM。它与系统总线同步工作,避免了在系统总线对异步DRAM进行操作时同步所需的额外等待时间,可加快数据的传输速度。
SGRAM (Synchronous Graphics DRAM):同步图形RAM,增强型SDROM。它支持写掩码和块写。写掩码能够减少或消除对内存的读-修改-写的操作;块写有利于前景或背景的填充。SGRAM大大地加快了显存与总线之间的数据交换。(如:丽台S680、Banshee)
MDRAM (Multibank DRAM):多段DRAM。MDRAM可划分为多个独立的有效区段,减少了每个进程在进行显示刷新、视频输出或图形加速时的时间损耗。
RDRAM (Rambus DRAM):主要用于特别高速的突发操作,访问频率高达500MHz,而传统内存只能以50MHz或75MHz进行访问。RDRAM的16 Bit 带宽可达 1.6Gbps(EDO的极限带宽是533Mbps),32Bit带宽更是高达4 Gbps。
二、3D显卡的基本3D功能:
1. Alpha Blending: ALPHA混合。ALPHA是3D纹理元素颜色特性中的特殊通道,利用它可对纹理(Texture)图象进行颜色混合,产生透明效果。
2. Billinear Filternig: 双线过滤。一种纹理映射技术,能够减少在纹理缩放时由于色彩分配不均而产生的块状图。
3. Dithering:抖动。这是变化颜色像素(Pixel)的排列以得到一种新颜色的过程。
4. Flat Shading:一种基本的绘制技术,用它绘制的每个三角形内部都使用同种颜色。
5. Fogging:雾化。将某种颜色与背景混合从而隐藏背景以达到雾状效果。
6. Gouraud Shading:用三角形顶点的颜色来进行插值(Interpolation)得到三角形内部每个点颜色。
7. Mipmap:MIP映射。它可以在内存中保存不同分辨率和尺寸的纹理图形,当3D对象移动时允许纹理光滑变化。
8. Perspective Correction:透视修正。在不同的角度和距离都能更真实地反映在3D场景中进行纹理光滑变化。
9. Point Sampled:点抽样。一种简单的纹理映射技术,用最近的纹理元素来决定当前点的颜色。
10. Texture Mapping:纹理映射。在3D物体上贴上位图(Bitmap)或图象,使物体具有真实感。
11. Transparency:透明。
12. Z-BUFFER:它是用来存放场景象素深度的显存区。
13. Gamma Correction:伽玛纠正。为了补偿由于显示器偏差而导致的图形失真,伽玛纠正就对图形进行亮度纠正。
三、3D显卡的三大API
API(Application Progam Interface 应用程序接口):是3D应用程序和3D显卡进行通讯的软件接口。
1.Direct 3D: 它是MICROSOFT的Direct X中的中间接口界面。在某些3D功能无法由硬件实现时,Direct 3D可以用软件仿真大多数3D功能,提高3D图形显示速度,它的动画特征质量相当高,非常适用于游戏开发。
2.Heidi(也叫Quick Draw 3D):它是一个纯粹的立即模式窗口,主要适用于应用开发,Heidi灵活多变,能够处理非常复杂的几何图形,扩展能力强,支持交互式渲染,最主要的是它得到了Autodesk的大力支持(Autodesk 就是著名的AUTOCAD和3D SUTDIO、3DMAX生产厂家)
3.OpenGL(开放式三维图形库)是由SGI公司所开发的(SGI一间生产非PC图形工作站的公司,包括其软件Waterfull alias maya,其知名度相当于PC界的Intel)。OpenGL是一个独立平台,具有可移植性。它能够快速绘制2D和3D对象,在分布式环境中协同工作,是大型科学和工程进行高复杂3D图形设计的标准应用程序接口。
16-、 24-和32-位色:16位色能在显示器中显示出65,536种不同的颜色,24位色能显示出1670万种颜色,而对于32位色所不同的是,它只是技术上的一种概念,它真正的显示色彩数也只是同24位色一样,只有1670万种颜色。对于处理器来说,处理32位色的图形图像要比处理24位色的负载更高,工作量更大,而且用户也需要更大的内来存运行在32位色模式下。
2D卡:没有3D加速引擎的普通显示卡。
3D卡:有3D图形芯片的显示卡。它的硬件功能能够完成三维图像的处理工作,为CPU减轻了工作负担。通常一款3D加速卡也包含2D加速功能,但是还有个别的显示卡只具有3D图像加速能力,比如Voodoo2。
Accelerated Graphics Port (AGP)高速图形加速接口:AGP是一种PC总线体系,它的出现是为了弥补PCI的一些不足。AGP比PCI有更高的工作频率,这就意味着它有更高的传输速度。AGP可以用系统的内存来当作材质缓存,而在PCI的3D显卡中,材质只能被储存在显示卡的显存中。
Alpha Blending(透明混合处理):它是用来使物体产生透明感的技术,比如透过水、玻璃等物理看到的模糊透明的景象。以前的软件透明处理是给所有透明物体赋予一样的透明参数,这显然很不真实;如今的硬件透明混合处理又给像素在红绿蓝以外又增加了一个数值来专门储存物体的透明度。高级的3D芯片应该至少支持256级的透明度,所有的物体(无论是水还是金属)都由透明度的数值,只有高低之分。
Anisotropic Filtering (各向异性过滤):(请先参看二线性过滤和三线性过滤)各向异性过滤是最新型的过滤方法,它需要对映射点周围方形8个或更多的像素进行取样,获得平均值后映射到像素点上。对于许多3D加速卡来说,采用8个以上像素取样的各向异性过滤几乎是不可能的,因为它比三线性过滤需要更多的像素填充率。但是对于3D游戏来说,各向异性过滤则是很重要的一个功能,因为它可以使画面更加逼真,自然处理起来也比三线性过滤会更慢。
Anti-aliasing(边缘柔化或抗锯齿):由于3D图像中的物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是使画面平滑自然,提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(Full Scene Anti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次采样,以达到不同级别的抗锯齿效果。3dfx在驱动中会加入对2x2或4x4抗锯齿效果的选择,根据串联芯片的不同,双芯片Voodoo5将能提供2x2的抗锯齿效果,而四芯片的卡则能提供更高的4x4抗锯齿级别。简而言之,就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
API(Application Programming Interface)应用程序接口:API是存在于3D程序和3D显示卡之间的接口,它使软件运行与硬件之上。为了使用3D加速功能,就必须使用显示卡支持的API来编写程序,比如Glide, Direct3D或是OpenGL。
Bi-linear Filtering(二线性过滤):是一个最基本的3D技术,现在几乎所有的3D加速卡和游戏都支持这种过滤效果。当一个纹理由小变大时就会不可避免的出现“马赛克”现象,而过滤能有效的解决这一问题,它是通过在原材质中对不同像素间利用差值算法的柔化处理来平滑图像的。其工作是以目标纹理的像素点为中心,对该点附近的4个像素颜色值求平均,然后再将这个平均颜色值贴至目标图像素的位置上。通过使用双线性过滤,虽然不同像素间的过渡更加圆滑,但经过双线性处理后的图像会显得有些模糊Environment Mapped Bump Mapping(环境映射凹凸贴图):真实世界中的物体表面都是不光滑的,所以需要通过凹凸模拟技术来体现真实物体所具有的凹凸起伏和褶皱效果。传统的3D显卡多采用浮雕(Emboss)效果来近似实现凸凹映射,这种浮雕效果的逼真度有限,难以显示细微的棱角处的反光效果和在复杂的多环境光源中的效果,更无法表现水波和气流等特殊流体的效果。而环境映射凸凹贴图是在标准表面纹理上再映射一层纹理,纹理的内容相同但位置相错,错位深度由深度信息和光源位置决定,再根据表现对象的不同,将下层纹理进一步处理为上层纹理的阴影或底面,这样就逼真地模拟出了真实物体表面的凸凹褶皱效果。
Gouraud Shading(高氏渲染):这是目前较为流行的着色方法,它为多边形上的每一个点提供连续色盘,即渲染时每个多边形可使用无限种颜色。它渲染的物体具有极为丰富的颜色和平滑的变色效果。
Mip-mapping(Mip映射):Mip-mapping的核心特征是根据物体的景深方向位置发生变化时,Mip映射根据不同的远近来贴上不同大小的材质贴图,比如近处贴512x512的大材质,而在远端物体贴上较小的贴图。这样不仅可以产生更好的视觉效果,同时也节约了系统资源。
Phong Shading(补色渲染):这是目前最好、最复杂的着色方法,效果也要优于Gouraud Shading。它的优势在于对“镜面反光”的处理,通过对模型上每一个点都赋予投射光线的总强度值,因此能实现极高的表面亮度,以达到“镜面反光”的效果。
S3TL(Transform and lighting)(“变形与光源”技术):该技术类似于nVidia最新的T&L技术,它可以大大减轻CPU的3D管道的几何运算过程。“变形与光源”引擎可用于将来的OpenGL和DirectX 7图形接口上,使游戏中的多边形生成率提高到4到10倍。这极大的减轻了软件的复杂性,也使CPU的运算负担得到极大的降低,因此对于CPU浮点速度较慢的系统来说,在此技术的支持下也能有较高速度的图形处理能力。
S3TC(S3 Texture Compression)/DXTC/FXT1:S3TC是S3公司提出的一种纹理压缩格式,其目的是通过对纹理的压缩,以达到节约系统带宽并提高效能的目的。S3TC就是通过压缩方式,利用有限的纹理缓存空间来存储更多的纹理,因为它支持6:1的压缩比例,所以6M的纹理可以被压缩为1M存放在材质缓存中,从而在节约了缓存的同时也提高了显示性能。
DXTC和FXT1都是与S3TC类似的技术,它们分别是微软和3dfx开发的纹理压缩标准,DXTC虽然在Direct 6中就提供了支持,但至今也没有得到游戏的支持,而FXT1能提供比S3TC更高的压缩比,达到8:1,同时它也将在3dfx新版本的Glide中得到支持。
T&L(Transform and Lighting)变形与光源处理:这是nVidia为提高画质而研究出来的一种新型技术,以往的显卡技术中,为了使物体图象真实,就不得不大量增加多边形设计,这样就会导致速度下降,而采用较少的多边形呢,画面又很粗糙。GeForce256中采用的这种T&L技术其特点是能在不增加物体多边形的前提下,进一步提高物体表面的边缘圆滑程度,使图像更真实准确生动。此外光源的作用也得到了重视:传统的光源处理较为单一,无生动感可言,而GeForce256拥有强大的光源处理能力,在硬件上它支持8个独立光源,加上GPU的支持,即时处理的光源将让画面变得更加生动真实,可以产生带有反射性质的光源效果。
Trilinear Filtering(三线性过滤):三线性过滤就是用来减轻或消除不同组合等级纹理过渡时出现的组合交叠现象。它必须结合双线性过滤和组合式处理映射一并使用。三线性过滤通过使用双线性过滤从两个最为相近的LOD等级纹理中取样来获得新的像素值,从而使两个不同深度等级的纹理过渡能够更为平滑。也因为如此,三线性过滤必须使用两次的双线性过滤,也就是必须计算2x4=8个像素的值。对于许多3D加速开来说,这会需要它们两个时钟周期的计算时间。
W-Buffer:W-Buffer的作用与Z-Buffer类似,但它的作用范围更小、精度更高。它可以将不同物体和同一物体部分间的位置关系进行更加细致的处理。
Z-Buffer:这是一项处理3D物体深度信息的技术,它对不同物体和同一物体不同部分的当前Z坐标进行纪录,在进行着色时,对那些在其他物体背后的结构进行消隐,使它们不被显示出来。Z Bufer所用的位数越高,则代表它能够提供的景深值就越精确。现在图形芯片大多支持24bit Z-Buffer而加上8bit的模板Buffer后合称为32bit Z-Buffer。
显示内存:与主板上的内存功能一样,显存是也是用于存放数据的,只不过它存放的是显示芯片处理后的数据。
3D显示卡的显存较一般显示卡的显存不同之处在于:3D显示卡上还有专门存放纹理数据或Z-Buffer数据的显存,例如带有6M显存的VooDoo Ⅰ显示卡,其中的2M显存就是用于上述用途。由于3D的应用越来越广泛,以及大分辨率、高色深图形处理的需要,对显存速度的要求也越来越快,从早期的DRAM,过渡到EDO-DRAM,一直到现在经常见到的SDRAM和SGRAM,速度越来越快,性能越来越高。图四的显存是SGRAM,注意它的四边都有引线的,很好区别;图五的显存是EDO-DRAM,与SDRAM一样采用了两边引线。区分EDO-DRAM和SDRAM可以看该显存上的编号,一般标有“08”、“10”、“12”等字样的多数是SDRAM,标有“80”、“70”、“60”、“-6”、“-7”等字样的多半是EDO-DRAM。除了上述3种常见的显存外,还有更专业的显存如VRAM(双端口视频内存)、WRAM(窗口内存)、RDRAM、CacheRAM等,多用在图形处理工作站上。显存的大小不固定,从单条256K、512K、1M到单条2M都有,因此不能仅看显存芯片的个数来猜测显示卡上有多大显存容量。很多老的显示卡上还有一些空插座用来扩充显存(如右图,插座上已经插上了显存),我们在扩充时要注意与显示卡上已有的显存速度配套,例如原显存是80ns,新扩充的显存也要是80ns的,这样在扩充后才能少出故障。
BIOS:又称“VGA BIOS”,主要用于存放显示芯片与驱动程序之间的控制程序,另外还存放有显示卡型号、规格、生产厂家、出厂时间等信息。打开计算机时,通过显示BIOS内一段控制程序,将这些信息反馈到屏幕上。图六是3块不同显示卡上的显示BIOS,可见外形不尽相同。早期显示BIOS是固化在ROM中的,不可以修改,而现在的多数显示卡则采用了大容量的EPROM,即所谓的“Flash -BIOS”,可以通过专用的程序进行改写升级。别小看这一功能,很多显示卡就是通过不断推出升级的驱动程序来修改原程序中的错误、适应新的规范、提升显示卡的性能的。对用户而言,软件提升性能的做法深得人心。
总线接口:显示卡要插在主板上才能与主板互相交换数据。与主板连接的接口主要ISA、EISA、VESA、PCI、AGP等几种。ISA和EISA总线带宽窄、速度慢,VESA总线扩展能力差,这三种总线已经被市场淘汰。现在常见的是PCI和AGP接口。PCI接口是一种总线接口,以1/2或1/3的系统总线频率工作(通常为33MHz),如果要在处理图像数据的同时处理其它数据,那么流经PCI总线的全部数据就必须分别地进行处理,这样势必存在数据滞留现象,在数据量大时,PCI总线就显得很紧张。AGP接口是为了解决这个问题而设计的,它是一种专用的显示接口(就是说,可以在主板的PCI插槽中插上声卡、显示卡、视频捕捉卡等板卡,却不能在主板的AGP插槽中插上除了AGP显示卡以外的任何板卡),具有独占总线的特点,只有图像数据才能通过AGP端口。另外AGP使用了更高的总线频率(66MHz),这样极大地提高了数据传输率。
目前的显示卡接口的发展趋势是AGP接口。要留意的是,AGP技术分AGP1×和AGP2×,后者的最大理论数据传输率是前者的2倍,今年将会出现支持AGP4×的显示卡(例如Savage4),它的最大理论数据传输率将达到1056MB/s。区分AGP接口和PCI接口很容易,前者的引线上下宽度错开,俗称“金手指”,后者的引线上下一般齐。
VGA插座:它是一个有15个插孔的插座,外型有点像大写的“D”(防止插反了)。与声卡上的MIDI连接器不同的是,VGA插座的插孔分3排设置,每排5个孔,MIDI连接器有9个孔,2排设置,比前者长一点,扁一点。VGA插座是显示卡的输出接口,与显示器的D形插头相连,用于模拟信号的输出。
特性连接器:是显示卡与视频设备交换数据的通道,通常是34针,也有26针的。它的作用不大,早期用于连接MPEG硬解压卡作为信息传送的通道。
其它部件:晶体振荡器:不锈钢外壳,比较显眼。其作用是产生固定的振荡频率使显示卡各部件 的运作有个参考的基准。
S端子:部分显示卡通过它完成向电视机(或监视器)输出的功能,5个插孔呈半圆分布,与电视机上的S端子完全相同。
贴片电阻:中、高档显示卡由于工作频率很高,采用了无引线的贴片电阻以减少干扰。它们是构成显示卡电气线路的一部分。 。