虚线
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_LINE_STIPPLE);
glLineStipple(2, 0x0F0F);
glLineWidth(10.0f);
glBegin(GL_LINES);
glVertex2f(0.0f, 0.0f);
glVertex2f(0.5f, 0.5f);
glEnd();
glDisable(GL_LINE_STIPPLE);
glFlush(); //让前面的命令立即执行而不是在缓冲区,与fflush(stdout)作用类似
}
多边形
1)关于多边形的两面以及绘制方式
glPolygonMode(GL_FRONT,GL_FILL) //设置正面为填充方式
glPolygonMode(GL_BACK,GL_LINE) //设置反面为边缘绘制方式方式
glPolygonMode(GL_FRONT_AND_BACK,GL_POINT) //设置两面均为顶点绘制方式
2)反转
通过glFrontFace函数来交换“正面”和“反面”的概念
glFrontFace(GL_CCW) //设置ccw方向为“正面”,ccw(CounterClockWise),逆时针
glFrontFace(GL_CW) //设置cw方向为“正面”,cw(ClockWise),顺时针
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPolygonMode(GL_FRONT, GL_FILL);
glPolygonMode(GL_BACK, GL_LINE);
/*glFrontFace(GL_CCW);*/
glFrontFace(GL_CW);
glBegin(GL_POLYGON);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.0f, -0.5f);
glVertex2f(0.0f, 0.0f);
glVertex2f(-0.5f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glVertex2f(0.0f, 0.0f);
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, 0.5f);
glVertex2f(0.5f, 0.0f);
glEnd();
glFlush(); //让前面的命令立即执行而不是在缓冲区,与fflush(stdout)作用类似
}
3)剔除多边形表面
无法看见的背面的多边形,可以剔除掉,提高我们处理图形的效率。
使用glEnable(GL_CULL_FACE)来启动剔除功能(使用glDisable(GL_CULL_FACE)可以关闭之),然后使用glCullFace来剔除