OpenGL高级课题与纹理映射技术教程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《OpenGL高级课题与纹理映射技术教程课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenGL 高级 课题 纹理 映射 技术 教程 课件
- 资源描述:
-
1、显示列表显示列表求值器求值器顶点操作顶点操作光栅化光栅化逐个象素操作逐个象素操作帧缓冲帧缓冲纹理纹理CPU后象素处理后象素处理顶点变换与光照计算纹理映射帧缓冲区操作像素级光照计算OpenGL其他高级课题混合深度测试抖动逻辑操作裁剪测试模板测试Alpha测试象素帧缓冲区透明度的度量 模拟透明物体 玻璃、水等 合成图像 反走样 混合状态下有效 glEnable( GL_BLEND );基于alpha值选择象素 glAlphaFunc( func, value ) glEnable( GL_ALPHA_TEST );在纹理映射时用alpha值作为蒙板结合输出与帧缓冲器中原有的象素值glBlendFu
2、nc( src, dst )混合方程pfrCdstCsrcC其他的裁剪测试 glScissor( x, y, w, h )包围盒外的象素被裁剪掉便于更新视域的一小块区域 影响glClear()操作用模板缓冲区的值控制绘制 无法通过模板测试的象素将不被绘制 例子:在模板缓冲区中创建一个蒙板,并仅绘制那些不在蒙板区域内的物体glStencilFunc( func, ref, mask ) 用func比较缓冲区的值与 ref 只对那些mask值为1的象素进行操作 func 是一个标准比较函数glStencilOp( fail(模板失败), zfail(模板通过,z失败), zpass(两者都通过)
3、) 基于模板测试和深度测试的结果相应调整模板缓冲区的值: GL_KEEP, GL_INCRglInitDisplayMode( |GLUT_STENCIL| );glEnable( GL_STENCIL_TEST );glClearStencil( 0 x0 );glStencilFunc( GL_ALWAYS, 0 x1, 0 x1 );glStencilOp( GL_REPLACE, GL_REPLACE, GL_REPLACE );绘制蒙板当stencil = 1绘制物体glStencilFunc( GL_EQUAL, 0 x1, 0 x1 )当stencil != 1绘制 glSten
4、cilFunc( GL_NOTEQUAL, 0 x1, 0 x1 ); glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP ); glEnable( GL_DITHER );抖动用于加强视觉效果 用于模拟更多颜色打印设置目前,该功能很少被用到使用位逻辑操作结合多个象素值 glLogicOp( mode );命令模式 GL_XOR GL_AND目前,该功能很少被用到目前,该功能很少被用到颜色缓冲器合成的问题 有限颜色分辨率 截断 精度损失 累积缓冲区扮演着“浮点”颜色缓冲区的角色 合成到积累缓冲区 将结果转换到帧缓冲区glAccum( op, value ) 操作 在积
5、累缓冲区中的操作: GL_ADD, GL_MULT 读缓冲区操作: GL_ACCUM, GL_LOAD 写缓冲区操作: GL_RETURN glAccum(GL_ACCUM, 0.5)将写缓冲区的每一个值乘以0.5,然后加到累积缓冲区中颜色合成:透明全屏反走样:A-buffer算法景深:Depth Cue滤波:运动模糊: Motion blur消除锯齿状glEnable( mode ) GL_POINT_SMOOTH GL_LINE_SMOOTH GL_POLYGON_SMOOTH 象素的Alpha值由象素被覆盖大小决定 可以是RGBA或颜色索引模式当我们略微移动视点时,图像随之平移 每一幅图
6、像有不同的走样情况 用积累缓冲区对图像作平均,将消除这些走样沿平行焦平面的方向移动视点前平面后平面焦平面眼睛位置1眼睛位置2景深景深glFogif( property, value )景深效果处理 指定线性雾化渐变区域大小 GL_FOG_LINEAR环境效果 模拟真实雾化效果 GL_FOG_EXP GL_FOG_EXP2成像子集 只有当GL_ARB_imaging有定义时才有效 颜色矩阵 卷积 颜色表 直方图 MinMax 高级混合立即模式(immediate mode) 图元直接发送到绘制流水线并显示 不需要显卡内存显示列表(display list) 图元保存在显示列表中、显示列表保存在显
7、卡中保留模式(retained mode) 所有数据预先置入显存立即模式列出显示显示显示列表列表多项式多项式求值器求值器顶点操作顶点操作和和图元组装图元组装光栅化光栅化象素象素操作操作纹理纹理内存内存CPU象素象素操作操作帧帧缓冲缓冲创建显示列表GLuint id;void init( void ) id = glGenLists( 1 ); glNewList( id, GL_COMPILE ); /* other OpenGL routines */ glEndList();调用显示列表void display( void ) glCallList( id );不是所有的OpenGL程序都
8、能存储在显示列表当中显示列表创建后,状态仍然能够被改变显示列表可以嵌套调用显示列表一旦创建,不能进行编辑 令列表(A) 调用其他列表(B, C, 或D) 删除A并按照要求调用B, C或D考虑一个汽车模型 创建底盘显示列表 创建轮胎显示列表glNewList( CAR, GL_COMPILE );glCallList( CHASSIS );glTranslatef( );glCallList( WHEEL );glTranslatef( );glCallList( WHEEL );glEndList();将顶点、颜色数组一次性送至显存处理glVertexPointer( 3, GL_FLOAT,
9、 0, coords )glColorPointer( 4, GL_FLOAT, 0, colors )glEnableClientState( GL_VERTEX_ARRAY )glEnableClientState( GL_COLOR_ARRAY )glDrawArrays( GL_TRIANGLE_STRIP, 0, numVerts );所有有效数组被用于绘制ColordataVertexdata比直接绘制模式效率更高显示列表可以在多个OpenGL操作描述表之间共享,降低内存要求顶点数组便于内存访问的方式组织数据D3D和最近的OpenGL支持保留模式Bernstein 多项式求值器 G
展开阅读全文