镂空多边形-高等数学习题全解指南

时间:2021-06-11 17:28:39
【文件属性】:
文件名称:镂空多边形-高等数学习题全解指南
文件大小:832KB
文件格式:PDF
更新时间:2021-06-11 17:28:39
OpenGL入门 (3)剔除多边形表面 在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边形虽然是正面 的,但被其他多边形所遮挡。如果将无法看见的多边形和可见的多边形同等对待,无疑会降低我们处理图 形的效率。在这种时候,可以将不必要的面剔除。 首先,使用 glEnable(GL_CULL_FACE);来启动剔除功能(使用 glDisable(GL_CULL_FACE)可以关闭之) 然后,使用 glCullFace 来进行剔除。 glCullFace 的参数可以是 GL_FRONT,GL_BACK 或者 GL_FRONT_AND_BACK,分别表示剔除正面、剔 除反面、剔除正反两面的多边形。 注意:剔除功能只影响多边形,而对点和直线无影响。例如,使用 glCullFace(GL_FRONT_AND_BACK) 后,所有的多边形都将被剔除,所以看见的就只有点和直线。 (4)镂空多边形 直线可以被画成虚线,而多边形则可以进行镂空。 首先,使用 glEnable(GL_POLYGON_STIPPLE);来启动镂空模式(使用 glDisable(GL_POLYGON_STIPPLE) 可以关闭之)。 然后,使用 glPolygonStipple 来设置镂空的样式。 void glPolygonStipple(const GLubyte *mask); 其中的参数 mask 指向一个长度为 128 字节的空间,它表示了一个 32*32 的矩形应该如何镂空。其中:第一 个字节表示了最左下方的从左到右(也可以是从右到左,这个可以修改)8 个像素是否镂空(1 表示不镂空, 显示该像素;0 表示镂空,显示其后面的颜色),最后一个字节表示了最右上方的 8 个像素是否镂空。 但是,如果我们直接定义这个 mask 数组,像这样: static GLubyte Mask[128] = { 0x00, 0x00, 0x00, 0x00, // 这是最下面的一行 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0xC0, // 麻 0x06, 0xC0, 0x03, 0x60, // 烦 0x04, 0x60, 0x06, 0x20, // 的 0x04, 0x30, 0x0C, 0x20, // 初 0x04, 0x18, 0x18, 0x20, // 始 0x04, 0x0C, 0x30, 0x20, // 化

网友评论