现在的位置: 首页 > 综合 > 正文

OpenGL学习第一天: 画点,直线,虚线,多边形

2013年08月19日 ⁄ 综合 ⁄ 共 1306字 ⁄ 字号 评论关闭

// 从这里开始进行所有的绘制
int DrawGLScene(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 清除屏幕和深度缓存
glLoadIdentity();// 重置当前的模型观察矩阵

    //设置图元颜色
    glColor3f(1.0, 0.0,0.0);


//绘制一个矩形,默认为填充模式,但是可以通过glPlygonMode来设置为线框
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
glBegin(GL_POLYGON);
    glVertex3f(0.25,0.25,0.4);
glVertex3f(0.75,0.25,0.4);
glVertex3f(0.75,0.75,0.4);
glVertex3f(0.25,0.75,0.4);
    glEnd();
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);

//画点,通过glPointSize设置一个点的宽度
glPointSize(10);
glBegin(GL_POINTS);

glVertex3f(0.25,0.25,0.0);
glVertex3f(0.75,0.25,0.0);
glVertex3f(0.75,0.75,0.0);
glVertex3f(0.25,0.75,0.0);
glEnd();
glPointSize(1);

//画 虚线 ,点线,通过glLineStipple设置虚线模型,然后enable GL_LINE_STIPPLE开关
glLineStipple(2, 0x5555);
glEnable(GL_LINE_STIPPLE);
glBegin(GL_LINES);
glVertex3f(0.25,0.85,0.6);
glVertex3f(0.75,0.85,0.6);
glEnd();
glDisable(GL_LINE_STIPPLE);

//画圆,通过glLineWidth设置直线的宽度
glColor3f(0.0,1.0,0.0);//颜色修改为绿色
glLineWidth(10);
    glBegin(GL_LINE_LOOP);
    

#define   PI   3.1415926f
#define   POINTS   100
float  angel = 0.0f;
 for (int i =0  ; i<POINTS; i++)
 {
          angel = 2.0f * PI  * i / POINTS;

  glVertex3f(cos(angel),sin(angel),0.5f);
 }

glEnd();
glLineWidth(1);

glFlush();

return TRUE;
//  一切 OK
}

值得注意的是 深度缓存,

glClearDepth(1.0f);// 设置深度缓存
glEnable(GL_DEPTH_TEST);// 启用深度测试
glDepthFunc(GL_LEQUAL);// 所作深度测试的类型

        这几个是表示启用深度缓存测试,所有小于等于1.0的z值的顶点将会显示,而且如果有两个顶点都在同一个x,y位置,那么将会显示z值小的那个顶点。

抱歉!评论已关闭.