OpenGL基础图形的绘制

例一:绘制五角星

设五角星5个顶点分别为ABCDE,顶点到坐标轴原点距离为r,ABCDE各点用r表示,分别为

A(0,r);

B(-r*sin(2/5*Pi),r*cos(2/5*Pi));

C(-r*sin(Pi/5),-r*cos(Pi/5));

 

DE和CB关于Y轴对称。

 

 

确定5个顶点的坐标后,使用GL_LINE_LOOP函数,将5个点连接起来,顺序依次为ACEBD。

主要代码为:

 1 void Star(void)
 2 {
 3 
 4     GLfloat r = 0.8f;
 5     GLfloat PointA[2] = { 0, r };
 6     GLfloat PointB[2] = { -r*sin(0.4*Pi), r*cos(0.4*Pi) };
 7     GLfloat PointC[2] = { -r*sin(Pi / 5), -r*cos(Pi / 5) };
 8     GLfloat PointD[2] = { r*sin(Pi / 5), -r*cos(Pi / 5) };
 9     GLfloat PointE[2] = { r*sin(0.4*Pi), r*cos(0.4*Pi) };
10 
11     glClear(GL_COLOR_BUFFER_BIT);
12 
13     glBegin(GL_LINE_LOOP);
14     glVertex2fv(PointA);
15     glVertex2fv(PointC);
16     glVertex2fv(PointE);
17     glVertex2fv(PointB);
18     glVertex2fv(PointD);
19 
20     glEnd();
21 
22     glFinish();
23 }

绘制成果如下:

 

 

 

例二:正弦函数绘制

先用GL_LINES,4个坐标点,将坐标轴绘制出来,再绘制出正弦函数。

 1 void Sin(void)
 2 {
 3 
 4      const float x = 0.1f;//默认坐标值从—1到1,,所以为了绘制完全,设定一个缩放的因子x
 5     glClear(GL_COLOR_BUFFER_BIT);
 6 
 7     glBegin(GL_LINES);
 8     glVertex2f(0, -1.0f);
 9     glVertex2f(0, 1.0f);
10     glVertex2f(1.0f, 0);
11     glVertex2f(-1.0f, 0);
12 
13     //glEnd;
14 
15     glBegin(GL_LINE_STRIP);
16     for(float i = -10; i < 10; i+= 0.01 ){
17         glVertex2f(i*x,0.5*sin(i));
18     }
19 
20     glEnd();
21 
22     glFinish();
23 }

 

补充:

点的大小,线的粗细,实线虚线。

glPointSize(),和glLineWidth(),默认都为1个像素,可以设置点的大小,和线的粗细,(注:需在glBegin前设置好)

glEnable(GL_LINE_STIPPLE);//启用虚线

glDisable(GL_LINE_STIPPLE);//关闭虚线

glLineStipple(GLint factor, GLushort pattern);

pattern是由1和0组成的长度为16的序列,从最低位开始看,如果为1,则直线上接下来应该画的factor个点将被画为实的;如果为0,则直线上接下来应该画的factor个点将被画为虚的。

 

转载于:https://www.cnblogs.com/SeekHit/p/4835462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值