OpenGL点、线、面的绘制【转】

标签:
opengl点线圆矩形 |
分类: 代码天地 |
1、点:
https://images2018.cnblogs.com/blog/696241/201805/696241-20180506005111736-1570468398.png
2、线:
https://images2018.cnblogs.com/blog/696241/201805/696241-20180506103306199-1522512575.png
3、虚线:
https://images2018.cnblogs.com/blog/696241/201805/696241-20180506104200761-1950679781.png
4、多边形:
1>多边形的两面及绘制方式:
多边形的有两个面,每一个面均可以设置不同的绘制模式:填充(默认的绘制模式)、只绘制边缘轮廓、只绘制顶点。
glPolygonMode(GL_FRONT, GL_FILL); // 设置正面为填充方式
glPolygonMode(GL_BACK, GL_LINE); // 设置反面为边缘绘制方式
glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // 设置两面均为顶点绘制方式
2>一般约定,逆时针为正面,顺时针为反面,
可以通过glFrontFace函数来交换“正面”和“反面”的概念。
glFrontFace(GL_CCW);
glFrontFace(GL_CW);
https://images2018.cnblogs.com/blog/696241/201805/696241-20180506112004194-1459585416.png
3>剔除多边形:
glEnable(GL_CULL_FACE)
glCullFace的参数可以是GL_FRONT、GL_BACK、GL_FRONT_AND_BACK,分别表示剔除正面、剔除反面、剔除正反两面的多边形。
注意:剔除功能只影响多边形,而对点和直线无影响。例如,使用glCullFace(GL_FRONT_AND_BACK)后,所有的多边形都将被剔除,所以看见的就只有点和直线。
4>多边形镂空:
glEnable(GL_POLYGON_STIPPLE)
glDisable(GL_POLYGON_STIPPLE)
使用 glPolygonStipple(const GLubyte *mask) 来设置镂空的样式,参数mask指向一个长度为128字节的空间,它表示了一个32*32的矩形应该如何镂空。其中:第一个字节表示了最左下方的从左到右(也可以是从右到左,这个可以修改)8个像素是否镂空(1表示不镂空,显示该像素;0表示镂空,显示其后面的颜色),最后一个字节表示了最右上方的8个像素是否镂空。
https://images2018.cnblogs.com/blog/696241/201805/696241-20180506114638835-846973064.png
具体镂空出的是什么样的图形,可以试着用具体绘图工具生成相关 的镂空参数。