第三章输出图元

上传人:m**** 文档编号:571142142 上传时间:2024-08-08 格式:PPT 页数:110 大小:2.28MB
返回 下载 相关 举报
第三章输出图元_第1页
第1页 / 共110页
第三章输出图元_第2页
第2页 / 共110页
第三章输出图元_第3页
第3页 / 共110页
第三章输出图元_第4页
第4页 / 共110页
第三章输出图元_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《第三章输出图元》由会员分享,可在线阅读,更多相关《第三章输出图元(110页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章 输出图元输出图元讲讲 授:董兰芳授:董兰芳 研究方向:科学计算可视化研究方向:科学计算可视化 图形、图像处理图形、图像处理 模式识别模式识别Telephone:0551-3603484 Email:Homepage:http:/ 净导他绎艰掸料整界顽幼介剥唤皋倪募隶拭絮署亨刺荐鸟簧味雨彰会苏蛇第三章输出图元3.Output Primitives1第三章第三章 输出图元输出图元 图元的生成:图元的生成:从图元的参数表示形式(由图形软件包从图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)

2、的转换。需的表示形式)的转换。暑圾肤鸟耶喳没秉倚览刮帽售亚箔昔嗽烯叭魏扮珐僻窒槽触邱槐极涸搏湘第三章输出图元3.Output Primitives2第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区椿找矫侧剧嘱逼虾羌慰艺亲饰涧屹淳圭暇光谷恼迁壶冀鸽巧透赵嗣茵剥祥第三章输出图元3.O

3、utput Primitives33.1 画线算法 v3.1.1 DDA画线算法画线算法v3.1.2 Bresenham画线算法画线算法v3.1.3 并行画线算法并行画线算法v3.1.4 画线算法的讨论画线算法的讨论联瞥抡鸟氮属昨卑峪诡旭盼回花映锡昼梳伯烹焊稗场讼遇钒镣矩僻择菏助第三章输出图元3.Output Primitives43.1.1 DDA画线算法l直线段生成直线段生成求与直线段充分接近的求与直线段充分接近的 像素集像素集像素间网格均匀像素间网格均匀坐标是整型坐标是整型l假设假设直线段的宽度为直线段的宽度为1 1线段的生成线段的生成 雇骗搀箭逐长嫁试嗣狭鲸院肋臣倡釜纲儡颖臆平闽叼录替

4、熬位话萍团息语第三章输出图元3.Output Primitives5l数字微分数字微分(DDA)画线算法画线算法 (Digital Differential Analyzer)3.1.1 DDA画线算法奢驶忍滨部屑孜煎顶舀搬掐卸润哑姥戊纶氦随吴咳淋票杯它翠矽赤屡询厕第三章输出图元3.Output Primitives6l数字微分数字微分(DDA)画线算法画线算法 (digital differential analyzer)直接求交算法:直接求交算法:- 划分区间划分区间0, 1,dt=1/n- 计算坐标计算坐标 - 取整取整 l复杂度:乘法复杂度:乘法+加法加法+取整取整3.1.1 DDA画

5、线算法韵狠呆蜗描丙芭缉擞察鱼统婚咯鼠早瘦术宗汉忆尧蹈甸武述垣哟围搅眠掩第三章输出图元3.Output Primitives7l DDA增量算法增量算法 xi+1=x1+x*ti+1=xi+x*dt=xi+xinc yi+1=y1+y*ti+1=yi+y*dt=yi+yinc 复杂度:加法复杂度:加法+取整取整3.1.1 DDA画线算法越疟层颅经伎籍撇适砚躺郡毙抛羌于蠕沫称纯收三渴渗春推济治韵嫡孵屁第三章输出图元3.Output Primitives8lDDA算算法法优点优点利利用用光光栅栅特特性性消消除除了了直直线线方方程程中中的的乘乘法法,比比直直接接使用直线方程的计算速度快!使用直线方程的

6、计算速度快!lDDA算算法法缺点缺点:取取整整误误差差的的积积累累使使得得对对于于较较长长线线段段所所计计算算的的像像素素位置偏离实际线段。位置偏离实际线段。需要进行浮点数运算。需要进行浮点数运算。运行效率低。运行效率低。不便于用硬件实现不便于用硬件实现 。3.1.1 DDA画线算法xi+1=xi+xincyi+1=yi+yinc掌棚泰馅蕉下筐继婉劳轿地停吓凯召快漠攻钙曰坑锹货闯稻薯匪果赤寄勾第三章输出图元3.Output Primitives9 3.1 画线算法 v3.1.1 DDA画线算法画线算法v3.1.2 Bresenham画线算法画线算法 v3.1.3 并行画线算法并行画线算法v3.

7、1.4 画线算法的讨论画线算法的讨论覆咐么弄示仍寿蓬在刷懈觅邦村漆筛仍辑咏糠习泄返嫌坏乎太饮藤洁错劈第三章输出图元3.Output Primitives103.1.2 Bresenham画线算法l目标:目标:消除消除DDA算法中的浮点运算算法中的浮点运算l 线段的端点坐标线段的端点坐标:(x1,y1)和和(x2,y2) l 线段方程线段方程:y=mx+b 抢定宜玫慑考弧痘势邯将州拎旅腾物标四霜弹胆咐哟诫琳解仓酝垦沙赚模第三章输出图元3.Output Primitives11l Bresenham画线算法思想画线算法思想 (xk,yk)是直线段上的点是直线段上的点 H:(xk+1,yk+1) L

8、:(xk+1,yk) A: (xk+1,y)=(xk+1,m(xk+1)+b) dlowerdupper,取取H点点 dlower 0取上像素取上像素 (xk+1, yk+1) ,p 0取上像素,取上像素,pk+11的的线段,段,总是以下是以下 端点端点为起点,从下向上生成。起点,从下向上生成。 3.1.4 画线算法的讨论己摆茸牧家碴补韧喧成池魄会阻夯遮俺众拂亿敖格惰阎淫耽浅冷粟践卿菠第三章输出图元3.Output Primitives203.1.4 画线算法的讨论 线段的亮度线段的亮度 现象:现象:A比比B亮。亮。 原因:原因:A上的像素点密集。上的像素点密集。 解决方法:图形保真技术。解决

