【openGL基础系列】之直线,折线,封闭折线

               【openGL基础系列】之直线,折线,封闭折线

 

    大家好,我是Lampard~~

    欢迎来到openGL基础系列的博客

    今天讲的是搭建openGL的显示出三种不同的线

 

   1. 点glVertex*

     俗话有云点线面,在讲解线之前首先和大家介绍一下openGL中点的实现函数:glVertex*,函数名我们不作探究,那么这个*是什么鬼呢? 其实*代表的是这个函数后需要接参数:i是整数,s是短整数,f是浮点数等等。举个例子如果我们想显示一个在二维坐标中(50, 50)的一个点,那么我们可以用一下的函数定义:

     glVertex2i(50, 50)

     值得一提的是,如果想让整个代码看起来更好整理更加规范,我们可以先把点定义出来,然后再在屏幕中显示:

     int point[] = { 50, 50 }

     glVertex2iv(point)

 

   2. 直线GL_LINES

    上一篇博客中我们有提及如何定义一条直线,那么两条,三条呢?其实很简单,我们只需要把行程直线的点按顺序放进去glBegin和glEnd之间就可以了,注意!点放置的顺序影响成图的效果,比如下面的例子中,p1是和p2配套成线,p3是和p4配套成线的。p5孤零零一人,则不会显示出来。

    代码:

	glClear(GL_COLOR_BUFFER_BIT);           // 使颜色在屏幕显示
	glColor3f(0.0, 0.4, 0.2);               // 显示对象的颜色
	int p1[] = { 20, 10 };
	int p2[] = { 50, 30 };
	int p3[] = { 20, 30 };
	int p4[] = { 50, 10 };
	int p5[] = { 30, 50};

	glBegin(GL_LINES);                      // 直线段
	glVertex2iv(p1);                        // 起始坐标
	glVertex2iv(p2);                        // 终止坐标
	glVertex2iv(p3);                        // 起始坐标
	glVertex2iv(p4);                        // 终止坐标
	glVertex2iv(p5);
	glEnd();                                // 结束

	glFlush();                               // 强制执行openGL函数

   成像:

 

   3. 折线GL_LINE_STRIP

    如果想让孤零零的p5也参与进来,并且让他们行程相连的折线,我们可以在glBegin上加入GL_LINE_STRIP参数,此时p1会和p2相连,p2会和p3相连,以此类推。

    代码:

	glClear(GL_COLOR_BUFFER_BIT);           // 使颜色在屏幕显示
	glColor3f(0.0, 0.4, 0.2);               // 显示对象的颜色
	int p1[] = { 20, 10 };
	int p2[] = { 50, 30 };
	int p3[] = { 20, 30 };
	int p4[] = { 50, 10 };
	int p5[] = { 30, 50};

	glBegin(GL_LINE_STRIP);                 // 折线段
	glVertex2iv(p1);                        
	glVertex2iv(p2);                        
	glVertex2iv(p3);                        
	glVertex2iv(p4);                        
	glVertex2iv(p5);
	glEnd();                                // 结束

	glFlush();                              // 强制执行openGL函数

     成像:

  

 

   4. 封闭折线GL_LINE_LOOP

    此时强迫症的我真是难受得不行,我好想把最后一笔填上aaaaaaaaaaaaaaa,额嗯那就用封闭折线GL_LINE_LOOP,这样的话p5就会和p1首尾相连。

   代码:

	glClear(GL_COLOR_BUFFER_BIT);           // 使颜色在屏幕显示
	glColor3f(0.0, 0.4, 0.2);               // 显示对象的颜色
	int p1[] = { 20, 10 };
	int p2[] = { 50, 30 };
	int p3[] = { 20, 30 };
	int p4[] = { 50, 10 };
	int p5[] = { 30, 50};

	glBegin(GL_LINE_LOOP);                   // 封闭折线段
	glVertex2iv(p1); 
	glVertex2iv(p2);
	glVertex2iv(p3); 
	glVertex2iv(p4); 
	glVertex2iv(p5);
	glEnd();                                 // 结束

	glFlush();                               // 强制执行openGL函数

  成像:

  

 

 

OK,本章内容到此结束,更多内容,敬请关注!!!

各位大佬记得点赞关注支持........

 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值