OpenGL图形编程7消隐(陈永强).ppt
1,OpenGL图形编程,武汉纺织大学数学与计算机学院,授课教师:陈永强 教授,2,7.OpenGL消隐,多边形剔除主要用于去除多边形物体本身的不可见面,以提高图形系统的性能。glEnable(GL_CULL_FACE);glCullFace(mode);参数mode可取值为GL_FRONT、GL_BACK或GL_FRONT_AND_BACK,分别表示剔除多边形的前面、后面或前后面。,7.OpenGL消隐,多边形剔除教材【程序9-1】,4,7.OpenGL消隐,深度测试采用深度缓存器算法,消除场景中的不可见面。深度值设置 默认情况下,深度值的范围在0.01.0。可用以下函数修改 glDepthRange(nearNormDepth,farNormalDepth);将深度值设置在nearNormDepth到farNormalDepth之间。nearNormDepth和farNormalDepth可取0.01.0的任意值。,7.OpenGL消隐,深度测试初始化glClearDepth(maxDepth);glClear(GL_DEPTH_BUFFER_BIT);参数maxDepth取值在0.01.0之间。,7.OpenGL消隐,深度测试启用与关闭 glEnable(GL_DEPTH_TEST);glDisable(GL_DEPTH_TEST);,7.OpenGL消隐,深度测试测试方式改变默认情况下,将需要绘制的新像素的z值与深度缓冲区中对应位置的z值相比较,如果比深度缓存中的值小,用新像素的颜色值更新帧缓存中对应的颜色值。但这种方式也可以改变。glDepthFunc(func);参数func的值可为GL_NEVER、GL_ALWAYS、GL_LESS、GL_LEQUAL、GL_EQUAL、GL_GEQUAL、GL_GREATER、GL_NOTEQUAL,默认值为GL_LESS。,7.OpenGL消隐,深度测试教材【程序9-2】,