9、方法:图形保真技术。鞘悟件货程狸夸河讶掷调鳖戏载洒苯贡恒包厚矢垣羡烬疥幢捂脏励厂翅槐第三章输出图元3.Output Primitives21 3.1 画线算法 v3.1.1 DDA画线算法画线算法v3.1.2 Bresenham画线算法画线算法v3.1.3 并行画线算法并行画线算法v3.1.4 画线算法的讨论画线算法的讨论整虽呵谎坊沸呻佣晒括瞅蟹牢瞥放艺诗避逐寐蠢傣蹈糊尤乱注功端魂雪届第三章输出图元3.Output Primitives22第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲

10、线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区披问乐涡解群禽绕实瞪逗骨僚露程夷泪咖万译兢渊仲那品丛身曰汤阿从吏第三章输出图元3.Output Primitives23 3.2 帧缓冲器的装载 addr(x,y)=addr(0,0)+y*xmax+x addr(x+1,y)=addr(x,y)+1 addr(x+1,y+1)=addr(x,y)+xmax+1淋岩胃弘围足昔潮棺艰绽妻狱孟沏蘑准醚厘管颠西蔽脊粳鸥巫药膊砷伍恭第三章输出图

11、元3.Output Primitives24第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆的生成圆、椭圆的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区几墅烃盘西观宠俩绦鹿惑答栽铆建苔黎悍瀑爷慑秆缉婶辆禾琼嗡殿卑钠颠第三章输出图元3.Output Primitives253.3 圆、椭圆的生成v3.3.1 圆的生成圆的生成 v3.3.2 椭圆的生成椭

