3D 建模 3D 渲染 3D2D 观察转换 其它处理 2D 显示 注意! 坐标系不是顺序产生的 而是一开始就设定好, 然后才能计算出相应的转换关系 建模坐标系 -> ->单个对象位置、方向变换,多个对象的装配 世界坐标系 -> ->光照计算(颜色),纹理坐标计算 -> ->观察变换(投影变换) 观察坐标系 -> ->裁剪, -> -> 消隐,透明 -> ->设备坐标扫描转换为二维像素坐标, 定下每个像素颜色 设备(屏幕)坐标系 3D 建模 3D 渲染 3D2D 观察转换 其它处理 2D 显示
第3讲 彩色图形显示 1 光栅扫描原理 2 帧缓冲器 3 其它
1. 光栅扫描原理
阴极射线管(CRT) 阴极射线管(CRT: Cathode-Ray Tube)是图形显示器的核心 早期电视机中的显像管都是CRT
CRT工作原理 由电子枪发出的电子束(阴极射线),通过聚焦系统和偏转系统,射向涂覆荧光层的屏幕上指定位置 在电子束冲击的每个位置,荧光层发出一个小亮点,而产生可见图形 电子枪:在控制栅极上的电压电平控制下,产生带负电荷的自由电子,通过聚焦、加速冲向荧火屏 聚焦系统:用来强制电子束在轰击荧光屏时会聚到一个小点,保证电子束轰击荧光屏时产生的亮点足够小 加速电极:加速电极加有正的高电压,使经过聚焦的电子束高速运动 偏转系统:控制电子束使其在荧光屏的适当位置绘图 ewrrfewrtrertreter
荫罩法显示彩色的原理 荫罩法彩色CRT是在荧光屏每个光点处呈三角形排列着红、绿和蓝三种颜色的三个荧光点 由于三个荧光点很小,且靠得很近,所以每个光点所显示的是一个具有混合颜色的光点 CRT有三支电子枪,分别与三个荧光点对应 每支电子枪发出的电子束专用于轰击某一类荧光粉 荫罩栅格被安置在紧靠荧光涂层的地方 荧光屏上的荧光点、荫罩栅格上的小孔和电子枪被精确地安排处于一条直线上,使得由某一电子枪发出的电子束只能轰击到它所对应的荧光点。三个电子束经聚焦偏转之后,穿过荫罩栅格上的小孔,激活该小孔对应的三个荧光点
荫罩法结构示意 点状 栅格式 沟槽式 Sony的Trinitron显像管 大多数球面与柱面显像管 LG的Flatron显像管 Mitsubishi的Diamondtron显像管 沟槽式 LG的Flatron显像管
荫罩法彩色原理 三支电子束的强度等级可控制荫罩CRT显示的彩色 调节各电子枪发出的电子束强度,即可控制各光点中三个荧光点所发出的红、绿和蓝三色光的亮度 彩色取决于红、绿、蓝荧光层激活的总量 荫罩法常用于光栅扫描系统 它能产生的彩色范围很大 图形系统的彩色CRT设计成RGB监视器 这些监视器采用荫罩法,且不经任何中间处理,直接从计算机系统取得每支电子枪(红、绿和蓝)的强度等级
2. 帧缓冲器
光栅扫描显示的帧 在刷新式CRT光栅扫描方式中,电子束总是不断地从左到右、从上到下反复扫描整个屏幕 电子束从左到右(横向)扫描一次为一条扫描线 在每条扫描线末端,电子束返回到屏幕的左边,又开始显示下一条扫描线 从屏幕顶部到屏幕底部(纵向)的扫描线构成一帧图像 一帧图像是显示系统执行一次全屏幕循环扫描(一次屏幕刷新)所产生的图像 每帧终了,电子束返回到屏幕的左上角,开始下一帧
光栅扫描显示的帧 在扫描过程中,只要在对应时刻、对应位置控制电子束的强度就能显示所要的图形
光栅扫描的逐行扫描 扫描线在屏幕上自上而下一条一条地扫描。当电子束从左到右到达屏幕的右边在每条扫描线末端,电子束返回到屏幕的左边,又开始显示下一条扫描线。在回扫过程中,电子束几乎不发射出电子,而且速度也很快 水平回扫(horizontal retrace):每条扫描线扫过后,返回到屏幕左端 垂直回扫(vertical retrace):当电子束到达屏幕底部时,又返回到屏幕左上角,从头开始扫描下一帧 水平回扫 垂直回扫
光栅扫描的隔行扫描 某些系统采用隔行(interlaced)刷新方式,每帧显示分为两趟: 第一趟:电子束从顶到底,一行隔一行地扫描 第二趟:垂直回扫后,电子束则再扫描另一半扫描线 以这种方式的隔行扫描使在逐行扫描所需时间的一半时就能看到整个屏幕显示 奇场 偶场
光栅扫描刷新频率 光栅扫描显示器每秒刷新的循环数称CRT的刷新频率 一般,光栅扫描显示器的刷新是按每秒60到80帧的速率进行的,但有些系统设计成更高的刷新速率 刷新频率以每秒多少周期或赫兹(HZ)为单位来描述: 一个周期对应于一帧 每秒60帧的刷新频率为60HZ 注意:刷新频率与物体的复杂度无关,也不会因物体的复杂度而影响其显示的质量
光栅扫描显示的帧缓冲器 光栅扫描显示器显示图像或画面是由像素组成 图像所有像素的强度值都要存放在一个存储器中 这个存储器称为帧缓冲器(frame buffer)或刷新存储器(refresh buffer),俗称显示存储器
帧缓冲器与屏幕象素 光栅扫描系统能较好地适用于包含细微阴影和彩色模式的场景的逼真显示,因此,光栅扫描显示器具有丰富的灰度和色彩,能产生真实感很强的复杂图形 光栅扫描的帧缓冲器对屏幕每一点都有存储强度/颜色信息的能力。帧缓冲器的单元个数至少与显示器能显示的像素总数相同,且存储单元一一对应于可寻址的屏幕像素位置 在每像素一位(二值)系统中,每个屏幕点或亮或暗,只需一个二进位来控制屏幕位置亮度,这时的帧缓冲器通常叫做位图(bitmap) 彩色显示和单色多灰度显示时,要能显示彩色并且强度可变,就需附加位,每个像素需要使用多个二进位表示,此时,帧缓冲器常常视为像素图(pix-map)
帧缓冲器与颜色种类 帧缓冲器每一个存储单元的位长决定了一幅画面上能同时显示的不同灰度的数目或颜色的种类 若帧缓冲器存储单元的位长为n,那么,帧缓冲器能支持一幅画面上同时显示的灰度等级或颜色种类数为2n: 高质量的光栅图形系统的帧缓冲器中每个象素对应24位,即每个电子枪发出的电子束的强度有256个等级,则该显示器能显示28 ×28×28 = 224 =16兆种颜色 每个光点具有24个存贮位的RGB彩色系统通常称为全彩色系统或真彩色系统 在采用彩色表之前, 物理屏幕一幅画面上可以同时显示的颜色种类数? 该显示系统最多能够显示的颜色种类数?
帧缓冲器、分辨率与颜色种类 假定显示器的分辨率为m×n,需要同时显示k种颜色,那么帧缓冲器的容量v至少要求为: 或者,假定显示器的分辨率为m×n,帧缓冲器的容量为v,那么,可以同时显示颜色种类数k可表示为:
帧缓冲器、分辨率与颜色种类 通俗地讲:帧缓冲器的容量一定时,分辨率越大,帧缓冲器中每个单元可分配的位长越小,可同时显示的颜色种类也越少 例如:具有1M字节的帧缓冲器: 若分辨率为640×480,则帧缓冲器每单元的位长就为24位 若分辨率为1024×768,则帧缓冲器每单元的位长就为略多于8位
帧缓冲器的位平面 位平面结构: 像素的每一位各自存放在不同的存储体,这样,一幅画面上所有象素的相同位存储在同一存储体内,这就是位平面 由于使用多个存储体,可一次同时读出更多的像素信息,降低了对帧缓冲器工作速度的要求,在中、高性能的图形显示器中得到广泛采用 一般情况下,帧缓冲器的每个单元有多少位就可分成多少个位平面 位平面的数目就是帧缓冲器的深度,也就是颜色的深度(灰度等级或颜色种类)
多灰度显示的位平面 即:若帧缓冲器的位平面的数目为n,则屏幕上一次可同时显示的颜色种类/灰度等级数是2n
彩色显示的位平面 作为帧缓冲器可能要求几兆字节存贮量,这由该系统的分辨率决定 用于高分辨率彩色显示时所需要的帧缓冲器的开销是相当高的 作为帧缓冲器可能要求几兆字节存贮量,这由该系统的分辨率决定 每个像素24位,而屏幕分辨率为1024×1024的系统需要1024×1024 ×24 ÷ 8≈ 3MB存贮量作帧缓冲器
帧缓冲器的分页 帧缓冲器的容量往往比一幅屏幕画面的像素图大得多 这时,帧缓冲器区域分成若干页面,每个页面存放一幅屏幕画面 帧缓冲器可以同时存放多幅画面的像素图 通过控制器实现不同画面的切换 页面的大小可以划分得比屏幕位图大得多,甚至是整个帧缓冲器 从程序员的角度来看,可输出显示的画面将远大于实际的物理屏幕,此时,物理屏幕仅是一个窗口,它显示的不过是全部画面的一部分
彩色查找表技术 彩色查找表或颜色索引技术: 在帧缓冲器与显示屏的数模转换器之间增加一个查色表(Color Lookup Table,又称调色板),对显示的颜色进行索引 不增加帧缓冲器存储容量而得到更多颜色
彩色查找表的结构 彩色查找表(彩色表)可看成是一维线性表 每一项(元素)对应于一种颜色 帧缓冲器中每个单元存储的是对应于某一像素颜色在颜色表中的地址(索引),而不是颜色值 255 196 彩色表元素 (帧缓冲器单元位长) 彩色表地址 (象素颜色种类)
彩色查找表的结构 彩色表的地址长度由帧缓冲器每个存储单元的位数决定 这确定一幅画面能同时显示的颜色种类数 255 196 彩色表元素 (帧缓冲器单元位长) 彩色表地址 (象素颜色种类) 彩色表的元素位长由帧缓冲器每个存储单元的基色数决定 这决定显示器可选择显示的颜色种类总数
彩色查找表标注 例:帧缓冲器单元位长为8,彩色表的元素位长为24位(每一个基色位长为8位),这样,一幅画面上能同时显示256种颜色,而可得到1600多万种颜色的可能性 这称为:1600多万种颜色中同屏显示256种颜色 记为:256/16777216
彩色查找表其它功用 彩色表的使用还增加了一些附加功能。如: 彩色表内容全部置成背景色可快速清除屏幕画面; 假如帧缓冲器中的三个位平面中存放着三幅不同的单色图像,可通过彩色表来选择其中的任意一幅进行显示,也可将其中的两幅或三幅叠加显示 彩色表在动画中应用更加广泛
液晶和等离子 液晶显示:通过电流来改变液晶面板上的液晶分子排列,使它能阻塞或传递内部光源发出的光 。 等离子显示:依靠高电压来激活显像单元中的特殊气体,使它产生紫外线来激发荧光物质发光 。 刷新速率, 响应时间 色彩 ——每个像素都由三个单元构成,分别负责红、绿和蓝色的显示 ——彩色萤光粉 分辩率 亮度和对比度 视角,屏幕尺寸 ……
前景像素与背景像素的颜色融合 假设透明度系数0<=tn<=1 P = tF + (1 − t)B 可见面判别 面绘制(渲染) 假设透明度系数0<=tn<=1 P = tF + (1 − t)B P = t0F + t1B1 + (1 − t0 − t1)B2
OpenGL的颜色处理函数 RGB,RGBA(RGB+α透明度系数)模式 glColor* (colorComponents); glColor3f (0.0, 1.0, 1.0); glColor3i (0, 255, 255); glColor4i (0, 255, 255,0.2); 颜色表模式: glutSetColor (index, red, green, blue); glEnable (GL_COLOR_TABLE) glIndexi (196); 颜色混合(调和):不作用于颜色表模式 glBlendFunc (sFactor, dFactor); (Sr Rs + Dr Rd , SgGs + DgGd , Sb Bs + Db Bd , Sa As + Da Ad ) glGetFloatv (GL_CURRENT_COLOR, colorValues);