OpenGL入门程序(三)

1、点:

void TestPoint()
{
    //点的大小默认为一个像素,通过下面的函数可以设置一点的大小
    glPointSize(50.0f);

    glBegin(GL_POINTS);
    glVertex2f(0, 0);
    glVertex2f(0.5f, 0.5f);

    glEnd();
}

2、线:

void TestLine()
{
    //设置线的宽度
    glLineWidth(500.0f);

    glBegin(GL_LINES);

    glVertex2f(0, 0);
    glVertex2f(0.5f, 0.5f);

    glEnd();
}

3、虚线:

//画虚线
void TestLineSttiple()
{
    //开启虚线模式 , 使用 glDisable(GL_LINE_STIPPLE) 关闭虚线模式
    glEnable(GL_LINE_STIPPLE);

    //设置线的宽度
    glLineWidth(500.0f);

    //设置虚线的样式
    //参数一: 要画的点的个数
    //参数二: 是由1和0组成的长度为16的序列,从最低位开始看,如果为1,则直线上接下来应该画的factor个点将被画为实的;如果为0,则直线上接下来应该画的factor个点将被画为虚的。
    glLineStipple(2, 0x0F0F);

    glBegin(GL_LINES);

    glVertex2f(0, 0);
    glVertex2f(0.5f, 0.5f);

    glEnd();

4、多边形:

  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 TestPolygon()
{
    //glPolygonMode(GL_FRONT, GL_FILL);            // 设置正面为填充方式

    //glPolygonMode(GL_BACK, GL_LINE);             // 设置反面为边缘绘制方式

    //glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // 设置两面均为顶点绘制方式

    glPolygonMode(GL_FRONT, GL_FILL); // 设置正面为填充模式

    glPolygonMode(GL_BACK, GL_LINE);   // 设置反面为线形模式

    glFrontFace(GL_CCW);               // 设置逆时针方向为正面

    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();
}
View Code

  3>剔除多边形:

    glEnable(GL_CULL_FACE)    启动剔除功能

      glDisable(GL_CULL_FACE)   关闭剔除功能

    glCullFace的参数可以是GL_FRONT、GL_BACK、GL_FRONT_AND_BACK,分别表示剔除正面、剔除反面、剔除正反两面的多边形。

    注意:剔除功能只影响多边形,而对点和直线无影响。例如,使用glCullFace(GL_FRONT_AND_BACK)后,所有的多边形都将被剔除,所以看见的就只有点和直线。

猜你喜欢

转载自www.cnblogs.com/luguoshuai/p/8997675.html