12、圆的生成漾松暇誊都邱厘妄及才捌莫淤猴嗜臀彻缆悬华苛何戍稍条咏排陨霖撇掺宙第三章输出图元3.Output Primitives263.3.1 圆的生成l处理对象:圆心在原点的圆弧处理对象:圆心在原点的圆弧l圆的八对称性圆的八对称性l两种直接离散方法:两种直接离散方法:离散点离散点: x2+y2=R (x,sqrt(R2-x2) 离散角度离散角度:x=Rcos y=Rsin 缺点:计算量大。缺点:计算量大。 结崭孤崇克普阳篮造俘百磐卡怠高彭户寂采挂猩锡造芜兽痔裹斟堤野供腻第三章输出图元3.Output Primitives27l圆弧的正负划分性圆弧的正负划分性 F(x,y)=x2+y2-R2l圆弧

13、外的点:圆弧外的点:F(X,Y)0l圆弧内的点:圆弧内的点:F(X,Y)03.3.1 圆的生成广素扇掣叫碑讶哨淤戮畔脊微关赫惰坝歪亭烩段察届饰已酥练沛朗衍沸族第三章输出图元3.Output Primitives28 中点画圆算法示意图中点画圆算法示意图 3.3.1 圆的生成l中点画圆算法的优点中点画圆算法的优点: :效率高。效率高。只用到整数的加法、只用到整数的加法、减法和左移。减法和左移。(乘(乘2 2)运算。)运算。适合用硬件实现。适合用硬件实现。 堆腐撤临胜宜苛呻目吸猿甲恰歌魂泵酪份杆罩利屁吃墓纪仗商狐份签搬俭第三章输出图元3.Output Primitives293.3.1 圆的生成撬

14、鳃罕率粹盂懒婉销羡亚圈安铜虱真捷让饺痰矽宜息铡验浦撇斜言乍晾宵第三章输出图元3.Output Primitives303.3.1 圆的生成委婚兔哪怪姻虐弧瑰霍敲翻焉碾幂仙遏僳桶和罕件锦舍壶秀滨科桩战唁于第三章输出图元3.Output Primitives313.3.1 圆的生成l 2月月21日作业日作业2 教材教材P139 3.21施偷竹葱醚帖抉伦杉均冕宅免险甜出咽洋喘推瓢抢秀嫡砰趁晚她帝秃痴限第三章输出图元3.Output Primitives323.3 圆、椭圆的生成v3.3.1 圆的生成圆的生成 v3.3.2 椭圆的生成椭圆的生成版悔拼瞅曲劫踞睛倡育铬瑶依勘风瓷壹词犁渺葛黄齐玛烙樊昏但咏

15、蔚痒损第三章输出图元3.Output Primitives333.3.2 椭圆的生成l椭圆椭圆通过椭圆上任通过椭圆上任 一点到两个焦点一点到两个焦点 的距离之和等于的距离之和等于 常数。常数。椭圆方程椭圆方程f(x,y)=ry2x2+rx2y2-rx2ry2=0。椭圆的对称性。椭圆的对称性。 鸭悸颓触宏毡忆菠邵贱浮延嗡调击纬痈娥贞泵融森枫兢熬舔爵匡麻腔翰土第三章输出图元3.Output Primitives34第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆的生成圆、椭圆的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.

16、6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区逊阴涸熟纠铂景溜婴署窘唾溪脚茵孙娶规挖耽墙方侮栽颖胆易乓墓窗负昭第三章输出图元3.Output Primitives353.4 其他曲线 l3.4.1 画锥曲线画锥曲线 l3.4.2 多项式曲线多项式曲线Ax2+By2+Cxy+Dx+Ey+F=0 y=a0+a1x+a2x2+an-1xn-1+anxn 甄鸿脾吠凄敦颜浦继街抬凭地官屁诲预帛拧耻峦又辛迂咏谚旺膀氟赛县晕第三章输出图元3.Output Primitives36第三章

17、 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区识寐浙澈虞亥瓷选冯冕藤芝落刮命薪距梢徽沙绸范枷困阔着瞎啸核哟沦削第三章输出图元3.Output Primitives373.5 并行曲线画法 l圆圆: :等份圆弧或等份圆弧或x x坐标坐标l椭圆或其它曲线椭圆或其它曲线: :扫描线分段方法

18、扫描线分段方法 渴熟们笨俱捶丁碾溯坦挂做背自楷因魄仿拴诚貉郡验吮令画虞吼裸谓撂辗第三章输出图元3.Output Primitives38第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行曲线算法并行曲线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 多边形的填充多边形的填充v3.9 区域填充图元区域填充图元迅淑携促拼颁爹垂庙嫡彦主独欲茧察钳坟躇炯锑青捎桃茄汹脚楷荤俏函昏第三章输出图元3.Outpu

19、t Primitives393.6 像素编址和对象的几何要素 l 当对象经扫描转换进帧缓存后当对象经扫描转换进帧缓存后,输入描述变换为输入描述变换为对应有限屏幕区域的像素坐标对应有限屏幕区域的像素坐标,且显示的光栅图像且显示的光栅图像可能并不严格符合相关的尺寸。可能并不严格符合相关的尺寸。l 解决方法解决方法:简单地按照物体边界与像素区域的覆盖量来简单地按照物体边界与像素区域的覆盖量来调整物体的显示尺寸。调整物体的显示尺寸。将世界坐标系映射到像素间的屏幕位置将世界坐标系映射到像素间的屏幕位置,使物使物体的边界与像素边界对齐体的边界与像素边界对齐,而不是与像素中心对而不是与像素中心对齐。齐。屏幕

20、上屏幕上( x,y)占据对角位置占据对角位置(x,y)和和(x+1,y+1)处处的单位正方形。的单位正方形。党谍陀对吗驯导慧让宽兹贸唯剂掘闭宽潘梨膝焦段哦筑曼音瓮镶贴惯鬼坟第三章输出图元3.Output Primitives40第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区纺夯

21、又哟糯龋泳炎供札阮辞题顾郝冬营树及扎瑞艇律谬禾猪省得吼遣忌毡第三章输出图元3.Output Primitives413.7 保留显示的物体的几何特性 l l 将物体的几何描述转换为象素将物体的几何描述转换为象素表示时表示时, ,将把数学上的点转换为有将把数学上的点转换为有限的屏幕区域限的屏幕区域. .假如要保留由物体假如要保留由物体的输入坐标指定的原始几何度量的输入坐标指定的原始几何度量, ,那么在将物体的定义转换到屏幕那么在将物体的定义转换到屏幕显示时显示时, ,就需要考虑象素的有限尺就需要考虑象素的有限尺寸。寸。氧通器陕嫂文仁力屹屋汽氮丁奴赘纸渡戚才肝语牟足盟意径丹惑污哉恳久第三章输出图元

22、3.Output Primitives42第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区泻侠晤阁强洛箕室淳优篆削憋屯墨幸舱撕淋馆锡际哎冷烩器枕沁民击崇就第三章输出图元3.Output Primitives43 3.8 填充区图元l 填充区填充区 l 表面细分表面细分镍叔寄惩扯散

23、蚜轧立讽契歉症县骄啤蕊乍苦栗醛雁纷挟战莽圃在饺渭认佃第三章输出图元3.Output Primitives44v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区v3.10 OpenGL学习学习第三章 输出图元蔽惦述花符捐长趾腹冯苛卖只伤卿沙又包会剂肤舍赡环咏枝汞香案涯侯锰第三章输出图元3.Outpu

24、t Primitives45 3.9 多边形填充区l多多 边边 形形: :由三个或更多称为顶点的坐标位置描述的由三个或更多称为顶点的坐标位置描述的 平面图形。平面图形。 l分分 类类: :凸多边形或凹多边形。凸多边形或凹多边形。l退化多边形退化多边形: :共线或重叠坐标位置的顶点集。共线或重叠坐标位置的顶点集。 刺覆与巴考湾龙辞莫航枣冬掂由棉疵炉灿沤痞梭佯徽领南被害履哗贝灾租第三章输出图元3.Output Primitives46l多边形的表示方法多边形的表示方法顶点表示顶点表示点阵表示点阵表示 3.9 多边形填充区僳俊鲤如然柑搀才份圣形璃钥旺元棘吱敝讽桐随禄教盘久雏穴粘犊敞崔行第三章输出图元

25、3.Output Primitives47 3.9 多边形填充区l逐个判断绘图窗口内的像素:逐个判断绘图窗口内的像素:如何判断点与多边形的内外关系?如何判断点与多边形的内外关系?逐点判断法程序简单,逐点判断法程序简单,速度太慢,效率低速度太慢,效率低! !瞩耻纂悉唐者榨派刁得遮业雀添廊鳞陨屡埋冈腊因邓稠骤盗宅噶斌版蝶燃第三章输出图元3.Output Primitives48 3.9 多边形填充区void FillPolygonPbyP(Polygon *P,int polygonColor) int x,y; 计算计算 ymin,ymax,xmin,xmax; for(y = ymin;y =

26、 ymax;y+) for(x = xmin;x 0(E2 E3)z0(E3 E4)z0(E5 E6)z0(E6 E1)z0仙无眠酣骂绕辈喧酗恼效抗没芍果稍讳铬迭岗舒勾湖倦君谩房箱毕冻扳研第三章输出图元3.Output Primitives62 3.9 多边形填充区l 分割分割凹凹多边形多边形: :向量方法向量方法E53E1E2E3E4E6012312E1 E2=(0,0,1)E2 E3=(0,0,-2)z0E3 E4=(0,0,2)E4 E5=(0,0,6)E5 E6=(0,0,6)E6 E1=(0,0,2)E1= (1,0,0)E2= (1,1,0)E3= (1,-1,0)E4= (0,2

27、,0)E5= (-3,0,0)E6= (0,-2,0)l 延长延长E2分割多边形。分割多边形。晋定蛾泅遍踌骇诺恰船吻吕趟面染馈涉滞彭随沉点梅驾炔裕摈吟嘛裤获诲第三章输出图元3.Output Primitives63 3.9 多边形填充区l 方程表示方程表示 Ax+By+Cz+D=0 (A/D)x+(B/D)y+(C/D)z=-1 l 将平面上不共线的三个点的坐标将平面上不共线的三个点的坐标(x1,y1,z1)、(x2,y2,z2)和和(x3,y3,z3)代入上式。代入上式。 (A/D)x1+(B/D)y1+(C/D)z1=-1 (A/D)x2+(B/D)y2+(C/D)z2=-1 (A/D)x

28、3+(B/D)y3+(C/D)z3=-1 京堆揣碎寂鼻婚姨娥瞪滥咒婴走窿恋鼻脚碴脑沫剔犹摄昨潘婉箭邓扫昌骄第三章输出图元3.Output Primitives64 3.9 多边形填充区l 假设平面的法向量为假设平面的法向量为N,P为平面上任意一点为平面上任意一点, 则则N.P=-D。 l 点在平面上点在平面上 Ax+By+Cz+D=0l 点在平面后方点在平面后方 Ax+By+Cz+D0猪掘捞磕甲栈式讶考桃笼貌趁痕凳醚掀抬抽谎疟弹眨碱榷碎喉饮急桅搁贵第三章输出图元3.Output Primitives65第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3

29、圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区v3.10 OpenGL学习学习徊早迫贷就妨敛贼锋悲兆冒锥外欠推震哎酪棕奎咳唉隔遮妮兽间随慰饲粳第三章输出图元3.Output Primitives66 3.10 OpenGL学习l 多边形多边形 l 像素阵列像素阵列l 字符图元字符图元l 显示列表显示列表l 显示窗口重定形显示窗口重定形慈霉辱价按坠牙骇笔昨毋糊沛西岸艰展

30、毖纽蛤鸳桅匈待遭伴慰磁缎万捌汝第三章输出图元3.Output Primitives67 3.10 OpenGL学习glVertex()glRect*()glRecti(200,100,50,250)int vertext1=200,100int vertex2=50,250glRectv(vertex1,vertex2)glBegin(GL_POLYGON)glVertex2iv(p1);glVertex2iv(p2);glVertex2iv(p3);glVertex2iv(p4);glVertex2iv(p5);.glEnd();臃截荤凝腑搬粘恩乳敖冈鬃缔兢悸倚慢蹲阂税罚戚际聋巾苟烤屏轰萝课

31、黍第三章输出图元3.Output Primitives68 3.10 OpenGL学习l 顶点数组顶点数组typedef Glint vertex33;vertex3 pt8= 0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,1,1, 1,0,1, 1,1,1;void quad(Glint n1,Glint n2,Glint n3,Glint n4) glBegin(GL_QUADS); glVertex3iv(ptn1); glVertex3iv(ptn2); glVertex3iv(ptn3); glVertex3iv(ptn4); glEnd盒果柏施筹党卓烩概搜窜串李荚

32、拨吾踞卷赶甄动抵纺决黎立席屋扩懦韩埃第三章输出图元3.Output Primitives69 3.10 OpenGL学习l 复杂的场景描述需要使用几百或几千个坐标描述复杂的场景描述需要使用几百或几千个坐标描述.另外还另外还必须为各个对象建立各种属性和观察参数。必须为各个对象建立各种属性和观察参数。l 对象和场景的描述要使用大量的函数调用对象和场景的描述要使用大量的函数调用,这对对系统资这对对系统资源提出了要求并减慢了图形程序的执行。源提出了要求并减慢了图形程序的执行。l 为了简化这些问题为了简化这些问题,OpenGL提供了一种机制来减少函数调提供了一种机制来减少函数调用。用。 glEnable

33、Client(GL_VERTEX_ARRAY); glVertexPointer(3,GL_INT,0,pt); GLubyte vertIndex=(6,2,3,7,.); glDrawElements(GL_QUADS,24,GL_UNSIGNED_BYTE, vertIndex); glDisableClientState(GL_VERTEX_ARRAY);彩呀滋娩龙菌糜芝虑淳辱映珍阔昼楼但逆钮争轰骑响厄迪舔奏澜跑竟撑吴第三章输出图元3.Output Primitives70 3.10 OpenGL学习l 多边形多边形 l 像素阵列像素阵列l 字符图元字符图元l 显示列表显示列表l 显示

34、窗口重定形显示窗口重定形镁衙钡纳虏馋乏拉朴资辟踩檀铬肃殷煮疚朱仰谆快氏次苟逃澜鼠呵曙摆碗第三章输出图元3.Output Primitives71 3.10 OpenGL学习l 缓存都是离散的内存块,由其空间分辨率缓存都是离散的内存块,由其空间分辨率n*m和每个像和每个像素的位数(深度)素的位数(深度)k确定。确定。l 把缓冲区把缓冲区k个平面中的任一个称为位平面个平面中的任一个称为位平面 (bitplane), 空间中特定位置处的空间中特定位置处的k个元素构成一个像素个元素构成一个像素(pixel),因此一个像素既可以是一个字节,也可以是一个整数,因此一个像素既可以是一个字节,也可以是一个整数

35、, 甚至是一个浮点数,具体与所用的缓存以及信息的存甚至是一个浮点数,具体与所用的缓存以及信息的存放格式有关。放格式有关。急志索剁抬缅腹未冲仕挚罗肝拐叠悦期梦澎暇产欣轩漱墒图旨小私炒粟蠕第三章输出图元3.Output Primitives72 3.10 OpenGL学习 l 应用程序通过应用程序通过OpenGLOpenGL函数把信息传送到帧缓存,函数把信息传送到帧缓存,或者从帧缓存中获取信息。或者从帧缓存中获取信息。l l当应用程序读写像素时,数据不仅要在内存与当应用程序读写像素时,数据不仅要在内存与图形卡里的帧缓存之间传输,而且还要重新调整图形卡里的帧缓存之间传输,而且还要重新调整这些数据的格

36、式,使之与帧缓存匹配。这些数据的格式,使之与帧缓存匹配。上纲狼跃止淡殊驯慨抹壶迄踪涛构患瞪采刑氖巷单部详彩吭漳邹蘸汝松蹭第三章输出图元3.Output Primitives73 3.10 OpenGL学习l颜色缓存内容要被输出到显示设备上。颜色缓存内容要被输出到显示设备上。l在在双双缓缓存存中中,颜颜色色缓缓存存由由两两个个缓缓存存组组成成,分分别别用用于于读读与写,称为前缓存与后缓存。与写,称为前缓存与后缓存。l颜颜色色缓缓存存k确确定定可可以以表表示示的的颜颜色色的的多多少少,通通常常在在RGB模式中为模式中为24位,在位,在RGBA模式中为模式中为32位。位。l深深度度缓缓冲冲区区的的k

37、值值确确定定深深度度的的分分辨辨率率,通通常常是是32位位,这样与浮点数或整数的精度匹配。这样与浮点数或整数的精度匹配。嘴椎善绝权蝗闲舆养漓义鹃撩迷益土先泊皆掂惩振匙邮窥臻肮腋么泻皂掺第三章输出图元3.Output Primitives74 3.10 OpenGL学习l数字图像:有限数字图像:有限数字数字数值数值像素像素的表示。的表示。l合成图像:把几何对象和照相机组合在一起,通过某种合成图像:把几何对象和照相机组合在一起,通过某种投影过程所得到的结果。投影过程所得到的结果。l在程序中的图像是像素数组,其大小与类型各异,具在程序中的图像是像素数组,其大小与类型各异,具体与图像的类型有关。体与图

38、像的类型有关。 对对于于RGB图图像像,每每一一个个颜颜色色分分量量由由一一个个字字节节表表示示,则则可以定义为:可以定义为:GLubyte myimage5125123; 如果处理的是单色图像或者灰度图像,那么可以如果处理的是单色图像或者灰度图像,那么可以定义为定义为GLubyte myimage512512;晋赡吝技湘膛闲笋娄钓宵窖祁汰误魏郡默昭版赊坠盘慢您橡拾陈痊汹毡捧第三章输出图元3.Output Primitives75 3.10 OpenGL学习l创建图像的一种方法就是利用程序代码。创建图像的一种方法就是利用程序代码。创创建建512512由由88黑黑白白相相间间方方格格构构成成的的

39、图图像像,代代码如下:码如下: GLubyte check5125123; int i,j,k;for(i=0;i512;i+) for(j=0;j512;j+) for(k=0;k3;k+) checkijk=0; if(8*(i+j)/64)%64) checkij0=255; l从数据获取。从数据获取。l应用光学成像设备摄取。应用光学成像设备摄取。 炙卒子扎睬划爪砖炬褥厨欠寨捻唐纤穿缉免柞别瞎愈菊典钩奇肖溢酗搏恨第三章输出图元3.Output Primitives76 3.10 OpenGL学习l从从数数码码设设备备采采集集的的图图像像是是以以某某种种“标标准准”的的格格式式存存储储的的

40、,最常用格式有最常用格式有BMP、GIF、TIFF、PS、EPS以及以及JPEG。l以某种顺序存储数据,并进行必要的无损压缩或者有损以某种顺序存储数据,并进行必要的无损压缩或者有损压缩编码都是为了满足某类应用软件的需要而提出的。压缩编码都是为了满足某类应用软件的需要而提出的。完雷夫逻吻晰阀儿别吸酮突呕踞无正裙硕受苔娥痈恿嫩琼火膳扣铂宾年荧第三章输出图元3.Output Primitives77 3.10 OpenGL学习lBMP图像格式:图像格式:Windows采用的图形文件格式采用的图形文件格式 l位图文件头位图文件头 (bitmap-fileheader) BITMAPFILEHEADER

41、 bmfh l位图信息头位图信息头 (bitmap-information header) BITMAPINFOHEADER bmihl彩色表彩色表 (colortable) RGBQUAD aColorsl图象数据阵列字节图象数据阵列字节 BYTEaBitmapBits 瞄均亏黄点畜刮砍捂锄京降咬芬请颇珠潍自惯捧跳菩恐宛甸锁闻镰步丸辛第三章输出图元3.Output Primitives78 3.10 OpenGL学习l位图文件头包含有关于文件类型、文件大小、存放位图文件头包含有关于文件类型、文件大小、存放位置等信息,在位置等信息,在Windows3.0以上版本的位图文件中用以上版本的位图文件

42、中用BITMAPFILEHEADER结构来定义:结构来定义:typedefstructtagBITMAPFILEHEADER/*bmfh*/ UINTbfType; DWORDbfSize; UINTbfReserved1; UINTbfReserved2; DWORDbfOffBits; BITMAPFILEHEADER; 妒仗毯凡蒙了咳拭寿湘赎刷澳蓑镍蚤陈犀蛆姨竖焊木啊勉僧支嗣亡吕抢收第三章输出图元3.Output Primitives79 3.10 OpenGL学习l 位图信息头位图信息用位图信息头位图信息用BITMAPINFO结构来定义,它由结构来定义,它由位图信息头位图信息头(bit

43、map-informationheader)和彩色表和彩色表(colortable)组成,前者用组成,前者用BITMAPINFOHEADER结构定结构定义,后者用义,后者用RGBQUAD结构定义。结构定义。 BITMAPINFO结构具有如下形式:结构具有如下形式: typedefstructtagBITMAPINFO /*bmi*/ BITMAPINFOHEADERbmiHeader; RGBQUADbmiColors1; BITMAPINFO; 霓荆捎湘涂炽乃拟距宽婚悉是具靡揖讳婉铸均怎枯铸壹犁嘱竹烘铱径冬憾第三章输出图元3.Output Primitives80 3.10 OpenGL学习

44、l BITMAPINFOHEADER结构包含有位图文件的大小、压缩类型和结构包含有位图文件的大小、压缩类型和颜颜色色格格式式,其其结结构构定定义义为为: typedefstructtagBITMAPINFOHEADER/*bmih*/ DWORDbiSize; LONGbiWidth; LONGbiHeight; WORDbiPlanes; WORDbiBitCount; DWORDbiCompression; DWORDbiSizeImage; LONGbiXPelsPerMeter; LONGbiYPelsPerMeter; DWORDbiClrUsed; DWORDbiClrImport

45、ant; BITMAPINFOHEADER; 麻漓剔团际悠刊侧僻哄汽救窿踪犬响砂烦痞晴柏刃烛锯亨施乙氏馈藉诗伟第三章输出图元3.Output Primitives81 3.10 OpenGL学习l 图像格式与图像格式与OpenGL为了从某种格式中解析出像素数组,需要知道格式的为了从某种格式中解析出像素数组,需要知道格式的定义。定义。OpenGL中不包含任何解析已有图像格式的函数与功能。中不包含任何解析已有图像格式的函数与功能。在在OpenGL中的图像就是内存中存储的标准数据类型的中的图像就是内存中存储的标准数据类型的数组。数组。软滨昔揉芜畏道峻嚣数顿用汗逛盈喻黔失蕴泄粗留重匝李爆梁蘑赃上术腺第

46、三章输出图元3.Output Primitives82 3.10 OpenGL学习l在现代的计算机图形系统中,用户程序既可在现代的计算机图形系统中,用户程序既可以向缓存中写入数据,也可以从中读取数据。以向缓存中写入数据,也可以从中读取数据。l对缓存的读写通常是一个矩形的像素块对缓存的读写通常是一个矩形的像素块(位块,位块,bit blocks)。橡伞嘶尘灯幼丁类句鸡撮镁绍蹈丫瘸橡传挣熏湾抓亏姻蝴跌清芒究茎殿蔑第三章输出图元3.Output Primitives83 3.10 OpenGL学习l在填充多边形时每次光栅化一条扫描线。在填充多边形时每次光栅化一条扫描线。l当显示光栅字符时写一小块位。

47、当显示光栅字符时写一小块位。l当进行清除操作时,改变缓存中所有像素的值。当进行清除操作时,改变缓存中所有像素的值。l需要在硬件和软件方面提供对位块进行尽可能需要在硬件和软件方面提供对位块进行尽可能有效操作的功能称为位块传送操作,也称为光有效操作的功能称为位块传送操作,也称为光栅化操作。栅化操作。相薪约退映寄仙浙戏最多去京哇抨左巩轰丛包灌迸阔根窟乎眼尸茬枕奴斋第三章输出图元3.Output Primitives84 3.10 OpenGL学习l 要把源缓存中的一块要把源缓存中的一块nm像素复制到目标缓存中,像素复制到目标缓存中,那么进行这种操作的位块传送函数应当具有形式。那么进行这种操作的位块传

48、送函数应当具有形式。 write_block(source,n,m,x,y,destination,u,v);l 本函数调用改变了整个目标块。本函数调用改变了整个目标块。l 针对位块传送操作优化的硬件具有与几何操作的针对位块传送操作优化的硬件具有与几何操作的流水线硬件完全不同的框架。流水线硬件完全不同的框架。钙递反嵌梗上傻筛异蛤末驰铆擅瘸垃硒发自尾偿熟庄灭粹甄应谦谎顶频趣第三章输出图元3.Output Primitives85 3.10 OpenGL学习l写入操作的模型和读写内存不同,位块传送操作有写入操作的模型和读写内存不同,位块传送操作有多种写入方式,在写入源像素前可读出目标缓存中多种写入

49、方式,在写入源像素前可读出目标缓存中的像素。的像素。l像素逻辑运算像素逻辑运算 源像素源像素: s 目标像素目标像素: d写入的目标像素写入的目标像素: dd = f(s, d)其中其中s = 0 或或1, d = 0 or 1妊外壁杭堡咸兰煽伸乎亨光涧烫龄闰淋吠离行凛甜涵恕宇胯咒硒亥钧禹揖第三章输出图元3.Output Primitives86 3.10 OpenGL学习l 源像素与目标像素逐位结合在一起,有源像素与目标像素逐位结合在一起,有1616种种可选的函数可选的函数( (表格中的每列为一种表格中的每列为一种) )。叼颜支澄旭岁瘁裸豢喂菏啃荔介吱闻蹿称记哉勃灸谴铝叶跑媳逾吕订涂逆第三章

50、输出图元3.Output Primitives87 3.10 OpenGL学习l定义矩形的形状或图案,可以使用位图和像素图。定义矩形的形状或图案,可以使用位图和像素图。l像素图:像素图:一个彩色像素阵列一个彩色像素阵列l像素阵列的参数包括指向颜色矩阵的指针、矩阵的大小及像素阵列的参数包括指向颜色矩阵的指针、矩阵的大小及其将要影响的屏幕区域。其将要影响的屏幕区域。l实现像素阵列的另一种方法是为矩阵中的每一个元素赋值实现像素阵列的另一种方法是为矩阵中的每一个元素赋值为为0或或1。此时,阵列简化成位图,有时也称为掩膜,它指出。此时,阵列简化成位图,有时也称为掩膜,它指出一个像素是否被赋予预定颜色。一

51、个像素是否被赋予预定颜色。 厉彪嘲择足论制莱夸琴简鱼液改琉熔纹亮歹凿杂蔚汞煮砂潜构滓翱疹忠怜第三章输出图元3.Output Primitives88 3.10 OpenGL学习l OpenGL维持了一个当前光栅位置,它是状态的一部分,维持了一个当前光栅位置,它是状态的一部分,可看作在屏幕坐标系中定义的内部光标,指示光栅化像可看作在屏幕坐标系中定义的内部光标,指示光栅化像素写入的位置。素写入的位置。l 当前光栅位置由当前光栅位置由glRasterPos*()设置。设置。 例例 glRasterPos3f(x,y,z); 三个浮点数定义了一个光栅位置,在变换为屏幕坐标三个浮点数定义了一个光栅位置,

52、在变换为屏幕坐标前要经过模型前要经过模型-视图变换和投影变换。视图变换和投影变换。抽枉看佛睡欧毫灰朔笑蓑宝或阜恭梅嘿吹苛涛嗽藩歪锰泅棋障露歪扔做熔第三章输出图元3.Output Primitives89 3.10 OpenGL学习l绘制位图绘制位图 glBitmap(width, height, x0, y0, xi, yi, bitmap) width和和height的单位是位,表示的单位是位,表示bitmap 的行数和的行数和列数。列数。lx0, y0是相对于当前光栅位置的偏移值,给出了位是相对于当前光栅位置的偏移值,给出了位图左下角的起始绘制位置。图左下角的起始绘制位置。lxi, yi表

53、示位图绘制后当前光栅的移动值。表示位图绘制后当前光栅的移动值。 示诌恭德爬警锁稼挎煽蔫婚刁冕瘫面罩辽填褂未纲稻祈竣陡技傣俺怕翘闪第三章输出图元3.Output Primitives90l例子:棋盘例子:棋盘 GLubyte wb2 = 0x00, 0xff; GLubyte check512; int i, j; for(i=0; i64; i+) for (j=0; j帧缓存帧缓存 glDrawPixels(width,height,format,type,myimage);l从当前光栅位置开始写入像素格式与类型从当前光栅位置开始写入像素格式与类型。 格式格式format描述图像在处理器内存

54、中的存储格式。描述图像在处理器内存中的存储格式。 图像格式:图像格式:RGB, RGBA, 颜色索引颜色索引 类型类型type是在应用程序中所采用的数据类型是在应用程序中所采用的数据类型:int, float例如:例如:GLubytemyimage5125123;glDrawPixels(512,512,GL_RGB, GL_UNSIGNED_BYTE, myimage);东焚虾始樟竣卯押卸糟黑拦贤戏讨伤将躲桅改嗡节造恼骂克缩抡眺薪蒙敲第三章输出图元3.Output Primitives93 3.10 OpenGL学习l帧缓存帧缓存-处理器内存处理器内存 lglReadPixels(x,y,w

55、idth,height,format,type, myimage) x,y:帧缓存中的开始像素位置:帧缓存中的开始像素位置 width,height:大小:大小 format:图像格式:图像格式 type:像素类型:像素类型 myimage:指向处理器内存的指针:指向处理器内存的指针 GLubyte myimage5125123; glReadPixels(0,0, 512, 512, GL_RGB, GL_UNSIGNED_BYTE, myimage);贴逝赚蔫坝枕红峻侄误繁嗡授梆忽永尹欲但橇架涟州货祁胶抒吩返兔掂墨第三章输出图元3.Output Primitives94 3.10 Open

56、GL学习l帧缓存帧缓存-帧缓存帧缓存 l将将一一块块像像素素数数据据从从OpenGL缓缓存存的的一一个个位位置置复复制制到到另另一一个位置。个位置。lglCopyPixels(xmin,ymin,width,height,pixelValue) xmin,ymin:块的左下角屏幕坐标位置:块的左下角屏幕坐标位置 width,height:要复制的列数和行数:要复制的列数和行数 pixelValue:要要复复制制的的数数据据种种类类,可可以以取取GL_COLOR、GL_DEPTH和和GL_STENCIL。lglCopyPixels (0,0, 100, 100, GL_COLOR);序曙宏械枢韭

57、毕墙罚刽吐胯柑趁吻彬凳巢框昌唾酸栅铲砚但即滤悯入怂鹿第三章输出图元3.Output Primitives95 3.10 OpenGL学习l 多边形多边形 l 像素阵列像素阵列l 字符图元字符图元l 显示列表显示列表l 显示窗口重定形显示窗口重定形寿旨耘荫扇圃拓谩吉簧勤石狭霄看篙纯拿恕装滞雀递胸湾并卡扭侦闹塞蒙第三章输出图元3.Output Primitives96 3.10 OpenGL学习l glutBitmapCharacter(font,character)l 显示字符串显示字符串glRasterPosition2i(x,y)for(k=0;k36;k+)glutBitmapCharac

58、ter(GLUT_BITMAP_9_BY_15, textk);l 显示轮廓字符显示轮廓字符glutStrokeCharacter(font,character)鳖律受爹胚蝗惮督硅阀笨恬七举摔凿岳肘拜坷醋粳滨篆此沃豢豌蒂印阂合第三章输出图元3.Output Primitives97 3.10 OpenGL学习l 多边形多边形 l 像素阵列像素阵列l 字符图元字符图元l 显示列表显示列表l 显示窗口重定形显示窗口重定形给燎倡季但陋灼爱懦遁冻攻咸留们掐妆贝钙嫩犁踊壬毙厦鼻巷虎伺熔嗜袖第三章输出图元3.Output Primitives98 3.10 OpenGL学习l 将对象描述成一个命名的语句序

59、列并存储起来将对象描述成一个命名的语句序列并存储起来,称为称为显示列表。显示列表。l使用使用glNewList/glEndList函数包围一组函数包围一组OpenGL命令命令就可形成显示列表。就可形成显示列表。 glNewList(listID,listMode) . . . glEndList();l让让OpenGL生成一个标志生成一个标志 listID=glGenLists(1);l查询查询 glIsList(listID);l删除删除 glDeleteLists(startID,nLists); 沃庙锻回掘仗肿休朔玫毫霖枪魄闻藏简疚辣宗侗溉竞驮隙剑饱盖钓铬泽妖第三章输出图元3.Outpu

60、t Primitives99 3.10 OpenGL学习l 例:例:regHex=glGenLists(1);glNewList(regHex,GL_COMPILE); glBegin(GL_POLYGON); for(k=0;k6;k+) theta=TWO_PI*k/6.0; x=200+150*cos(theta); y=200+150*sin(theta); glEnd();glEndList();glCallList(regHex);磐挫快债擞骨稽撩砾喘刊腐裕蓬象筑詹铜挤待留谈闰蹄展告坚狡蝴勇邯卷第三章输出图元3.Output Primitives100 3.10 OpenGL学习l

61、例:字体的存储例:字体的存储 光栅字体的显示速度比矢量字体快很多。光栅字体的显示速度比矢量字体快很多。l假设要定义假设要定义8x13字体中的字体中的128个字符,可以如下应用数组个字符,可以如下应用数组 GLubyte my_font12813;l可以应用显示列表定义字体可以应用显示列表定义字体 base=glGenLists(128); for(i=0;i128;i+) glNewList(base+i, GL_COMPILE); glBitMap(8,13,0.0,2.0,10.0,0.0,my_fonti); glEndList();l注意:每个字符从当前光栅位置上移注意:每个字符从当前

62、光栅位置上移2位开始,当字符绘位开始,当字符绘制后,向右平移制后,向右平移2位,这样字符间有位,这样字符间有2位的水平和竖直间距。位的水平和竖直间距。享陈竿圃托蠕另价啄译青哭倔健略嚏操埔虚筒炼审播探沃新炯开潦翱嫡巢第三章输出图元3.Output Primitives101 3.10 OpenGL学习l 多边形多边形 l 像素阵列像素阵列l 字符图元字符图元l 显示列表显示列表l 显示窗口重定形显示窗口重定形下旦缚剐猴博耽缚模扔菠藕墅鞠蜘图降娶催教钻未赚韩缩矿杭澡畜凉昼瓢第三章输出图元3.Output Primitives102 3.10 OpenGL学习l 窗口重定形函数窗口重定形函数 glu

63、tReshapeFunc(winReshapeFcn)嵌毛菇脖蝎讼龙扭柬友说烁依伊介汤碰誓控螺福源纂志礼彼葛得哦乎零靴第三章输出图元3.Output Primitives103 3.10 OpenGL学习#include #include #include const double TWO_PI = 6.2831853; /* Initial display-window size. */ GLsizei winWidth = 400, winHeight = 400; GLuint regHex; class screenPt public: GLint x, y; ; 棵忠话慑蕉嫁煌骸吭韵

64、凸瘁渭寻街赶夫雄由备妇逮耐钵止鹏侠籍夯牺轿筷第三章输出图元3.Output Primitives104 3.10 OpenGL学习static void init (void) screenPt hexVertex, circCtr; GLdouble theta; GLint k; /* Set circle center coordinates. */ circCtr.x = winWidth / 2; circCtr.y = winHeight / 2; glClearColor (1.0, 1.0, 1.0, 0.0);/ Display-window color = white. /

65、* Set up a display list for a red regular hexagon. * Vertices for the hexagon are six equally spaced * points around the circumference of a circle. */ 辰宋铅吏莱钒尝粘例枣努萨团拯鬼墟芹缓披挽休缸咒人利疏篱伏绥未瞪少第三章输出图元3.Output Primitives105 3.10 OpenGL学习例子例子regHex = glGenLists (1); / Get an identifier for the display list. glN

66、ewList (regHex, GL_COMPILE); glColor3f (1.0, 0.0, 0.0); / Set fill color for hexagon to red. glBegin (GL_POLYGON); for (k = 0; k 6; k+) theta = TWO_PI * k / 6.0; hexVertex.x = circCtr.x + 150 * cos (theta); hexVertex.y = circCtr.y + 150 * sin (theta); glVertex2i (hexVertex.x, hexVertex.y); glEnd ( )

67、;glEndList ( ); void regHexagon (void) glClear (GL_COLOR_BUFFER_BIT); glCallList (regHex); glFlush ( ); 克撬娃侍公增裕帧挝苹单巾两情赣逝鬃费蛋替即慕鸦策乡凛颐吕磋吧臭恒第三章输出图元3.Output Primitives106 3.10 OpenGL学习void winReshapeFcn (int newWidth, int newHeight) glMatrixMode (GL_PROJECTION); glLoadIdentity ( ); gluOrtho2D (0.0, (GLdo

68、uble) newWidth, 0.0, (GLdouble) newHeight); glClear (GL_COLOR_BUFFER_BIT); void main (int argc, char* argv) glutInit (&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowPosition (100, 100); glutInitWindowSize (winWidth, winHeight); glutCreateWindow (Reshape-Function & Display-

69、List Example); init ( ); glutDisplayFunc (regHexagon); glutReshapeFunc (winReshapeFcn); glutMainLoop ( ); 劣约咽亿晤佐牛织棍咨矗嫩恶磕祷是猪医娟崖宇鹰恳歇向钒造惹盎迭毕挛第三章输出图元3.Output Primitives107 3.10 OpenGL学习吨奏哆纤驰坪低管苯呛承卯杆花神寂酒禹农宅虫辰估涸毕真映垒筹免库卸第三章输出图元3.Output Primitives108第三章 输出图元v3.1 画线算法画线算法 v3.2 帧缓冲器的装载帧缓冲器的装载v3.3 圆、椭圆和圆弧的生成圆、椭圆和圆弧的生成v3.4 其它曲线其它曲线v3.5 并行画线算法并行画线算法v3.6 像素编址和对象的几何要素像素编址和对象的几何要素v3.7 保留显示物体的几何特性保留显示物体的几何特性v3.8 填充区图元填充区图元v3.9 多边形填充区多边形填充区v3.10 OpenGL学习学习桨倚包仔诊认剃关着坪椭昼暇芝淫趁勘就碾各绞辞偶状胺狂憾涕斧蹄谤恕第三章输出图元3.Output Primitives109计算机图形学郡瑚鸣质彤枷磺蓉世绞般火痕熙兜个炙桃啸艾蔬妓烹遇绵渝温锑腿黍乏恍第三章输出图元3.Output Primitives110

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号