码迷,mamicode.com
首页 > 其他好文 > 详细

OpenGL入门程序(三)

时间:2018-05-06 12:24:07      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:个数   lap   sed   bsp   http   line   开始   and   mod   

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)后,所有的多边形都将被剔除,所以看见的就只有点和直线。

OpenGL入门程序(三)

标签:个数   lap   sed   bsp   http   line   开始   and   mod   

原文地址:https://www.cnblogs.com/luguoshuai/p/8997675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!