版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、OpenGL高级课题与纹理映射技术耿卫东 陈为1本次课程的主要内容OpenGL高级课题显示列表和顶点数组Alpha混合和反走样雾化反馈和选择象素测试与操作累积和模板缓冲器纹理映射OGRE中的纹理映射2OpenGL 架构显示列表求值器顶点操作光栅化逐个象素操作帧缓冲纹理CPU后象素处理顶点变换与光照计算纹理映射帧缓冲区操作像素级光照计算OpenGL其他高级课题3关于帧缓冲区(frame buffer)混合深度测试抖动逻辑操作裁剪测试模板测试Alpha测试象素帧缓冲区4Alpha: 第四维颜色分量透明度的度量模拟透明物体玻璃、水等合成图像反走样混合状态下有效 glEnable( GL_BLEND
2、);5Alpha测试基于alpha值选择象素glAlphaFunc( func, value )glEnable( GL_ALPHA_TEST );在纹理映射时用alpha值作为蒙板6混合结合输出与帧缓冲器中原有的象素值glBlendFunc( src, dst )帧缓冲器象素(dst)混合方程象素(src)混合后的象素7裁剪包围盒其他的裁剪测试glScissor( x, y, w, h )包围盒外的象素被裁剪掉便于更新视域的一小块区域影响glClear()操作8模板缓冲区(stencil buffer)用模板缓冲区的值控制绘制无法通过模板测试的象素将不被绘制例子:在模板缓冲区中创建一个蒙板,
3、并仅绘制那些不在蒙板区域内的物体9控制模板缓冲区glStencilFunc( func, ref, mask )用func比较缓冲区的值与 ref只对那些mask值为1的象素进行操作func 是一个标准比较函数glStencilOp( fail(模板失败), zfail(模板通过,z失败), zpass(两者都通过) )基于模板测试和深度测试的结果相应调整模板缓冲区的值: GL_KEEP, GL_INCR10创建模板glInitDisplayMode( |GLUT_STENCIL| );glEnable( GL_STENCIL_TEST );glClearStencil( 0 x0 );glS
4、tencilFunc( GL_ALWAYS, 0 x1, 0 x1 );glStencilOp( GL_REPLACE, GL_REPLACE, GL_REPLACE );绘制蒙板11使用模板当stencil = 1绘制物体glStencilFunc( GL_EQUAL, 0 x1, 0 x1 )当stencil != 1绘制glStencilFunc( GL_NOTEQUAL, 0 x1, 0 x1 );glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP ); 12抖动glEnable( GL_DITHER );抖动用于加强视觉效果用于模拟更多颜色打印设置目前,该功
5、能很少被用到13象素上的逻辑操作使用位逻辑操作结合多个象素值glLogicOp( mode );命令模式GL_XORGL_AND目前,该功能很少被用到14累积缓冲器颜色缓冲器合成的问题有限颜色分辨率截断精度损失累积缓冲区扮演着“浮点”颜色缓冲区的角色合成到积累缓冲区将结果转换到帧缓冲区15累积缓冲区存取glAccum( op, value )操作在积累缓冲区中的操作: GL_ADD, GL_MULT读缓冲区操作: GL_ACCUM, GL_LOAD写缓冲区操作: GL_RETURNglAccum(GL_ACCUM, 0.5)将写缓冲区的每一个值乘以0.5,然后加到累积缓冲区中16累积缓冲区的应
6、用颜色合成:透明全屏反走样:A-buffer算法景深:Depth Cue滤波:运动模糊: Motion blur17反走样(Anti-aliasing)消除锯齿状glEnable( mode )GL_POINT_SMOOTHGL_LINE_SMOOTHGL_POLYGON_SMOOTH象素的Alpha值由象素被覆盖大小决定可以是RGBA或颜色索引模式18全屏反走样: 视点抖动当我们略微移动视点时,图像随之平移每一幅图像有不同的走样情况用积累缓冲区对图像作平均,将消除这些走样19景深沿平行焦平面的方向移动视点前平面后平面焦平面眼睛位置1眼睛位置220景深21雾化glFogif( property
7、, value )景深效果处理指定线性雾化渐变区域大小GL_FOG_LINEAR环境效果模拟真实雾化效果GL_FOG_EXPGL_FOG_EXP222雾化23高级成像成像子集只有当GL_ARB_imaging有定义时才有效颜色矩阵卷积颜色表直方图MinMax高级混合24立即模式、显示列表和保留模式立即模式(immediate mode)图元直接发送到绘制流水线并显示不需要显卡内存显示列表(display list)图元保存在显示列表中、显示列表保存在显卡中保留模式(retained mode)所有数据预先置入显存25立即模式与显示列表立即模式列出显示显示列表多项式求值器顶点操作和图元组装光栅化
8、象素操作纹理内存CPU象素操作帧缓冲26显示列表创建显示列表GLuint id;void init( void ) id = glGenLists( 1 ); glNewList( id, GL_COMPILE ); /* other OpenGL routines */ glEndList();调用显示列表void display( void ) glCallList( id );27显示列表不是所有的OpenGL程序都能存储在显示列表当中显示列表创建后,状态仍然能够被改变显示列表可以嵌套调用显示列表一旦创建,不能进行编辑令列表(A) 调用其他列表(B, C, 或D)删除A并按照要求调用B,
9、 C或D28显示列表层次考虑一个汽车模型创建底盘显示列表创建轮胎显示列表glNewList( CAR, GL_COMPILE );glCallList( CHASSIS );glTranslatef( );glCallList( WHEEL );glTranslatef( );glCallList( WHEEL );glEndList();29保留模式将顶点、颜色数组一次性送至显存处理glVertexPointer( 3, GL_FLOAT, 0, coords )glColorPointer( 4, GL_FLOAT, 0, colors )glEnableClientState( GL_V
10、ERTEX_ARRAY )glEnableClientState( GL_COLOR_ARRAY )glDrawArrays( GL_TRIANGLE_STRIP, 0, numVerts );所有有效数组被用于绘制ColordataVertexdata30保留模式的优点比直接绘制模式效率更高显示列表可以在多个OpenGL操作描述表之间共享,降低内存要求顶点数组便于内存访问的方式组织数据D3D和最近的OpenGL支持保留模式31高级图元Bernstein 多项式求值器GLU NURBS(Non-Uniform Rational B-Splines,非均匀有理B样条)的基础GLU二次曲面物体球面
11、圆柱(或圆锥)圆盘(或圆)32反馈模式(很少用)未绘制的光栅化后的顶点数据返回应用程序确定哪些图元最终被绘制到屏幕上需要指定反馈缓冲区glFeedbackBuffer( size, type, buffer )选择绘制反馈模式glRenderMode( GL_FEEDBACK );33选择模式(很少用)决定哪些图元在视域当中需要一个缓冲区放置返回结果glSelectBuffer( size, buffer )选择绘制的选择模式glRenderMode( GL_SELECT )34选择模式(续)用名字区别各个图元“名字”用整数而非字符串表示名字建立在堆上允许层次化图元名字选择程序glLoadNa
12、me( name )glPushName( name )glInitNames()35拾取拾取是选择的特殊情况编程步骤限制鼠标周围的一小块区域为当前绘制区域在投影矩阵上使用gluPickMatrix()进入选择模式; 重绘屏幕被视见体裁剪的每个图元引起一个选择命中 退出选择模式; 分析命中记录36纹理映射(texture mapping)纹理映射的基本原理凹凸纹理映射(bump mapping)位移映射(displacement mapping)环境纹理映射(environment mapping)基于光照映射的快速绘制(light mapping)高级纹理映射技术总结37纹理映射将一个一维、
13、二维、三维的图像映射到几何物体上的过程纹理映射的用途仿真自然界的材质减少几何复杂度图像warping反射效果模拟。38Texture Mappingstxyz图像:即纹理几何屏幕39纹理映射与 图形绘制流程图像和几何在不同的管道中处理,最后在光栅处理器中融合。复杂的纹理不影响几何的复杂性。几何管道顶点象素管道图像光栅处理器40纹理256 x 256的图像映射到 一个长方形,并进行透视投影。41纹理映射 I三步设置纹理读入或者生成图像将图像赋到某个纹理上打开纹理映射功能将纹理坐标赋到顶点上设置纹理参数Wrapping(重复pattern的方式), filtering(纹理采样的滤波方式):42纹
14、理对象类似于纹理图像序列的显示列表(可加快速度)每个纹理对象对应一个图像可以由多个图形上下文共享生成纹理名字glGenTextures( n, *texIds );绑定纹理图像(id为纹理对象名字)glBindTexture( target, id );43设置纹理图像从CPU内存的一块图像定义一个纹理对象glTexImage2D( target, level, components, w, h, border, format, type, *texels );图像的尺寸是 2的幂次纹理颜色由象素处理管道处理44纹理图像的转换如果图像的维数不是2的幂次gluScaleImage( format
15、, w_in, h_in, type_in, *data_in, w_out, h_out, type_out, *data_out );*_in 源图像*_out 目标图像Format:图像格式(GL_RGB)Type:图像数据格式在缩放过程中进行插值和滤波45设定纹理的其他方法将帧缓冲器的内容设定为纹理图像的来源glCopyTexImage1D(.)glCopyTexImage2D(.)设置某个纹理的一部分glTexSubImage1D(.)glTexSubImage2D(.)glTexSubImage3D(.)拷贝部分纹理 glCopyTexSubImage2D(.)46纹理映射基于参数
16、化的纹理坐标glTexCoord*() 指定每个顶点处的纹理st1, 10, 10, 01, 0(s, t) = (0.2, 0.8)(0.4, 0.2)(0.8, 0.4)ABCabc纹理空间物体空间47生成纹理坐标纹理映射区域通常是平面或曲面,计算任意空间曲面与纹理域的对应关系本质上是一个参数化的过程 避免出现扭曲、变形的效果 最好是保角映射或保面积映射平面方程数学曲面物体表面属性 过程式纹理函数生成48OpenGL中生成纹理坐标自动生成纹理坐标glTexGenifdv()指定一个平面基于到平面的距离生成纹理坐标生成模式GL_OBJECT_LINEARGL_EYE_LINEAR GL_SP
17、HERE_MAP49过程式纹理坐标生成50纹理映射演示51纹理映射参数纹理滤波模式缩小或放大时的滤波方式mipmap 缩小滤波纹理取址方式Clamping(边界颜色) repeating(重复)纹理融合函数如何混合纹理的颜色与物体表面计算的颜色:融合,modulate 或者替换52滤波模式纹理多边形放大时缩小多边形纹理例如:glTexParameteri( target, type, mode );53Mipmapped 纹理Mipmap 允许对一个纹理进行预处理,生成小尺寸纹理对于小的物体,能减少插值错误,加快绘制速度Mipmap由OpenGL自动生成可以在定义纹理的时候声明mipmap层次
18、glTexImage*D( GL_TEXTURE_*D, level, )GLU mipmap 生成函数gluBuild*DMipmaps( )OpenGL 1.2 引入了高级的 LOD(层次细节) 控制54点采样、双向滤波、三线性滤波、各向异性滤波纹理插值模式55纹理取址方式函数使用例子:glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP )glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT )56(上左)重复;(上右)镜像;(下左)截断;(下右)重复边界颜色 57纹理融合函数控制纹理是如何映射到物体上glTexEnvfiv( GL_TEXTURE_ENV, prop, param ) GL_TEXTURE_ENV_MODE 模式:GL_MODULATEGL_BLENDGL_DECAL(G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加工承揽合同范例样
- 培训招标合同模板
- 合照礼服租赁合同范例
- 2024年学生行为管理与家庭教育合同
- 2024年城市道路建设承包合同
- 临沂大学《抽样技术》2021-2022学年第一学期期末试卷
- 【机电实务】达为 教材精讲班教案 100-第14章-14.1、14.2-人力资源管理、工程设备管理
- 2024年工程招投标及合同风险控制
- 聊城大学东昌学院《三字一话》2021-2022学年第一学期期末试卷
- 聊城大学东昌学院《JAVA高级》2022-2023学年期末试卷
- 2023年国家公务员考试申论试题(行政执法卷)及参考答案
- 药学职业生涯人物访谈报告(6篇)
- QGDW11957.2-2020国家电网有限公司电力建设安全工作规程 第2部分:线路
- 南京玄武区某校2023-2024三年级上册语文期中试卷及答案
- 中国抗日战争史智慧树知到课后章节答案2023年下浙江大学
- 渤海小吏讲中国史:秦并天下
- 轨道工程(第三版) 课件 高亮第6章 道岔
- 机动车检测站事故隐患排查治理体系作业指导书
- 《大自然的色彩》教学课件
- 湖南省衡阳市雁峰区成章实验学校2022-2023学年九年级上学期期中物理试卷
- 治安管理处罚法共ppt
评论
0/150
提交评论