OpenGL第二课

虚线

在这里插入图片描述

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来剔除

猜你喜欢

转载自blog.csdn.net/weixin_43118073/article/details/104727147